ما هي إيجابيات وسلبيات استخدام RMI أو JMS بين طبقات الويب والأعمال؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

بالنسبة لعميل الويب النموذجي -to- Servlet/WS -to- Business Tier (Spring أو EJB)، ما هي المفاضلات بين الأساليب مثل RPC عن بعد أو المراسلة لطبقة الويب (Servlet) إلى طبقة الأعمال البعيدة، بصرف النظر عن جوانب المزامنة/غير المتزامنة الأساسية؟

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

المحلول

بواسطة عميل الويب هل تقصد متصفح الويب؟إذا كان الأمر كذلك فإن النظر إلى أشياء مثل DWR أو JAX-RS هي توصياتي.يعمل RMI أو JMS حقًا فقط عندما يكون كلا الجانبين عبارة عن كود Java.

مع أي تقنية للتحكم عن بعد، تكمن المشكلة الأكبر في استخدامها في مدى تدخل التكنولوجيا في كائنات عملك.على سبيل المثالاستخدام واجهة/استثناءات RMI في كل مكان أو استخدام واجهات برمجة تطبيقات JMS داخل رمز عملك.

توصيتي هي استخدام POJOs في كل مكان في Java ثم استخدام تقنية مثل النائية الربيع لوضع طبقة على البرامج الوسيطة الخاصة بك سواء كانت RMI أو JMS أو أي شيء آخر - ولكن قم بفصل رمز البرنامج الوسيط تمامًا عن منطق عملك حتى تتمكن من التبديل بين التقنيات في أي وقت (والحفاظ على رمز منطق عملك أكثر بساطة وتركيزًا على مشكلة عملك).

على سبيل المثال انظر تنفيذ الجمل للربيع عن بعد والذي يسمح لك بعد ذلك باستخدام أي من وسائل النقل والبروتوكولات هذه مثل RMI أو JMS أو حتى HTTP العادي أو البريد الإلكتروني أو الملفات أو XMPP - ثم قم بالتبديل بينهما بسهولة باستخدام تغيير سلسلة URI بسيط.

نصائح أخرى

نحن نستخدم RMI عبر Spring ونجد أنه سهل الاستخدام للغاية وقوي وسريع إلى حد ما.على الرغم من أن متطلباتنا كانت تتعلق بارتباط سريع الاستجابة إلى حد ما ولم تكن هناك حاجة حقيقية لإضافة مكون مراسلة.

اندلعت SUN RMI بالنسبة لنا.

الإعدادات وجمع البيانات المهملة لتطبيق يعمل لفترة طويلة جدًا مع إرسال رسائل مستمرة.نحن نقوم بالتصحيح لجعله يعمل بشكل مستمر.تطبيقات JMS التي نقوم بتشغيلها لا تتخلص من أخطاء الذاكرة أو مشكلات gc التي يحدثها RMI.أي شيء يحتاج إلى استدعاء System.gc() بشكل دوري ولا يعمل مع التجميع المتزايد لاستعادة الموارد يتم ترميزه بشكل خاطئ.

تتحسن موثوقية RMI باستخدام JDK 6 وإعدادات الخاصية الصحيحة، لكن JHC، إنه إطار عمل غبي.سيتم تحسين RMI بشكل كبير باستخدام القنوات في nio وإصلاح استخدامات sun nio لـ system.gc().

الإجابة الصحيحة - اتصال (آلية) منفصل عن رمز المجال.RPC مقترن بإحكام، ويمكن أن يتداخل البروتوكول والتطبيق مع بعضهما البعض.يقوم JMS بفصل البروتوكول عن التطبيق، وهو نموذج أفضل بكثير.

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