المؤلف: Zhu Xianzhong مصدر المترجم: Tianji.com
ملخص ستقدم هذه المقالة كيفية تحقيق التفاعل بين تطبيق ASP.NET الخاص بك وخادم تطبيقات J2EE وكيفية جعل الاتصال بـ EJB سهلاً مثل الاتصال بخدمة ويب XML.
مقدمة
اليوم، تجد العديد من المؤسسات الكبيرة نفسها تمتلك وتستخدم فرق تطوير وخوادم نشر تمثل مزيجًا من تقنيات .NET وJ2EE. من أجل موازنة جودة المؤسسة المرسلة من خلال خادم تطبيقات J2EE، غالبًا ما يتم نشر منطق أعمال الشركة على خادم تطبيقات J2EE في شكل JavaBeans للمؤسسة (EJB). من ناحية أخرى، من أجل تلبية المتطلبات المتغيرة لتطوير الأعمال، يفضل معظم المطورين تنفيذ منطق الوصف في بيئة تطوير Visual Studio.NET بأداء إنتاجي عالي. ينشأ التحدي عندما تحتاج إلى توصيل طبقة العرض التقديمي .NET بطبقة منطق الأعمال J2EE.
دعونا نلقي نظرة على كيف يمكن لـ Visual MainWin لـ J2EE مساعدتك على المواجهة والتغلب - من Visual Studio.NET، استخدم C# أو Visual Basic.NET لتنفيذ طبقة وصف ASP.NET ثم استدعاء طبقة منطق الأعمال المطبقة في شكل EJB - هذا يمثل تحديًا للتطوير. كن مطمئنًا، فلن تحتاج إلى العبث بتشفير EJB API للقيام بذلك. باستخدام Visual MainWin لـ J2EE، يمكن تشغيل كلتا الطبقتين - الواجهة الأمامية لـ ASP.NET والواجهة الخلفية لـ EJB - كتطبيق J2EE خالص على خادم تطبيقات J2EE الخاص بك، مع تحسين الأداء والأمان المتسق المستند إلى J2EE.
لكي تتمكن من استدعاء EJBs من Visual Studio .NET، يجب عليك تثبيت إصدار المؤسسة من Visual MainWin لـ J2EE. بالطبع، يمكنك تنزيل نسخته التقييمية من موقع mainsoft.com للتحليل التجريبي.
تحليل المثال
تم تثبيت وتوثيق مثال StocksPortfolio الخاص بهذه المقالة - والذي يوضح لك كيفية إنشاء تطبيق باستخدام طبقة ويب ASP.NET وطبقة أعمال J2EE - في Visual MainWin لـ J2EE. يطبق هذا المثال صفحة ويب ASP.NET بسيطة - يستخدمها المستخدمون لإدارة استثماراتهم في الأسهم - وخدمة ويب ASP.NET - تُستخدم لتقديم أسعار الأسهم الخيالية. يستخدم هذا المثال أيضًا جلسة EJB - التي يستخدمها خادم تطبيق J2EE الخاص بك لتنفيذ منطق شراء وبيع الأسهم.
الشكل 1. تطبيق StocksPortfolio يعمل على خادم تطبيقات JBoss
إضافة EJBs إلى بيئة .NET الخاصة بك
يعد استدعاء EJB من Visual Studio.NET أمرًا سهلاً مثل الاتصال بخدمة ويب. في Solution Explorer، انقر بزر الماوس الأيمن فوق "References" وحدد "Add EJB Reference". سيظهر نوع مرجع جديد يمكن استخدامه فقط في Visual MainWin لمشاريع J2EE، وهو مشابه جدًا لمرجع Visual Studio القياسي ضمن نيتايد (انظر الشكل 2).
الشكل 2. إضافة مرجع EJB
لإضافة مرجع EJB إلى مشروع Visual MainWin for J2EE الخاص بك، فإنك تحتاج فقط إلى ملف أرشيف Java (JAR) - وهو الملف الذي يقوم بتنفيذ EJB أو يحتوي على واجهاته المحلية والبعيدة. يمكن لـ Visual MainWin الاستعلام عن خادم التطبيق للحصول على معلومات حول جميع وحدات جافا للأعمال المنشورة عليه وعرض وحدات جافا للأعمال المقابلة لتعريف JAR الخاص بك في مربع الحوار. كل ما عليك فعله هو تحديد EJB المحدد (ربما المتعدد) الذي تريد استخدامه (انظر الشكل 3).
الشكل 3. مربع حوار إضافة مرجع EJB
يمكنك أيضًا استهلاك EJB على خادم تطبيق بعيد، طالما أنه من نفس نوع خادم التطبيق المحلي المرتبط بمشروعك. يمكن أن يكون هذا خادمًا يعمل بنظام التشغيل Windows أو Linux أو Unix أو Mainframe أو أي خادم آخر يدعم J2EE. لاستهلاك وحدة جافا للأعمال المنشورة على خادم بعيد، انقر فوق "خيارات متقدمة" لتوسيع مربع الحوار (انظر الشكل 4).
الشكل 4. مربع حوار إضافة مرجع EJB للوضع المتقدم
أدخل عنوان URL لـ JNDI إلى خادم تطبيق J2EE البعيد وانقر فوق "جلب من الخادم". سيقوم Visual MainWin بإدراج جميع وحدات JBS المنشورة على الخادم البعيد ووحدات EJBs التي تتوافق مع ملف JAR الخاص بك. تتوافق هذه العملية مع EJB المحلي.
حدد EJB الذي تريد استهلاكه (قد يكون هناك عدة) وانقر فوق OK. يتم إنشاء مجلد مرجعي جديد لـ EJB في متصفح Solution Explorer، كما هو موضح في الشكل 5. يحتوي هذا المجلد على مرجع قائم على الخادم لكل مرجع EJB مضاف حديثًا، مشابهًا لعقدة مرجع الويب. بالإضافة إلى ذلك، يتم إنشاء فئة مجمّعة لتبسيط عملية ترميز مكالمات EJB الخاصة بك. سنناقش فئة المجمع هذه في قسم لاحق.
الشكل 5. مجلد Solution Explorer يعرض مرجع EJB
استدعاء أساليب EJB من .NET
عندما تقوم بإضافة مرجع EJB إلى مشروعك، سيقوم النظام تلقائيًا بإنشاء فئة .NET (C# أو VB.NET) وهي تصف واجهة بسيطة لـ EJB . تتضمن هذه الفئة ترميز J2EE المطلوب لإنشاء EJB واستدعاء أساليبه. تعرض فئة .NET هذه أساليب واجهة EJB البعيدة من خلال أساليبها العامة. لاستدعاء أساليب عمل EJB الخاصة بك، ما عليك سوى إنشاء نسخة من فئة المجمع واستدعاء أسلوب فئة المجمع المناسب.
فيما يلي مثال للتعليمات البرمجية لاستدعاء أسلوب EJB من مشروع .NET الخاص بك:
//إنشاء مثيل لـ StockTrader EJB.
localhost.StockTraderEJB trader = new localhost.StockTraderEJB();
// شراء السهم المحدد من قبل المستخدم في مربع نص اسم السهم،
// عدد الأسهم المشتراة يتوافق مع الرقم الموجود في مربع النص عدد الأسهم
trader.buy(tbStockName.Text, Int32.Parse(tbNumOfShares.Text));
ينفذ التحليل المتعمق
استدعاء J2EE المطلوب في المُنشئ الثابت لفئة الغلاف التي تم إنشاؤها أعلاه لإنشاء الكائن الرئيسي لـ EJB. بعد ذلك، في المُنشئ الافتراضي، يستخدم الكائن الرئيسي لإنشاء كائن EJB. يتم تخزين كائن EJB كعضو فئة مجمّع يتم من خلاله استدعاء أساليب EJB للأعمال.
ما يلي هو جزء من التعليمات البرمجية لإنشاء فئة المجمع لـ StockTrader EJB:
التداول الثابت الخاص.StockTraderHome home؛
التداول الخاص.StockTraderEJB ejbObj;
ستوكترادر EJB ثابت () {
// إنشاء سياق تسمية جافا (JNDI).
سياق السياق؛
context = vmw.j2ee.J2EEUtils.CreateContext(null, null);
كائن homeObj؛
// احصل على الكائن الرئيسي من خادم JNDI
homeObj = context.lookup("ejb/StockTrader");
home = ((trading.StockTraderHome)(homeObj));
}
// المُنشئ الافتراضي: إنشاء مثيل EJB جديد
StockTraderEJB العام () {
this.ejbObj = home.create();
}
تعرض فئة المجمع هذه أساليب واجهة EJB البعيدة من خلال أساليبها العامة. تقوم كل من هذه الطرق بعد ذلك باستدعاء طريقة العمل المقابلة لـ EJB الخاص بك من خلال كائن EJB. يوضح لك الكود التالي طريقة تداول الأسهم في غلاف EJB:
public virtual void buy(string arg_0, int arg_1) {
this.ejbObj.buy(arg_0, arg_1);
}
بيع الفراغ الظاهري العام (سلسلة arg_0، int arg_1) {
this.ejbObj.sell(arg_0, arg_1);
}
يعتبر Visual MainWin مسؤولاً أيضًا عن تعيين أنواع البيانات بين Java و.NET. على سبيل المثال، إذا استقبلت إحدى طرق EJB كائن java.lang.calendar كمعامل، فيمكنك استدعاء هذا الأسلوب باستخدام معلمة كائن .NET System.DateTime وتخطيطه إلى java.lang على كائن التقويم. وبالتالي، إذا قام أسلوب EJB الخاص بك بإرجاع java.lang.class، فستتلقى كائن System.Type بدلاً من ذلك.
مشكلات التصحيح
على الرغم من أن Visual MainWin يبسط عملية التطوير، إلا أنك قد تظل بحاجة إلى تصحيح أخطاء تطبيقات ASP.NET/EJB المختلطة ومتعددة المستويات. يسمح لك مصحح أخطاء Visual MainWin بتصحيح تطبيقاتك المختلطة من داخل Visual Studio .NET IDE. يمكنك تعيين المقاطعات في كود C# أو VB.NET الخاص بك، والدخول إلى كود EJB Java، وتصحيح أخطاء التطبيق بالكامل عبر حدود اللغة. ولأن تصحيح الأخطاء يجب أن يكون موجودًا أينما حدثت المشكلة، يمكن إرفاق مصحح أخطاء Visual MainWin بخادم تطبيقات J2EE الخاص بك، بغض النظر عما إذا كان يعمل على Linux أو Unix أو أطر عمل أخرى، طالما أنه يمكن تشغيله على مصحح الأخطاء فقط النمط.
الشكل 6. استخدام مصحح أخطاء Visual MainWin لتصحيح كود مصدر EJB
التطبيق الذي ينشئه Visual MainWin لك هو تطبيق J2EE servlet قياسي - يمكن نشره وإدارته من خلال وحدة تحكم J2EE Application Server Manager، تمامًا مثل أي J2EE آخر مثل servlet طلب. لذلك، يمكن أن تعتمد طبقة العرض التقديمي ASP.NET وطبقة منطق الأعمال EJB على نفس البنية الأساسية الأمنية لـ J2EE. يمكن أن تعتمد تطبيقات ASP.NET/EJB المختلطة على نموذج أمان متسق من خلال استخدام مصادقة J2EE servlet، ويمكن لمستخدم خادم التطبيق وتعريفات الأدوار ضمان الأمان من خلال موازنة آليات التفويض المستندة إلى الأدوار.
ملخص
1. ناقشت هذه المقالة الكائنات والواجهات البعيدة. من الممكن أيضًا استهلاك الكائن المحلي عبر Visual MainWin. لتوزيع تطبيق يستخدم كائنات أصلية، يجب عليك إنشاء ملف أرشيف مؤسسي (EAR) - والذي يحتوي على كل من ملف WAR الخاص بتطبيقك وملف JAR الخاص بـ EJB المحلي.
2. على الرغم من أن Visual MainWin يمكنه تعيين معظم أنواع .NET إلى أنواع Java، إلا أنه لا يمكنه تعيين أنواع المجموعات - لأن هذا التعيين قد يتسبب في فرض عقوبات على الأداء. لذلك، يمكنك اختيار التعامل مع أنواع مجموعات Java من كود .NET الخاص بك أو إجراء مثل هذه التحويلات بنفسك.
3. يسمح لك Visual MainWin باستهلاك وحدات الجلسة ووحدات الكيان غير المتعلقة بالمعاملات. لا يمكن استهلاك وحدات كيان المعاملات بشفافية، لذا يجب عليك ترميز استدعاءات معاملات J2EE يدويًا. ومع ذلك، في معظم الحالات، يمكن الوصول إلى وحدات كيان المعاملات من خلال وحدات الجلسة، لذلك من غير المرجح أن تحتاج إلى القيام بذلك.