تصميم البرمجيات: تطبيق المستوى 2 مع ClientDataset والمآخذ

StackOverflow https://stackoverflow.com/questions/1244465

  •  12-09-2019
  •  | 
  •  

سؤال

لدي المهمة لإنشاء تطبيق المستوى 2 كما يلي:

قاعدة بيانات MSSQL <-> خادم <-> عميل N (N للكثير)

يرسل العميل البيانات إلى الخادم. يختار الخادم الأشياء من قاعدة البيانات ثم يرسلها مرة أخرى إلى العميل. حاليا أقوم بذلك مع السجلات و SendDatatoSocket (URL أدناه).

أريد استخدام TDBGrid على العميل باستخدام البيانات المستلمة عبر مآخذ من الخادم. في الوقت الحالي، مثل هذا:

الخادم:DB -> ADOQUERY -> DataSetProvider -> clientDataset -> savetostream (memorystream)

عميل:ClientDataset -> loadfromstream (memoryStream) -> DataSource -> DBGrid

انا استخدم senddatatatosocket (المقبس: tcustomwinsockettoquook؛ البيانات: مؤشر؛ نتائج البيانات: عدد صحيح؛ العازلة: Tmemorystream): عدد صحيح؛

إذن ما أريد القيام به هو إرسال دفق ClientDataset على جانب الخادم ينشئ العميل الذي يستخدم LoadFromstream لقراءة الدفق. هل senddatatosocket قابلة للحياة هنا؟

أتمنى أن تحصل على ما أعنيه.

هل كانت مفيدة؟

المحلول

نعم، طالما كان العميل جاهزا لاستقبال البيانات. هذا سيعمل بشكل جيد، ولكن اعتمادا على كمية ونوع البيانات التي قد ترغب في ضغط دفق الذاكرة قبل إرسالها. لقد قمت بنهج مماثل في المشاريع السابقة، لكنني استخدمت تشابك عصبى لنقل البيانات ... ولكن المفهوم الأساسي كان هو نفسه.

تحتوي وحدة ZLIB (المضمنة بواسطة CodeGear) على غلاف بسيط حول دفق يوفر ضغط وإلغاء الضغط. نظرا لأن التحكم في كلا الجانبين من الأسلاك، فمن المرجح أن يؤدي الضغط على الأرجح عن طريق تقليل وقت الأسلاك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top