سؤال

أنا أتساءل عما إذا كان البعض منكم على دراية بالنهج المعمارية التي اتخذها فريق Wave لإنشاء عميل الويب الخاص بـ GWT؟ نظرًا لأنني أحاول تحسين أداء تطبيق GWT واحد مصمم للهواتف المحمولة ، فمن الصعب عدم الإعجاب ببيانات اعتماده السريعة :)

  • هل لا تستخدم الموجة GWT-RPC للحصول على تحديثات منتظمة من الخادم؟ يتتبع Firefox بعض الاتصالات JSON التي تمر عبر السلك ولكن لا شيء مثل أشياء RPC.

  • كيف يمتلكون عندما يتم إرسال المويجات الجديدة على سبيل المثال. هل هناك كائن عرض لكل موجة DTO ، أو يستخدمون نمطًا آخر؟

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

شكرًا

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

المحلول

من المحتمل أن يكون هذا هو الحمل الزائد للمعلومات ، ولكن نظرًا لأن Google Wave مفتوحة المصدر ، يمكنك في الواقع النظر في كيفية إعداد الأشياء هنا.

إذا نظرت إلى waveview.java ، على سبيل المثال ، يمكنك أن ترى أنهم يستخدمون حافلة أحداث من جانب العميل مثل Ray Ryan المذكورة في هذا الكلام في Google IO 2009. يبدو أنني أتذكر مشاهدة مقطع فيديو آخر حيث تحدثوا عن هذه الجوانب من Google Wave:

  • يستخدمون نظام أحداث لإطلاق الأحداث عندما يحدث شيء ما على جانب العميل. يدير نظام الأحداث التواصل مع الخادم ، ويمرر معلومات الحدث إلى الخادم ، وإعادة الأحداث من الخادم ، ونشر تلك الأحداث التي تعود. تستخدم حافلة الحدث نوعًا من المخزن المؤقت بحيث إذا تم إطلاق مجموعة من الأحداث في تتابع سريع ، فيمكنهم إرسالهم جميعًا في دفعة واحدة. على سبيل المثال ، عندما تصل موجة جديدة ، سيتم إخطار حدث مع معلومات الموجة ، وسيتم إخطار أي أجزاء من واجهة المستخدم التي تستمع بنشاط لهذا الحدث ، حتى يتمكنوا من تحديد ما إذا كانوا بحاجة إلى تغيير أنفسهم وفقًا لذلك.
  • لقد استخدموا نقاط التماس (أو بعضها ؛ لا أستطيع أن أتذكر الاسم) لجعله حتى يتمكن GWT من تقسيم الكود إلى وحدات ، وتحميل الأجزاء التي تحتاج فعليًا إلى استخدامها. نظرًا لأن ملف Wave UI JavaScript كان في الأصل أكثر من 1 ميجابايت (مصغرة وضغط) ، كان ذلك مهمًا جدًا.
  • نظرًا لأن بعض الأمواج والموجات ستكون مرئية فقط في وقت واحد ، فقد استخدموا بالفعل بعض التقنيات المعقدة لإعادة استخدام عناصر DOM نفسها. لذا ، بينما تقوم بالتمرير لأسفل من خلال قائمة الموجات الخاصة بك ، فإنها تأخذ في الواقع عنصر DOM الذي يمثل الموجة في الجزء العلوي من صندوق الوارد الخاص بك ، وتغيير المعلومات في الداخل ، ونقلها إلى أسفل منطقة التمرير الخاصة بك ، وترك مساحة فارغة في الجزء من منطقة التمرير التي لم تعد تراها.

بالإضافة إلى ذلك ، أنا متأكد تمامًا من أنهم يستخدمون شيئًا مثل Comet مع JSONP للحفاظ على التواصل المستمر مع الخادم ، لذلك لا يقومون باستقصاء الخادم باستمرار للحصول على تحديثات جديدة ، ولكن هناك ملف JavaScript الذي تم إنشاؤه ديناميكيًا يتم تحميله بشكل متزايد من الخادم ، الذي يحتوي على تعليمات لإطلاق النار على أي الأحداث التي قررها الخادم يجب إطلاقها.

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