هل يجب علي استخدام Google Web Toolkit لتطبيق الويب الجديد الخاص بي؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

أرغب في إنشاء تطبيق ويب AJAX تفاعلي مدعوم بقاعدة بيانات والذي يحتوي على نظام تقويم مخصص (نوع معين من الأحداث والتحرير).قد يتضمن ذلك الكثير من JavaScript وAJAX، وفكرت في Google Web Toolkit للواجهة وRuby on Rails لجانب الخادم.

هل مجموعة أدوات الويب من Google موثوقة وجيدة؟ما هي المخاطر الخفية التي قد تكون لدي إذا اخترت Google Web Toolkit؟هل يمكن دمجها بسهولة مع Ruby on Rails من جانب الخادم؟أم يجب أن أحاول استخدام مكتبة JavaScript مباشرة مثل jQuery؟

ليس لدي أي خبرة في تطوير الويب باستثناء بعض HTML، لكنني مبرمج ذو خبرة (c++، java، c#)، وأرغب في استخدام الأدوات المجانية فقط لهذا المشروع.

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

المحلول

يعد RoR في الواقع أحد الأشياء التي تم تصميم GWT للعمل معها بشكل جيد، طالما أنك تستخدم REST بشكل صحيح.إنه موجود في كتاب تطبيقات مجموعة أدوات الويب من Google، ويمكنك مشاهدة عرض توضيحي من الكتاب باستخدام هذا النوع من الأفكار هنا.هذا لا يعني أنك لن تواجه أي مشاكل، ولكن أعتقد أن الدعم موجود بالتأكيد من أجل ذلك.

هناك مشروع رائع يمكنك العثور عليه لتسهيل عملية RoR/GWT هنا (ترخيص معهد ماساتشوستس للتكنولوجيا).لم تسنح لي الفرصة لتجربتها بعد، ولكن يبدو أنه قد تم وضع قدر كبير من التفكير فيها.أحد الأمور المزعجة هو أنه يبدو أنه لم يتم اختباره بالكامل باستخدام الإصدار 2.1 Rails حتى الآن، بل الإصدار 2.0 فقط، لذلك قد تواجه بعض الأخطاء (ربما البسيطة والقابلة للإصلاح).

نصائح أخرى

إذا كنت تتطلع إلى دمج GWT مع واجهات خلفية غير Java مثل ROR وPHP وما إلى ذلك، فيجب أن تضع في اعتبارك أن GWT 1.5 يدعم الآن أنواع JavaScript Overlay.تتيح لك هذه الميزة كتابة الفئات التي يمكن تعيينها فوق كائنات JavaScript الأصلية لتوفير أساليب الوصول بسهولة لخصائص تلك الكائنات والوظائف الموسعة الأخرى.

انظر هذا الرابط لمزيد من التفاصيل:أنواع تراكب جافا سكريبت

لذلك يمكنك إرجاع بيانات JSON المشفرة من الواجهة الخلفية لديك عبر استدعاءات AJAX، وتحليلها إلى كائن JavaScript ثم الوصول إلى البيانات من خلال كود GWT Java الخاص بك باستخدام فئات التراكب التي قمت بإنشائها.أو عندما تعرض صفحتك، يمكنك عرض بيانات التكوين الثابتة ككائنات JavaScript وقراءتها عبر هذه الآلية، بدلاً من الاضطرار إلى إجراء استدعاء AJAX للحصول على البيانات.

إذا كنت تعرف JAVA، ولديك مكان يمكنك استضافته فيه (مثل حاوية القط أو السمك الزجاجي)، فإنني أوصي بذلك أكثر بكثير من استخدام Ruby للواجهة الخلفية.السبب الرئيسي هو أنه يمكنك بعد ذلك مشاركة كافة الكائنات الخاصة بك، واستخدام آلية RPC المضمنة.لقد فعلت ذلك في الكثير من مشاريعنا وهو يوفر وقتًا كبيرًا، ناهيك عن أن الكود أقل عرضة للخطأ، لأنك لا تقوم بتحويل كائنات Java الخاصة بك إلى أي شيء ثم تعود مرة أخرى.

لقد قمت بربط GWT الخاص بي مع Rails من قبل، باستخدام وظيفة to_json في Rails ثم قراءة JSON في GWT.كل ذلك مدعوم، لكنه أكثر إزعاجًا بكثير من مجرد القيام بالواجهة الخلفية في JAVA.

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

GWT ذات جودة عالية جدًا مع مجتمع رائع.ومع ذلك، فأنت بحاجة إلى معرفة CSS إذا كنت تريد ضبط مظهر الأشياء (سوف تفعل ذلك) - يمكن لـ CSS القيام بالكثير من التخطيط، تمامًا مثل الويب العادي إذا كنت تريد ذلك.يمكن لمكتبات مثل GWT-ext أو ExtGWT أن تساعد قليلاً نظرًا لأنها تتمتع بمظهر مذهل "خارج الصندوق" ولكن مقابل سعر (حجم إضافي لتطبيقك).

يمكنك برمجة كل شيء في Java باستخدام GWT، ويمكنك دمج مكتبات جافا سكريبت التابعة لجهات خارجية معها.انه جيد جدا.لم أستخدم RoR كثيرًا على الإطلاق، لذا لا يمكنني قول أي شيء عن ذلك.

إذا كنت من ذوي الخبرة في Java ولكن ليس في Javascript/CSS، فإن GWT ستكون منقذًا للحياة (إلا إذا كنت تريد تعلمها بالطبع).يحتوي CSS على الكثير من التفاصيل الصغيرة المزعجة.ليس من غير المألوف قضاء نصف يوم في إصلاح اختلال بمقدار 2 بكسل والذي يحدث فقط في IE6.

لست متأكدًا من مدى سهولة استخدام ROR للواجهة الخلفية ...أنا متأكد من أن هذا ممكن نظرًا لأن اتصال GWT ajax هو مجرد servlets.ولكنها توفر بعض الوظائف الرائعة حقًا لتمرير كائنات Java ذهابًا وإيابًا والتي لن تتمكن من الاستفادة منها إذا كان خادمك لا يستخدم Java أيضًا.

كتبت عن بعض عيوب GWT حديثاً.بشكل رئيسي ، العيوب هي:دورة نشر طويلة لإجراء تغييرات على بعض أجزاء التطبيق ومنحنى تعليمي حاد إلى حد ما.باعتبارك مبرمج Java متمرسًا، يجب أن تكون المشكلة الثانية أقل مشكلة، وإذا كنت تستخدم واجهة خلفية منفصلة، ​​فسيتم تخفيف المشكلة الأولى أيضًا (حيث أن إعادة النشر الكاملة مطلوبة بشكل أساسي عند تغيير جزء "الخادم" من التطبيق).

GWT هو إطار عمل رائع به الكثير من الإمكانات.ضع في اعتبارك أنه لا يزال جديدًا تمامًا.هناك بعض الأخطاء التي لم يتم حلها والتي يمكن أن تزعجك حقًا، وعادةً ما تتطلب حلولاً قبيحة لتجاوزها.المجتمع رائع ولكن من المحتمل أن ينتهي بك الأمر إلى مواجهة بعض المشكلات عاجلاً أم آجلاً والتي لا يستطيع Google الإجابة عليها بعد.

لكن مهلا، أنا أقول اذهب لذلك.إن إمكانات GWT رائعة، وأراهن أن مستقبلها سيكون مشرقًا.

يجب عليك بالتأكيد استخدام GWT لمشروع جديد (من السهل جدًا استخدامه في مشروع قديم أيضًا).

حسب تجربتي، فهو سريع جدًا في التعلم والاستخدام.يعد كود جافا سكريبت المجمع أفضل بكثير من أي شيء يمكنك كتابته يدويًا، كما أنه يعمل بسرعة أيضًا.

فائدة أخرى هي القدرة على تصحيح التعليمات البرمجية الخاصة بك (وهذا هو الجحيم مع جافا سكريبت وحدها)

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

الميزة الأساسية

يأخذ GWT برمجة طبقة الويب إلى JAVA.لذلك، بدأت المزايا الواضحة لـ Java في الظهور.وسوف توفر البرمجة كائنية التوجه.وسيوفر أيضًا تصحيحًا رائعًا للأخطاء وتجميع فحوصات الوقت.نظرًا لأنه ينشئ HTML وJavascript، سيكون لديه أيضًا القدرة على إخفاء بعض التعقيد داخل المولد الخاص به.

العيب الأساسي

العيب يبدأ من نفس البيان.يأخذ GWT برمجة طبقة الويب إلى JAVA.إذا كنت تعرف لغة جافا، فمن المحتمل أنك لن تبحث أبدًا عن لغة بديلة لكتابة منطق عملك.انها مكتفية ذاتيا ورائعة.ولكن عندما يتعلق الأمر بكتابة التكوينات لتطبيق JAVA.نحن نستخدم ملفات الملكية وقاعدة البيانات وXML وما إلى ذلك.لا نقوم مطلقًا بتخزين التكوينات في ملف فئة JAVA.فكر مليا، لماذا؟

وذلك لأن التكوين عبارة عن بيانات ثابتة.غالبا ما يتطلب التسلسل الهرمي.من المفترض أن تكون قابلة للقراءة.لا يتطلب التجميع أبدًا.ولا يتطلب معرفة لغة البرمجة JAVA.باختصار، إنها لعبة كرة مختلفة.والسؤال الآن هو، ما علاقة ذلك بمناقشتنا؟

الآن، دعونا نفكر في صفحة ويب.هل تعتقد عندما نكتب صفحة ويب أننا نكتب منطق العمل؟بالطبع لا.صفحة الويب هي مجرد تكوين.إنه تكوين للحاويات والحقول الهرمية.نحتاج إلى كتابة منطق الأعمال للبيانات التي سيتم التقاطها وعرضها على صفحة الويب وليس لإنشاء صفحة الويب نفسها.

الفقرة السابقة تقدم بيانا قويا جدا.وهذا سوف يفسر لماذا لا تزال صفحات الويب المستندة إلى HTML وXML هي الأكثر شيوعًا.XML هو الأفضل في مجال الأعمال لكتابة التكوينات.يجب أن يسمح إطار العمل بفصل واضح لصفحة الويب عن منطق الأعمال (هدف إطار عمل MVC).من خلال القيام بذلك، سيتمكن مصمم الويب من تطبيق مهاراته في التصور والإبداع لإنشاء صفحات ويب رائعة المظهر فقط عن طريق تكوين ملفات XML ودون الانزعاج من تعقيدات لغة البرمجة.سيتمكن المطورون من استخدام أفضل ما لديهم في جافا للأعمال لكتابة منطق الأعمال.

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

هل يمكن أن تنظر أيضا الكؤوس ("Groovy on Rails") الذي يمنحك فوائد إطار عمل Rails واستخدام Java VM.

لقد طرح فريقنا نفس السؤال مؤخرًا، واخترنا استخدام GWT، خاصة وأن البرنامج الإضافي المصمم جعل العمل مع GWT أكثر سهولة للخبراء غير المتخصصين في Java في الفريق.أيًا كان من يقوم بهذا الاختيار، احذر فقط من عدم استخدام البرنامج الإضافي GWT Designer !!لم يتم تحديثه (على الأقل لمدة عام على ما يبدو) لإنشاء تطبيق GWT متوافق مع IE8.

كان فريقنا على وشك الانتهاء من تخطيطات التطبيق لدينا، والتي كانت تعمل بشكل مثالي في Chrome وFF وSafari.ثم انفجروا في IE.سوف يقوم IE 7 بتحميل صفحات جزئية (ولكن ليس تضمينات مركبة)، ولم يكن IE8 قادرًا حتى على تحميل التطبيق.لقد علقت للتو.

يحتوي البرنامج الإضافي للمصمم على أزرار تسمح للمستخدم بإضافة عناصر واجهة مستخدم CellTable غير المتوافقة مع IE (CellTable، وDeckPanel، وHorizontal Panel، وVertical Panel، وغيرها).سيؤدي ذلك إلى ألم شديد عندما يتعين إعادة تنفيذ التخطيطات في جافا دون مساعدة المصمم.

يحبه مستخدمو GWT ذوو الخبرة، لكن المكون الإضافي المصمم سيقتلك.

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