تصميم البرمجيات: تطبيق المستوى 2 مع ClientDataset والمآخذ
سؤال
لدي المهمة لإنشاء تطبيق المستوى 2 كما يلي:
قاعدة بيانات MSSQL <-> خادم <-> عميل N (N للكثير)
يرسل العميل البيانات إلى الخادم. يختار الخادم الأشياء من قاعدة البيانات ثم يرسلها مرة أخرى إلى العميل. حاليا أقوم بذلك مع السجلات و SendDatatoSocket (URL أدناه).
أريد استخدام TDBGrid على العميل باستخدام البيانات المستلمة عبر مآخذ من الخادم. في الوقت الحالي، مثل هذا:
الخادم:DB -> ADOQUERY -> DataSetProvider -> clientDataset -> savetostream (memorystream)
عميل:ClientDataset -> loadfromstream (memoryStream) -> DataSource -> DBGrid
إذن ما أريد القيام به هو إرسال دفق ClientDataset على جانب الخادم ينشئ العميل الذي يستخدم LoadFromstream لقراءة الدفق. هل senddatatosocket قابلة للحياة هنا؟
أتمنى أن تحصل على ما أعنيه.
المحلول
نعم، طالما كان العميل جاهزا لاستقبال البيانات. هذا سيعمل بشكل جيد، ولكن اعتمادا على كمية ونوع البيانات التي قد ترغب في ضغط دفق الذاكرة قبل إرسالها. لقد قمت بنهج مماثل في المشاريع السابقة، لكنني استخدمت تشابك عصبى لنقل البيانات ... ولكن المفهوم الأساسي كان هو نفسه.
تحتوي وحدة ZLIB (المضمنة بواسطة CodeGear) على غلاف بسيط حول دفق يوفر ضغط وإلغاء الضغط. نظرا لأن التحكم في كلا الجانبين من الأسلاك، فمن المرجح أن يؤدي الضغط على الأرجح عن طريق تقليل وقت الأسلاك.