delphi4arab منتديات دلفي للعرب
ما هي الطريقة المثلى لكي يعمل برنامج اوف لاين عند انقطاع النت واولاين عند توفر النت - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : ما هي الطريقة المثلى لكي يعمل برنامج اوف لاين عند انقطاع النت واولاين عند توفر النت (/showthread.php?tid=11868)



ما هي الطريقة المثلى لكي يعمل برنامج اوف لاين عند انقطاع النت واولاين عند توفر النت - Abdulazem Jemeel - 24-03-2022

صار الكثير من العملاء يبحثون عن برامج قواعد بيانات تعمل اون لاين وعند انقطاع النت لسبب ما لا يريدون ان يتعطل عملهم
بحيث يعمل البرنامج اوف لاين ثم اون لاين عند توفر النت
هل هنالك طريقة بلغة دلفي لعمل مثل هذه البرامج وهل هنالك مكونات تدعم هذه الخاصية بحيث تكون قواعد البيانات المحلية والتي على السيرفر متجانسة
حاولت انا عن طريق مكونات TMS Aurelius  ولكن حتى الان لم افهمها هل هنالك من حاول او تعامل مع هذه المكونات
اكون شاكر لمن يفيدني


RE: ما هي الطريقة المثلى لكي يعمل برنامج اوف لاين عند انقطاع النت واولاين عند توفر النت - أبو معاذ - 25-03-2022

موضوع جميل جدا.
و حبذا لو يتم تبيان نوع قواعد البيانات المستعملة و أيضا مكونات الاتصال.
وماهو ال IP المستعمل ؟ هل هو Ip الثابت ؟ أقضد ال IP الخارجي (الانترنت و ليس المحلي).
أنا جربت Hamachi لكنه ثقيل جدا.
في انتظار الإخوة....


RE: ما هي الطريقة المثلى لكي يعمل برنامج اوف لاين عند انقطاع النت واولاين عند توفر النت - Abdulazem Jemeel - 28-03-2022

اخي ابو معاذ اشكرك جزيل الشكر للرد
انا استخدم اي بي ثابت لدي استضافة سحابية وكذلك لدي سيرفر محجوز DEDICATED SERVER
واستخدم غالبا فيربيرد او ماي اس كيو ال انا شغال عادي وبرامجي شغالة على الوندوز وعلى الاندرويد والاي او اس بدون مشاكل
ولكن طلب بعض عملائي ان يكون البرنامج قابل للعمل عليه في الحالتين اون لاين واوف لاين بحيث تكون
قواعد البيانات المحلية والبعيدة متجانسة بحثت كثيرا في النت وحتى الان لم اجد طريقة لتحقيق ذلك
اكرر شكري


RE: ما هي الطريقة المثلى لكي يعمل برنامج اوف لاين عند انقطاع النت واولاين عند توفر النت - محمد الدرة - 29-03-2022

يمكن تحقيق >لك باي نوع من قواعد البيانات
كان هناك نظام للحج والعمره بنفس الفكرة وقاعدة بياناته اكسس

الفكرة ببساطه انك في حال عدم الاتصال بالنت تقوم بتحويله على الافلاين في حال الاتصال يقوم بالمقارنة بين القاعدتين ويقوم باضافة الفوارق
العمل يكون يدوي بحيث تضيف بعض الحقول لمطابقة المزامنة

مثلا
في حالة التعديل يضاف حقل لمعرفة هل تم مزامنته ام لا يكون من نوع رقم بحيث عند التعديل يزداد بمقدار (1) ويتم مقارنته
مع القاعدة الاونلاين هل الرقم متساوي معناها ان السجل تم مازمنته واذا كان اكبر معناها انه لم يتم المزامنه
في حال الاضافة نفس الفكرة مع تبيان بحثل ان هذا الحقل مضاف وليس تعديل

هناك دوال للمزامنة مثل الدالة merge في سضم server

بالتوفيق


RE: ما هي الطريقة المثلى لكي يعمل برنامج اوف لاين عند انقطاع النت واولاين عند توفر النت - larbiparadox - 29-03-2022

لم أجرب هذا من قبل

ربما هذا المكون يفي بالغرض لم أجرب هذا TMS RemoteDB



[صورة: 918767243.png]

كود :
The RemoteDB Server is a Delphi application/service that listen to http requests. When clients perform requests, the RemoteDB Server will forward the requests to the actual database server being used, using the specified database-access component. The SQL is performed and the results are returned back to the client. You can choose the components that will perform the SQL statements from a wide-range of options such as FireDac, dbExpress, dbGo (ADO), among others, using component adapters. The SQL database can be any database server supported by the components used, and must be thread-safe (most are). From the Delphi client application, you can use as many TXDataset components as you need to perform the regular SQL operations. All TXDataset components are linked to a TRemoteDBDatabase component via a Database property. The RemoteDBDatabase component is the one in charge of forwarding the SQL requests to the RemoteDB Server and retrieving back the values. All operations on the client are transparent and just like any TDataset usage: you specify the SQL statement, Open the dataset (or ExecSQL), define the list TField components, Params, connect TDatasource components to it, etc.. Wide Range of Database Component Access at Server Side When building the server, you can use a wide range of database-access component to connect to your database. This has many advantages: You can use your existing know-how on a specific component set; You can fine-tune your server side with specific options that your components provide to you; Your client application will behave exactly like the component you use on server side. This allows you much bigger compatibility and easy transition to TMS RemoteDB. If your existing client application uses FireDAC, for example, you can use it at server side, making your client-side TXDataset behaves almost exactly as a TFDQuery. It's the same for all other components supported by TMS RemoteDB. Client features: Http client available in Windows, macOS, iOS and Android Support for Http Secure (Https) Transparent handling of chunked and gzip-encoded responses Server features: Http server based on http.sys stack (Windows only - minimum Vista and Server 2008) Support for Http Secure (Https) TGenericDatabase component for direct database server connections, in a traditional client-server architecture Kernel-mode caching and kernel-mode request queuing (less overhead in context switching) Multiple applications/process can share (respond) the same port (at different addresses) Secure Sockets Layer (SSL) support in kernel-mode TMS Aurelius Integration If your application is already using our ORM framework TMS Aurelius for database access, then making it a 3-tier application with TMS RemoteDB will require just a few lines of code. TMS Aurelius provides a new adapter for RemoteDB that you can use as the connection to your database (IDBConnection interface) pretty much like the other options like FireDac, dbExpress, UniDac, etc ... You don't need to change a single line in your Aurelius application - just change the connection to use TMS RemoteDB and it becomes 3-tier. Supported Data-Access components dbExpress dbGo (ADO) ElevateDB FireDac NexusDB SQL-Direct UniDac Advantage Database server Supported platforms TMS Aurelius iOSandroid Windows 32-Bit (Client and Server) Windows 64-Bit (Client and Server) macOS (Client) iOS (Client) Android (Client) TMS RemoteDB allows you to create database applications that perform SQL operations on a remote http server, instead of a database server, using a TDataset descendant. This makes it easy to convert existing Delphi client-server applications into 3-tier applications with minimal changes in source code. Overall features Cross-platform Scalable Blazing fast Optimized memory usage Keeps existing component behavior (like TFieldDefs, for example) Requires minimum code change in client application Supports FireDac, dbExpress, UniDac, among others



RE: ما هي الطريقة المثلى لكي يعمل برنامج اوف لاين عند انقطاع النت واولاين عند توفر النت - Abdulazem Jemeel - 04-04-2022

السلام عليكم ورحمة الله
بعد بحث شديد ومضني وجدت طريقة لحل المشكلة وذلك باستخدام المكون FDBatchmove
لتحديث بيانات قاعدة البيانات البعيدة وهي طريقة سهلة


RE: ما هي الطريقة المثلى لكي يعمل برنامج اوف لاين عند انقطاع النت واولاين عند توفر النت - أبو معاذ - 04-04-2022

(04-04-2022, 11:07 AM)Abdulazem Jemeel كتب : السلام عليكم ورحمة الله
بعد بحث شديد ومضني وجدت طريقة لحل المشكلة وذلك باستخدام المكون FDBatchmove
لتحديث بيانات قاعدة البيانات البعيدة وهي طريقة سهلة

وعليكم السلام و رحمة الله وبركاته.
ممكن توضح أكثر؟


RE: ما هي الطريقة المثلى لكي يعمل برنامج اوف لاين عند انقطاع النت واولاين عند توفر النت - Lam.Abdeldjalil - 06-04-2022

السلام عليكم

TMS Aurelius عبارة عن   ORM ولا علاقة له بالموضوع

TMS RemoteDB تستعمل لإنشاء تطبيق وسيط بين قاعدة البيانات و تطبيقك
تطبيق TMS RemoteDB يتحدث مع قاعدة البياناتو تطبيقك يتحدث مع   TMS RemoteDB 
و الحديث بينهم بـ sql Smile
لا أنصحك بها إذا كنت تستعمل أجهزة أندرويد لأنها لا تملك الحدث ondisconnect + التطبيق لا يعمل في حالة عدم القدرة على الإتصال
v2.11

@أبو معاذ
FDBatchmove أظن أنه يشبه
UniLoader في UniDAC
لإستيراد البيانات بطريقة سريعة

الحل اليدوي  في رأيي هو الأمثل في حال وجود تضارب في البيانات (conflict )
إذا كان العكس أظن الحل في database replication
يمكنك إستعمال CopyCat الذي أصبح مفتوح المصدر
https://github.com/jonathanneve/copycat