ما هي توصية يصمم GWT التطبيقات ؟ MVC, MVP أو العرف الرسائل الحل ؟

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

سؤال

أنا فقط بدأت الجديدة GWT مشروع عميل وأنا مهتمة في السمع تجربة الناس مع مختلف GWT MVC أبنية.على مشروع آخر, أنا استخدامها على حد سواء GXT MVC, وكذلك مخصص الرسائل حل (على أساس Appcelerator هو MQ).GXT MVC عملت حسنا, لكن يبدو مبالغة GWT و كان من الصعب العمل مع متصفح التاريخ.لقد سمعت من PureMVC و GWTiger, ولكن لم تستخدمها قط.عادتنا MQ الحل يعمل بشكل جيد جدا, ولكن جعل من الصعب اختبار المكونات مع JUnit.

بالإضافة إلى ذلك, لقد سمعت أن جوجل الموجة (a GWT التطبيق) هو مكتوب باستخدام نموذج عرض مقدم نمط.A عينة MVP التطبيق وقد نشرت مؤخرا ، ولكن النظر في قانون ، لا يبدو بديهية.

إذا كنت بناء جديد GWT التطبيقات التي قد تستخدمها ؟ ما هي إيجابيات وسلبيات من اختيارك ؟

شكرا

مات

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

المحلول

ومن الجدير بالذكر أن جوجل قد كتب أخيرا برنامج تعليمي لتصميم باستخدام الهندسة المعمارية لقاح التهاب السحايا. ويوضح الكثير من العناصر من جوجل I / O الحديث المذكورة أعلاه. نلقي نظرة: https://developers.google.com/web-toolkit/articles / لقاح التهاب السحايا الهندسة المعمارية

نصائح أخرى

أنا سعيد وقد تم طرح هذا السؤال ، لأن GWT desperatley يحتاج القضبان مثل طريقة هيكلة تطبيق.نهج بسيط استنادا إلى أفضل الممارسات التي من شأنها أن تعمل على 90 % من جميع حالات الاستخدام وتمكن من السهل سوبر الاختبار.

في السنوات الماضية لقد تم استخدام بلدي تنفيذ MVP مع سلبية جدا مفاده أن يستعبد نفسه مهما كان المذيع يقول له القيام به.

الحل يتكون من التالي:

  • واجهة في القطعة تحديد أساليب للسيطرة على المظهر المرئي
  • تنفيذية الدرجة التي يمكن مركب أو استخدام القطعة الخارجية المكتبة
  • المركزي مقدم على الشاشة التي تستضيف ن الآراء التي تتكون من م الحاجيات
  • مركز نموذج في الشاشة التي تحمل البيانات المرتبطة الحالي المظهر المرئي
  • عام المستمع فئات مثل "SourcesAddEvents[CustomerDTO]" (المحرر لا تحب الحقيقي رموز جافا الوراثة هنا ، لذا استخدمت thoe بين قوسين) ، لأن خلاف ذلك سيكون لديك الكثير من نفس واجهات الذي تختلف حسب نوع

آراء الحصول على مرجع إلى مقدم كما منشئ المعلمة ، حتى يتمكنوا من تهيئة الأحداث مع مقدم.مقدم سوف يتعامل مع تلك الأحداث يخطر الحاجيات الأخرى/آراء أو الاتصال gwt-rpc على النجاح يضع النتيجة في النموذج.نموذج نموذجي "الملكية[List[سلسلة]] أسماء = ...." تغيير خاصية المستمع الآلية التي تم تسجيلها مع مقدم بحيث التحديث نموذج من قبل gwt-rpc طلب يذهب إلى جميع وجهات النظر/الحاجيات التي تهتم.

مع هذا appraoch لقد حصلت من السهل جدا الاختبار مع EasyMock لبلدي AsynInterfaces.أنا أيضا حصلت على القدرة على بسهولة تبادل تنفيذ عرض/القطعة, لأن كل ما كان إلى كتابة كان رمز إخطار مقدم من بعض الأحداث - بصرف النظر عن القطعة (زر, روابط, الخ).

مشاكل مع بلدي النهج:

  • بلدي الحالي تنفيذ يجعل من الصعب على مزامنة البيانات بين القيم المركزية نماذج مختلفة من الشاشات.نقول لديك الشاشة التي تعرض مجموعة من فئات أخرى الشاشة التي تمكنك من إضافة/تعديل تلك البنود.حاليا من الصعب جدا نشر تلك أحداث التغيير عبر الحدود من الشاشات ، لأن القيم المخزنة في تلك النماذج ومن الصعب أن تجد لدينا ما إذا كانت بعض الأشياء القذرة (لن يكون من السهل التقليدي web1.0-html-البكم-محطة النوع من السيناريو مع serverside التعريفي التخزين المؤقت).
  • منشئ المعلمات من آراء تمكين فائقة اختبار سهل ، ولكن دون الصلبة التبعية-حقن إطار واحد قبيح مصنع/إعداد البرمجية داخل "onModuleLoad()".في ذلك الوقت بدأت هذه العلامات من Google الجن ، حتى عندما ريفاكتور بلدي التطبيق سوف تستخدم هذا للتخلص من هذا المتداول.مثال مثير للاهتمام هنا هو "HigherLower" لعبة داخل الجن-الجذع.
  • أنا لم تحصل على تاريخ الحق في المرة الأولى ، لذا من الصعب التنقل من جزء واحد من بلدي التطبيق إلى آخر.توجهي ليس على علم التاريخ ، وهو تراجع خطير.

بلدي الحلول لتلك المشاكل:

  • استخدام الجن لإزالة الإعداد المتداول أن من الصعب الحفاظ على
  • بينما تتحرك من Gwt-تحويلة إلى GXT, استخدام إطار MVC كما EventBus إرفاق/فصل وحدات شاشات لتجنب التخزين المؤقت/مشاكل المزامنة
  • فكر في نوع من "مكان"-التجريد مثل راي ريان وصفها في حديثه في I/O 09, والتي الجسور الحدث-الفجوة بين GXT-MVC و GWTs-التاريخ النهج
  • استخدام لقاح التهاب السحايا الحاجيات لعزل الوصول إلى البيانات

موجز:

أنا لا أعتقد أنه يمكن للمرء أن استخدام مفردة "MVP" نهج كامل التطبيق.واحد بالتأكيد يحتاج تاريخ التطبيق الملاحة ، eventbus مثل GXT-MVC إرفاق/فصل الشاشات ، MVP لتمكين اختبار سهل الوصول إلى البيانات الحاجيات.

ولذلك أقترح نهج الطبقات التي تجمع بين هذه العناصر الثلاثة ، منذ وأعتقد أن واحدة "-الحدث-mvp-نظام"حل متعود العمل.ملاحة/شاشة-إرفاق البيانات-Access ثلاثة منفصلة المخاوف و سوف ريفاكتور بلدي التطبيق (الانتقال إلى GXT) في الأشهر التالية إلى الاستفادة من كل ثلاثة الحدث-أطر كل المخاوف بشكل منفصل (أفضل وسيلة للحصول على الوظيفة).جميع العناصر الثلاثة لا يلزم أن يكون على بينة من بعضها البعض.أنا أعرف أن الحل لا ينطبق إلا على GXT المشاريع.

عند كتابة كبيرة GWT تطبيقات, أشعر أنني يجب أن اختراع شيء مثل الربيع-MVC على العميل ، والتي تمتص حقا, لأنه يأخذ الكثير من الوقت و الدماغ-القدرة على بصق شيء أنيقة مثل الربيع MVC.GWT يحتاج إلى إطار التطبيق أكثر بكثير من تلك الصغيرة JS-تحسينات أن المترجم-الرجال يعملون بجد.

وهنا هو عرض جوجل IO الأخير على يصمم الخاصة بك تطبيق GWT .

واستمتع.

و-JP

إذا كنت ترغب في استخدام الهندسة المعمارية MVP، قد ترغب في إلقاء نظرة على GWTP: <لأ href = "http://code.google.com/p/gwt-platform/" يختلط = "نوفولو noreferrer "> http://code.google.com/p/gwt-platform/ . إنها إطار مصدر MVP مفتوحة أعمل على أن يدعم العديد من ملامح لطيفة من GWT، بما في ذلك تقسيم رمز وإدارة التاريخ، مع API بسيط قائم على الشرح. ومن حديث جدا، ولكن قيد الاستخدام بالفعل في عدد من المشاريع.

يجب أن يكون لديك نظرة على GWT المداخل.قمنا بتطوير GWT مداخل الإطار أثناء العمل على بوابة الموارد البشرية التطبيق الآن مجانا و مفتوحة المصدر.من GWT مداخل الموقع (يتم استضافتها على مدونة جوجل):

نموذج البرمجة هي تشبه إلى حد ما في الكتابة JSR168 المداخل على بوابة الملقم (Liferay, جبوس البوابة.... الخ)."بوابة" هو تطبيق تم إنشاؤها باستخدام GWT المداخل في إطار المكتبة.وظائف التطبيق هو تطوير المتباعدة مداخل كل اختياري من جانب الخادم DataProvider.

كل مدخل يعرف كيفية تخريج الدولة في تسلسل PortletFactory فرعية (momento / DTO / نمط مصنع) مما يجعل وظيفة مهمة ممكن:

  • عمليات الخام يتم التعامل معها من قبل واحد GWT RPC على جميع المداخل
  • تخطيط المداخل على "الصفحة" يمكن أن تكون ممثلة على النحو شجرة WidgetFactory هو (واجهة تنفذها PortletFactory)
  • أشجار WidgetFactory يمكن أن يكون تسلسل وتنظيمها من/XML على الملقم لتخزين واجهة المستخدم الرسومية تخطيطات (أو "الصفحات") في الصفحة XML الملفات

الميزات الهامة الأخرى من إطار مدرجة أدناه:

  • صفحات يمكن تحريرها في المتصفح في وقت التشغيل (قبل المطورين و/أو المستخدمين) باستخدام إطار محرر تخطيط
  • المداخل يتم وضع تماما حتى يمكن استخدام التمرير المناطق
  • المداخل شكلي ، عندما تشير إلى أنهم مشغولون التحميل التلقائي "الدوار التحميل" عرض يمكن تكبير
  • تحت عنوان الحاجيات بما في ذلك على غرار مربع الحوار المغلق على غرار استبدال زر صغير toolbuttons و قالب HTML مدفوعة القائمة

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

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