بنية وسيط طلب الكائنات المشتركة
تُعدّ بنية وسيط طلب الكائنات المشتركة ( CORBA ) معيارًا وضعته مجموعة إدارة الكائنات (OMG) لتسهيل التواصل بين الأنظمة المنشورة على منصات متنوعة . تُمكّن CORBA من التعاون بين الأنظمة التي تعمل على أنظمة تشغيل ولغات برمجة وأجهزة حاسوب مختلفة. تستخدم CORBA نموذجًا كائني التوجه، مع العلم أن الأنظمة التي تستخدم CORBA ليست بالضرورة كائنية التوجه. تُعدّ CORBA مثالًا على نموذج الكائنات الموزعة .
على الرغم من شعبيتها لفترة وجيزة في منتصف إلى أواخر التسعينيات، إلا أن تعقيد CORBA وعدم اتساقها وتكاليف الترخيص المرتفعة قد جعلتها تقنية متخصصة. [ 1 ]
ملخص
تُمكّن CORBA من التواصل بين البرامج المكتوبة بلغات مختلفة والتي تعمل على أجهزة حاسوب مختلفة. وبذلك، تُعفى تفاصيل التنفيذ الخاصة بأنظمة التشغيل ولغات البرمجة ومنصات الأجهزة من مسؤولية المطورين الذين يستخدمون CORBA. تُوحّد CORBA دلالات استدعاء الدوال بين كائنات التطبيق الموجودة إما في نفس مساحة العناوين (التطبيق) أو في مساحات عناوين متباعدة (نفس المضيف، أو مضيف بعيد على الشبكة). صدرت النسخة 1.0 في أكتوبر 1991.
تستخدم CORBA لغة تعريف الواجهات (IDL) لتحديد الواجهات التي تُقدمها الكائنات للعالم الخارجي. ثم تُحدد CORBA ربطًا بين IDL ولغة برمجة مُحددة مثل C++ أو Java . توجد روابط قياسية للغات Ada و C و C ++ و C++11 و COBOL و Java و Lisp و PL/I و Object Pascal و Python و Ruby و Smalltalk . كما توجد روابط غير قياسية للغات C# و Erlang و Perl و Tcl و Visual Basic ، والتي تُنفذها وسطاء طلب الكائنات (ORBs) المكتوبة لهذه اللغات. وقد شهدت إصدارات IDL تغييرات كبيرة، حيث استُبدلت بعض التعليمات البرمجية (pragmas) بالتعليقات التوضيحية.
تنص مواصفات CORBA على ضرورة وجود وسيط كائنات (ORB) يتفاعل التطبيق من خلاله مع الكائنات الأخرى. وهذه هي طريقة تنفيذه عمليًا:
- يقوم التطبيق بتهيئة ORB، ويصل إلى محول كائن داخلي ، والذي يحتفظ بأشياء مثل عد المراجع ، وسياسات إنشاء الكائنات (والمراجع)، وسياسات دورة حياة الكائنات.
- يُستخدم مُهايئ الكائنات لتسجيل مثيلات فئات التعليمات البرمجية المُولَّدة . تُعدّ فئات التعليمات البرمجية المُولَّدة نتاجًا لتجميع كود IDL الخاص بالمستخدم، والذي يُترجم تعريف الواجهة عالي المستوى إلى قاعدة فئات خاصة بنظام التشغيل ولغة البرمجة لاستخدامها من قِبل تطبيق المستخدم. هذه الخطوة ضرورية لفرض دلالات CORBA وتوفير عملية مستخدم سلسة للتفاعل مع بنية CORBA التحتية.
تختلف صعوبة استخدام بعض خرائط IDL عن غيرها. فعلى سبيل المثال، نظرًا لطبيعة لغة جافا، فإن خريطة IDL-جافا بسيطة نسبيًا، مما يُسهّل استخدام CORBA في تطبيقات جافا. وينطبق الأمر نفسه على خريطة IDL-بايثون. أما خريطة C++ فتتطلب من المبرمج تعلّم أنواع البيانات التي سبقت مكتبة القوالب القياسية (STL) الخاصة بلغة C++. في المقابل، تُعدّ خريطة C++11 أسهل استخدامًا، ولكنها تتطلب استخدامًا مكثفًا لمكتبة STL. ولأن لغة C ليست كائنية التوجه، فإن خريطة IDL-C تتطلب من مبرمج C محاكاة ميزات البرمجة كائنية التوجه يدويًا.
لبناء نظام يستخدم أو يُطبّق واجهة كائنات موزعة قائمة على CORBA، يجب على المطور إما الحصول على كود IDL أو كتابته، وهو الكود الذي يُعرّف واجهة الكائنات الموجهة للمنطق الذي سيستخدمه النظام أو يُطبّقه. عادةً، يتضمن تطبيق ORB أداة تُسمى مُترجم IDL، والتي تُترجم واجهة IDL إلى اللغة المستهدفة لاستخدامها في ذلك الجزء من النظام. ثم يقوم مُترجم تقليدي بتجميع الكود المُولّد لإنشاء ملفات الكائنات القابلة للربط لاستخدامها في التطبيق. يوضح هذا الرسم التخطيطي كيفية استخدام الكود المُولّد ضمن بنية CORBA التحتية:

يوضح هذا الشكل النموذج عالي المستوى للاتصالات بين العمليات عن بُعد باستخدام CORBA. وتتناول مواصفات CORBA أيضًا أنواع البيانات، والاستثناءات، وبروتوكولات الشبكة، ومهلات الاتصال، وما إلى ذلك. على سبيل المثال: عادةً ما يحتوي جانب الخادم على مُهايئ الكائنات المحمول (POA) الذي يُعيد توجيه الاستدعاءات إما إلى الخوادم المحلية أو (لتحقيق توازن الحمل) إلى الخوادم الأخرى. تترك مواصفات CORBA (وبالتالي هذا الشكل) جوانب مختلفة من النظام الموزع للتطبيق لتحديدها، بما في ذلك دورات حياة الكائنات (على الرغم من توفر دلالات عد المراجع للتطبيقات)، والتكرار/التحويل التلقائي في حالة الفشل، وإدارة الذاكرة، وموازنة الحمل الديناميكية، والنماذج الموجهة للتطبيقات مثل الفصل بين دلالات العرض/البيانات/التحكم (انظر على سبيل المثال نموذج-عرض-متحكم )، وما إلى ذلك.
بالإضافة إلى تزويد المستخدمين بلغة ومواصفات استدعاء الإجراءات عن بعد (RPC) المحايدة للمنصة، تحدد CORBA الخدمات المطلوبة بشكل شائع مثل المعاملات والأمان والأحداث والوقت ونماذج الواجهة الأخرى الخاصة بالمجال.
سجل الإصدارات
يعرض هذا الجدول تاريخ إصدارات معيار CORBA. [ 2 ] [ 3 ] [ 4 ]
| إصدار | تاريخ الإصدار | أبرز النقاط | إصدار Corba IDL |
|---|---|---|---|
| 1.0 | أكتوبر 1991 | الإصدار الأول، تعيين C | — |
| 1.1 | فبراير 1992 | قابلية التشغيل البيني، ورسم الخرائط بلغة C++ | — |
| 1.2 | ديسمبر 1993 | — | |
| 2.0 | أغسطس 1996 | أول تحديث رئيسي للمعيار، والذي يُطلق عليه أيضًا اسم CORBA 2 | — |
| 2.1 | أغسطس 1997 | — | |
| 2.2 | فبراير 1998 | رسم الخرائط في جافا | — |
| 2.3 | يونيو 1999 | — | |
| 2.4 | أغسطس 2000 | — | |
| 2.5 | سبتمبر 2001 | — | |
| 2.6 | ديسمبر 2001 | — | |
| 3.0 | يوليو 2002 | التحديث الرئيسي الثاني للمعيار، والذي يُطلق عليه أيضًا اسم CORBA 3 CORBA Component Model (CCM). | — |
| 3.0.1 | نوفمبر 2002 | — | |
| 3.0.2 | ديسمبر 2002 | — | |
| 3.0.3 | مارس 2004 | — | |
| 3.1 | يناير 2008 | — | |
| 3.1.1 | أغسطس 2011 | تم اعتمادها كإصدار 2012 من معيار ISO/IEC 19500 | — |
| 3.2 | نوفمبر 2011 | — | |
| 3.3 | نوفمبر 2012 | إضافة ZIOP | — |
| 3.4 | فبراير 2021 | التعليقات التوضيحية | 4.2 |
لاحظ أن تغييرات IDL قد تقدمت مع التعليقات التوضيحية (مثل @unit، @topic) التي تحل محل بعض التعليمات البرمجية.
الخدم
الخادم هو هدف الاستدعاء الذي يحتوي على طرق لمعالجة استدعاءات الطرق البعيدة . في إصدارات CORBA الأحدث ، يُقسّم الكائن البعيد (على جانب الخادم) إلى كائن (مُعرَّض للاستدعاءات البعيدة) وخادم (يُعيد الجزء الأول توجيه استدعاءات الطرق إليه) . يمكن أن يكون هناك خادم واحد لكل كائن بعيد ، أو يمكن للخادم نفسه دعم عدة كائنات (ربما جميعها)، المرتبطة بمحول الكائنات المحمول المُعطى . يمكن تعيين الخادم لكل كائن أو العثور عليه "مرة واحدة وإلى الأبد" (تفعيل الخادم) أو اختياره ديناميكيًا في كل مرة يتم فيها استدعاء طريقة على ذلك الكائن (تحديد موقع الخادم). يمكن لكل من مُحدِّد موقع الخادم ومُفعِّله إعادة توجيه الاستدعاءات إلى خادم آخر. إجمالًا، يُوفِّر هذا النظام وسيلة فعّالة للغاية لموازنة الحمل، وتوزيع الطلبات بين عدة أجهزة. في لغات البرمجة كائنية التوجه، يُعتبر كل من الكائن البعيد وخادمه كائنات من وجهة نظر البرمجة كائنية التوجه.
التجسيد هو عملية ربط خادم بكائن CORBA ليتمكن من تلبية الطلبات. يوفر التجسيد شكلاً مادياً للخادم لكائن CORBA الافتراضي. يشير التنشيط وإلغاء التنشيط إلى كائنات CORBA فقط، بينما يشير مصطلحا التجسيد والتحويل إلى كائنات افتراضية إلى الخوادم. مع ذلك، فإن دورة حياة الكائنات والخوادم مستقلة. يتم تجسيد الخادم دائمًا قبل استدعاء الدالة activate_object()، ولكن العكس ممكن أيضًا، create_reference()حيث يتم تنشيط الكائن دون تجسيد خادم، ويتم تجسيد الخادم لاحقًا عند الطلب باستخدام مدير الخوادم.
اليُعدّ مُهايئ الكائنات المحمولة (POA) كائن CORBA المسؤول عن تقسيم مُعالج الاستدعاء عن بُعد من جانب الخادم إلىالكائنالبعيدوخادمه. يُتاح الكائن للاستدعاءات عن بُعد، بينما يحتوي الخادم على الطرق التي تُعالج الطلبات فعليًا. يُمكن اختيار الخادم لكل كائن إما بشكل ثابت (مرة واحدة) أو ديناميكي (لكل استدعاء عن بُعد)، وفي كلتا الحالتين يُمكن إعادة توجيه الاستدعاء إلى خادم آخر.
على جانب الخادم، تشكل نقاط الوصول (POAs) بنية شجرية، حيث تكون كل نقطة وصول مسؤولة عن خدمة كائن واحد أو أكثر. يمكن تفعيل/إلغاء تفعيل فروع هذه الشجرة بشكل مستقل، ولكل منها رمز مختلف لموقع الخادم أو تفعيله، بالإضافة إلى سياسات مختلفة لمعالجة الطلبات.
سمات
يصف ما يلي بعضًا من أهم الطرق التي يمكن من خلالها استخدام CORBA لتسهيل التواصل بين الكائنات الموزعة.
الكائنات بالمرجع
يتم الحصول على هذا المرجع إما من خلال عنوان URL موحد (URL) أو بحث NameService (على غرار نظام أسماء النطاقات (DNS)) أو يتم تمريره كمعامل طريقة أثناء الاستدعاء.
مراجع الكائنات هي كائنات خفيفة الوزن تُطابق واجهة الكائن الحقيقي (سواءً كان محليًا أو بعيدًا). تؤدي استدعاءات الدوال على المرجع إلى استدعاءات لاحقة إلى وسيط مرجع الكائنات (ORB) وتوقف مؤقت في الخيط أثناء انتظار الرد، سواءً كان ناجحًا أم فاشلًا. يقوم وسيط مرجع الكائنات (ORB) داخليًا بترتيب المعاملات وبيانات الإرجاع (إن وجدت) وبيانات الاستثناءات وفقًا للغة المحلية ونظام التشغيل.
البيانات حسب القيمة
توفر لغة تعريف واجهة CORBA تعريفًا للتواصل بين الكائنات، بغض النظر عن اللغة أو نظام التشغيل. تُمرر كائنات CORBA بالمرجع، بينما تُمرر البيانات (الأعداد الصحيحة، والأعداد العشرية، والهياكل، والتعدادات، إلخ) بالقيمة. يتيح الجمع بين تمرير الكائنات بالمرجع وتمرير البيانات بالقيمة إمكانية فرض كتابة بيانات دقيقة أثناء تجميع برامج العميل والخادم، مع الحفاظ على المرونة المتأصلة في بيئة CORBA.
الكائنات حسب القيمة (OBV)
إلى جانب الكائنات البعيدة، يُعرّف كلٌّ من CORBA و RMI-IIOP مفهوم كائن الكائن البعيد (OBV) وأنواع القيم (Valuetypes). يُنفَّذ الكود الموجود داخل توابع كائنات أنواع القيم محليًا افتراضيًا. إذا تم استلام كائن الكائن البعيد من الطرف البعيد، فيجب أن يكون الكود المطلوب معروفًا مسبقًا لكلا الطرفين أو يتم تنزيله ديناميكيًا من المُرسِل. ولتحقيق ذلك، يحتوي السجل الذي يُعرّف كائن الكائن البعيد على قاعدة الكود، وهي عبارة عن قائمة عناوين URL مفصولة بمسافات، حيث يجب تنزيل هذا الكود منها. يمكن أن يحتوي كائن الكائن البعيد أيضًا على توابع بعيدة.
نموذج مكونات كوربا (CCM)
يُعدّ نموذج مكونات CORBA (CCM) إضافةً إلى مجموعة تعريفات CORBA. [ 5 ] وقد طُرح مع CORBA 3، وهو يصف إطار عمل قياسيًا لتطبيقات مكونات CORBA. ورغم أنه لا يعتمد على " مكونات Enterprise Java Beans (EJB) المعتمدة على اللغة"، إلا أنه يُمثّل شكلاً أكثر عموميةً من EJB، إذ يُوفّر أربعة أنواع من المكونات بدلاً من النوعين اللذين يُحدّدهما EJB. كما يُوفّر تجريدًا للكيانات التي يُمكنها تقديم الخدمات واستقبالها عبر واجهات مُحدّدة جيدًا تُسمّى المنافذ .
يحتوي نظام إدارة المحتوى (CCM) على حاوية مكونات، حيث يمكن نشر مكونات البرمجيات. توفر هذه الحاوية مجموعة من الخدمات التي يمكن للمكونات استخدامها. تشمل هذه الخدمات (على سبيل المثال لا الحصر) الإشعارات ، والمصادقة ، وحفظ البيانات ، ومعالجة المعاملات . تُعد هذه الخدمات الأكثر استخدامًا في أي نظام موزع، وبنقل تنفيذ هذه الخدمات من مكونات البرمجيات إلى حاوية المكونات، يتم تقليل تعقيد المكونات بشكل كبير.
أجهزة اعتراض محمولة
تُعدّ أجهزة الاعتراض المحمولة بمثابة "الخطافات" التي تستخدمها أنظمة CORBA و RMI-IIOP للتوسط في أهم وظائف نظام CORBA. ويحدد معيار CORBA الأنواع التالية من أجهزة الاعتراض:
- تتوسط معترضات IOR في إنشاء المراجع الجديدة للكائنات البعيدة، التي يقدمها الخادم الحالي.
- عادةً ما تتوسط برامج اعتراض العميل في استدعاءات الأساليب البعيدة من جانب العميل (المستدعي). وإذا كان الكائن Servant موجودًا على نفس الخادم الذي يتم استدعاء الأسلوب منه، فإنها تتوسط أيضًا في الاستدعاءات المحلية.
- تتولى برامج اعتراض الخادم معالجة استدعاءات الأساليب البعيدة على جانب الخادم (المعالج).
يمكن للمعترضات إرفاق معلومات محددة بالرسائل المرسلة وإشعارات التغيير المُنشأة. ويمكن للمعترض قراءة هذه المعلومات لاحقًا على الجانب البعيد. كما يمكن للمعترضات إطلاق استثناءات إعادة التوجيه، لإعادة توجيه الطلب إلى وجهة أخرى.
بروتوكول InterORB العام (GIOP)
بروتوكول GIOP هو بروتوكول مجرد تتواصل من خلاله وسطاء طلبات الكائنات (ORBs). وتتولى مجموعة إدارة الكائنات (OMG) مسؤولية الحفاظ على المعايير المرتبطة بهذا البروتوكول. يوفر هيكل GIOP عدة بروتوكولات محددة، منها:
- بروتوكول الإنترنت بين المدارات (IIOP) - بروتوكول الإنترنت بين المدارات هو تطبيق لبروتوكول GIOP للاستخدام عبر الإنترنت ، ويوفر ربطًا بين رسائل GIOP وطبقة TCP/IP .
- بروتوكول SSL InterORB (SSLIOP) - SSLIOP هو بروتوكول IIOP عبر SSL ، ويوفر التشفير والمصادقة .
- بروتوكول HyperText InterORB (HTIOP) - HTIOP هو بروتوكول IIOP عبر HTTP ، مما يوفر تجاوزًا شفافًا للوكيل.
- IOP المضغوط (ZIOP) - نسخة مضغوطة من GIOP تقلل من استخدام النطاق الترددي.
VMCID (معرف مجموعة رموز البائع الثانوية)
يتضمن كل استثناء قياسي في معيار CORBA رمزًا فرعيًا لتحديد الفئة الفرعية للاستثناء. وتكون رموز الاستثناءات الفرعية من نوع عدد صحيح طويل غير مُوقّع، وتتألف من "معرّف مجموعة الرموز الفرعية للبائع" (VMCID) ذي 20 بت، والذي يشغل أعلى 20 بت، والرمز الفرعي نفسه الذي يشغل أدنى 12 بت.
تُسبق رموز الاستثناءات الثانوية للاستثناءات القياسية بمعرف VMCID المُخصص لـ OMG، والمُعرّف كثابت طويل غير مُوقّع CORBA::OMGVMCID، حيث يشغل معرف VMCID المُخصص لـ OMG أعلى 20 بت. تُدمج رموز الاستثناءات الثانوية المرتبطة بالاستثناءات القياسية، والموجودة في الجدول 3-13 في الصفحة 3-58، مع OMGVMCID باستخدام عملية OR للحصول على قيمة رمز الاستثناء الثانوي المُعادة في بنية ex_body. [ 6 ]
في نطاق المساحة المخصصة للبائع، يُترك للبائع تحديد القيم للرموز الثانوية. [ 7 ] [ 8 ]
تم حجز VMCID 0 و 0xfffff للاستخدام التجريبي. أما VMCID OMGVMCID [ 9 ] والأرقام من 1 إلى 0xf فهي محجوزة لاستخدام OMG. [ 10 ]
موقع كوربا (CorbaLoc)
يشير موقع كوربا (CorbaLoc) إلى مرجع كائن مُحوّل إلى سلسلة نصية لكائن كوربا يشبه عنوان URL.
يجب أن تدعم جميع منتجات CORBA عنواني URL محددين من قبل OMG: " corbaloc: " و " corbaname: ". والغرض من ذلك هو توفير طريقة سهلة القراءة والتعديل لتحديد موقع يمكن من خلاله الحصول على IOR.
يظهر أدناه مثال على كوربالوك:
- corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_root
قد يدعم منتج CORBA اختياريًا تنسيقات " http: " و" ftp: " و" file: ". وتتمثل دلالة هذه التنسيقات في أنها توفر تفاصيل حول كيفية تنزيل عنوان URL مُحوّل إلى سلسلة نصية (أو، بشكل متكرر، تنزيل عنوان URL آخر سيوفر في النهاية عنوان URL مُحوّلًا إلى سلسلة نصية). وتقدم بعض وحدات ORB تنسيقات إضافية خاصة بها.
فوائد
تشمل مزايا CORBA الاستقلال عن اللغة ونظام التشغيل، والتحرر من التطبيقات المرتبطة بالتكنولوجيا، وقوة كتابة البيانات، ومستوى عالٍ من قابلية التعديل، والتحرر من تفاصيل عمليات نقل البيانات الموزعة.
استقلال اللغة
صُممت منصة CORBA لتحرير المهندسين من قيود ربط تصميماتهم بلغة برمجة محددة. يدعم مزودو CORBA حاليًا العديد من اللغات، وأكثرها شيوعًا Java وC++. كما توجد تطبيقات بلغات أخرى مثل C++11، وC فقط، وSmalltalk، وPerl، وAda، وRuby، وPython، على سبيل المثال لا الحصر.
تاريخياً، دعمت لغة جافا CORBA كجزء من مكتبتها القياسية ، في الحزمة org.omg.CORBA.*. وقد تم إيقاف هذه الميزة في جافا 9 وإزالتها في جافا 11. [ 11 ]
الاستقلال عن نظام التشغيل
صُممت CORBA لتكون مستقلة عن نظام التشغيل. تتوفر CORBA بلغة Java (مستقلة عن نظام التشغيل)، بالإضافة إلى توفرها بشكل أصلي لأنظمة Linux/Unix وWindows وSolaris وOS X وOpenVMS وHPUX وAndroid وLynxOS وVxWorks وThreadX وINTEGRITY وغيرها.
التحرر من التكنولوجيا
من أهم المزايا الضمنية لـ CORBA أنها توفر بيئة عمل محايدة للمهندسين لتمكينهم من توحيد واجهات الربط بين مختلف الأنظمة، سواءً كانت حديثة أو قديمة. عند دمج لغات البرمجة C وC++ وObject Pascal وJava وFortran وPython، وأي لغة أو نظام تشغيل آخر، في نموذج تصميم نظام متكامل، توفر CORBA الوسائل اللازمة لتحقيق تكافؤ الفرص، مما يسمح للفرق المختلفة بتطوير أنظمة واختبارات وحدات يمكن دمجها لاحقًا في نظام متكامل. هذا لا يُغني عن الحاجة إلى اتخاذ قرارات هندسية أساسية للنظام، مثل تعدد الخيوط، والتوقيت، ودورة حياة الكائنات، وما إلى ذلك. فهذه القضايا جزء لا يتجزأ من أي نظام بغض النظر عن التقنية المستخدمة. تتيح CORBA توحيد عناصر النظام في نموذج نظام متكامل واحد.
على سبيل المثال، يُصبح تصميم بنية متعددة الطبقات بسيطًا باستخدام Java Servlets في خادم الويب وخوادم CORBA المختلفة التي تحتوي على منطق الأعمال وتُغلف عمليات الوصول إلى قاعدة البيانات. يسمح هذا بتغيير تطبيقات منطق الأعمال، بينما يجب التعامل مع تغييرات الواجهة كما هو الحال في أي تقنية أخرى. فعلى سبيل المثال، يمكن تغيير مخطط قاعدة البيانات المُغلفة بواسطة خادم لتحسين استخدام القرص أو الأداء (أو حتى تغيير مُورّد قاعدة البيانات بالكامل)، دون التأثير على الواجهات الخارجية. في الوقت نفسه، يمكن لبرامج C++ القديمة التواصل مع برامج C/Fortran القديمة وبرامج قواعد بيانات Java، وتوفير البيانات لواجهة الويب.
كتابة البيانات
توفر CORBA مرونة في تحديد أنواع البيانات، مثل نوع البيانات "ANY". كما تفرض CORBA ترابطًا وثيقًا بين أنواع البيانات، مما يقلل من الأخطاء البشرية. في حالة تبادل أزواج الاسم والقيمة، من المحتمل أن يُرسل الخادم رقمًا بدلًا من سلسلة نصية. توفر لغة تعريف واجهة CORBA آلية لضمان توافق كود المستخدم مع أسماء الدوال، وقيم الإرجاع، وأنواع المعاملات، والاستثناءات.
قابلية عالية للتعديل
تتضمن العديد من التطبيقات (مثل ORBexpress (تطبيق Ada وC++ وJava) [ 12 ] وOmniORB (تطبيق مفتوح المصدر بلغة C++ وPython)) [ 13 ] خيارات لضبط ميزات إدارة الخيوط والاتصالات. ولا توفر جميع تطبيقات ORB نفس الميزات.
التحرر من تفاصيل نقل البيانات
عند التعامل مع الاتصالات والترابطات على مستوى منخفض، يوفر CORBA مستوى عالٍ من التفصيل في حالات الخطأ. يتم تحديد ذلك في مجموعة الاستثناءات القياسية الخاصة بـ CORBA ومجموعة الاستثناءات الموسعة الخاصة بالتنفيذ. من خلال هذه الاستثناءات، يمكن للتطبيق تحديد ما إذا كانت عملية الاستدعاء قد فشلت لأسباب مثل "مشكلة بسيطة، حاول مرة أخرى"، أو "الخادم معطل"، أو "المرجع غير منطقي". القاعدة العامة هي: عدم تلقي استثناء يعني أن استدعاء الدالة قد اكتمل بنجاح. هذه ميزة تصميم قوية للغاية.
ضغط
يُخزّن بروتوكول CORBA بياناته في شكل ثنائي ويدعم الضغط. وقد عملت كل من IONA وRemedy IT و Telefónica على تطوير إضافة لمعيار CORBA تُتيح الضغط. تُسمى هذه الإضافة ZIOP، وهي الآن معيار رسمي من OMG.
المشاكل والانتقادات
على الرغم من أن CORBA قدمت الكثير فيما يتعلق بطريقة كتابة التعليمات البرمجية وبناء البرامج، إلا أنها كانت موضع انتقاد. [ 14 ]
ينبع جزء كبير من الانتقادات الموجهة إلى معيار CORBA من سوء تطبيقه، وليس من قصور المعيار نفسه. ويعود بعض إخفاقات المعيار إلى آلية وضع مواصفات CORBA، والتنازلات التي فرضتها الاعتبارات السياسية والتجارية لكتابة معيار موحد، والذي استُخدمت فيه موارد من جهات تطبيق متنافسة.
عدم التوافق في التنفيذ الأولي
لم تحدد المواصفات الأولية لـ CORBA سوى لغة تعريف الواجهة (IDL)، وليس تنسيق البيانات المنقولة عبر الشبكة. هذا يعني أن توافق شفرة المصدر كان الأفضل المتاح لعدة سنوات. مع CORBA 2 والإصدارات اللاحقة، تم حل هذه المشكلة.
شفافية الموقع
تعرض مفهوم شفافية الموقع في CORBA لانتقادات؛ أي أن الكائنات الموجودة في نفس مساحة العناوين والتي يمكن الوصول إليها باستدعاء دالة بسيط تُعامل بنفس معاملة الكائنات الموجودة في مكان آخر (عمليات مختلفة على نفس الجهاز، أو أجهزة مختلفة). يُعد هذا عيبًا تصميميًا جوهريًا، [ 15 ] لأنه يجعل الوصول إلى جميع الكائنات معقدًا مثل الحالة الأكثر تعقيدًا (أي استدعاء شبكة عن بُعد مع فئة واسعة من حالات الفشل غير الممكنة في الاستدعاءات المحلية). كما أنه يُخفي الاختلافات الحتمية بين الفئتين، مما يجعل من المستحيل على التطبيقات اختيار استراتيجية استخدام مناسبة (أي استدعاء معسيتم استخدام زمن الاستجابة البالغ 1 ميكروثانية والعودة المضمونة بشكل مختلف تمامًا عن المكالمة مع زمن استجابة ثانية واحدة مع احتمال حدوث عطل في النقل، حيث تكون حالة التسليم غير معروفة وقد تستغرق وقتًا أطول.(30 ثانية حتى انتهاء المهلة).
أوجه القصور في التصميم والعمليات
كثيراً ما يُستشهد بإنشاء معيار CORBA بسبب عملية التصميم التي تمت بواسطة لجنة . لم تكن هناك آلية للفصل بين المقترحات المتضاربة أو لتحديد ترتيب أولويات المشكلات التي يجب معالجتها. وهكذا، تم إنشاء المعيار من خلال دمج الميزات في جميع المقترحات دون مراعاة ترابطها. [ 16 ] وقد جعل هذا الأمر المواصفات معقدة، ومكلفة التنفيذ بالكامل، وغالباً ما تكون غامضة.
أدت لجنة تصميم مؤلفة من مزيج من موردي التنفيذ والعملاء إلى تباين المصالح، مما صعّب وضع معيار متماسك. وقد ساهمت المعايير وقابلية التشغيل البيني في زيادة المنافسة وتسهيل انتقال العملاء بين تطبيقات بديلة. وأدى ذلك إلى صراعات سياسية حادة داخل اللجنة وإصدارات متكررة لمراجعات معيار CORBA، والتي حرص بعض مطوري ORB على جعل استخدامها صعبًا دون إضافات خاصة. [ 14 ] وشجع موردو CORBA الأقل التزامًا بأخلاقيات المهنة على تقييد العملاء، وحققوا نتائج قوية على المدى القصير. ومع مرور الوقت، استحوذ موردو ORB الذين يشجعون قابلية النقل على حصة أكبر من السوق.
مشاكل في التنفيذ
لطالما عانى معيار CORBA عبر تاريخه من أوجه قصور في تطبيقات ORB الضعيفة. وللأسف، فإن العديد من الأبحاث التي تنتقد CORBA كمعيار ما هي إلا انتقادات لتطبيق ORB سيئ للغاية في CORBA.
كوربا معيار شامل ذو خصائص متعددة. قلّما تحاول التطبيقات تطبيق جميع المواصفات، [ 16 ] وكانت التطبيقات الأولية غير مكتملة أو غير كافية. ولعدم وجود متطلبات لتقديم تطبيق مرجعي، كان للأعضاء حرية اقتراح خصائص لم تُختبر جدواها أو إمكانية تطبيقها. وقد زاد من صعوبة التطبيقات ميل المعيار العام إلى الإسهاب، والممارسة الشائعة المتمثلة في التنازل باعتماد مجموع المقترحات المقدمة، مما أدى في كثير من الأحيان إلى واجهات برمجة تطبيقات غير متماسكة وصعبة الاستخدام، حتى وإن كانت المقترحات الفردية منطقية تمامًا.
كان الحصول على تطبيقات قوية لبروتوكول CORBA صعبًا للغاية في الماضي، لكنه أصبح الآن أسهل بكثير. وقد وُجد أن بعض التطبيقات المصممة بشكل سيئ معقدة وبطيئة وغير متوافقة وغير مكتملة. بدأت تظهر نسخ تجارية قوية، لكنها باهظة الثمن. ومع توفر تطبيقات مجانية عالية الجودة، اختفت التطبيقات التجارية الرديئة سريعًا.
جدران الحماية
لا يرتبط بروتوكول CORBA (أو GIOP تحديدًا ) بأي وسيلة نقل بيانات محددة. ومن بين أنواع GIOP المتخصصة بروتوكول الإنترنت بين الحوسبة الموزعة (IIOP). يستخدم IIOP اتصالات TCP/IP مباشرة لنقل البيانات.
إذا كان العميل خلف جدار حماية شديد التقييد أو بيئة خادم وكيل شفاف لا تسمح إلا باتصالات HTTP الخارجية عبر المنفذ 80، فقد يكون الاتصال مستحيلاً، إلا إذا كان خادم الوكيل المعني يسمح أيضًا باتصالات HTTP CONNECT أو SOCKS . في السابق، كان من الصعب حتى إجبار التطبيقات على استخدام منفذ قياسي واحد، حيث كانت تميل إلى اختيار منافذ عشوائية متعددة. وحتى اليوم، لا تزال ORBs الحالية تعاني من هذه العيوب. ونظرًا لهذه الصعوبات، ازداد استخدام بعض المستخدمين لخدمات الويب بدلاً من CORBA. تتواصل هذه الخدمات باستخدام XML / SOAP عبر المنفذ 80، والذي يُترك عادةً مفتوحًا أو يُصفّى عبر وكيل HTTP داخل المؤسسة، لتصفح الويب عبر HTTP. مع ذلك، تدعم تطبيقات CORBA الحديثة SSL ويمكن تهيئتها بسهولة للعمل على منفذ واحد. كما تدعم بعض ORBS، مثل TAO وomniORB و JacORB ، بروتوكول GIOP ثنائي الاتجاه، مما يمنح CORBA ميزة استخدام اتصال رد الاتصال بدلاً من أسلوب الاستقصاء الذي يميز تطبيقات خدمات الويب. كما أن معظم جدران الحماية الحديثة تدعم GIOP و IIOP وبالتالي فهي جدران حماية متوافقة مع CORBA.
انظر أيضاً
تقنيات البرمجيات القائمة على المكونات
- البنية التحتية للغة المشتركة – مواصفات مفتوحة لبيئات التشغيل
- نموذج كائن المكون – تقنية مكونات البرمجيات من مايكروسوفت (COM)
- نموذج كائنات المكونات الموزعة - برنامج للتواصل بين مكونات البرامج (COM/DCOM الموزعة)
- بونوبو (جنوم) – إطار عمل مكونات قديم لبيئة سطح المكتب المجانية جنوم
- نموذج كائنات نظام IBM – إطار برمجة SOM وDSOM – أنظمة مكونة من IBM مستخدمة في OS/2 و AIX
- محرك اتصالات الإنترنت – إطار عمل لإجراءات الاتصال عن بعد (ICE)
- منصة جافا، إصدار المؤسسات - مجموعة من المواصفات التي توسع صفحات جافا SE التي تعرض أوصافًا مختصرة لأهداف إعادة التوجيه (جافا EE)
- استدعاء الأساليب عن بعد في جافا - واجهة برمجة تطبيقات جافا (Java RMI)
- استدعاء الإجراء عن بعد – آلية تسمح للبرامج بتنفيذ إجراء عن بعد (RPC)
- هندسة اتصالات البرمجيات – إطار عمل مفتوح لهندسة الراديو المعرف بالبرمجيات (SCA)
- SOAP – بروتوكول المراسلة لخدمات الويب
- محرك اتصالات الإنترنت – إطار عمل لإجراءات الاتصال عن بُعد
روابط اللغة
- واجهة التطبيق الثنائية - واجهة للبرمجيات مُعرَّفة من حيث الوصول إلى التعليمات البرمجية داخل العملية - ABI
- واجهة برمجة التطبيقات – اتصال بين أجهزة الكمبيوتر أو البرامج. صفحات تعرض أوصافًا مختصرة لأهداف إعادة التوجيه – واجهة برمجة التطبيقات
- اصطلاح الاستدعاء – آلية استدعاء الدوال في الحواسيب
- واجهة الوظائف الخارجية – واجهة لاستدعاء الوظائف من لغات برمجة أخرى
- ربط اللغات – واجهة تسمح للغة برمجة واحدة باستخدام مكتبة مكتوبة بلغة أخرى
مراجع
- ↑ هينينغ، ميتشي (1 أغسطس 2008). "صعود وسقوط كوربا" . اتصالات رابطة آلات الحوسبة . 51 (8). رابطة آلات الحوسبة : 52-57 . doi : 10.1145/1378704.1378718 .
- ↑ "تاريخ كوربا" . مجموعة إدارة الكائنات . تم الاطلاع عليه بتاريخ 12 مارس 2017 .
- ↑ "تاريخ كوربا" . مجموعة إدارة الكائنات . تم الاطلاع عليه في 4 يونيو 2017 .
- ↑ "إصدار OMG IDL Corba" . مجموعة إدارة الكائنات . تم الاطلاع عليه بتاريخ 4 ديسمبر 2023 .
- ↑ "نموذج مكونات كوربا" . مجلة دكتور دوبز . 1 سبتمبر 2004. تم الاطلاع عليه بتاريخ 13 مارس 2017 .
- ↑ انظر القسم 3.17.1، "تعريفات الاستثناء القياسي"، في الصفحة 3-52 والقسم 3.17.2، "رموز الاستثناء الثانوي القياسي"، في الصفحة 3-58.
- ↑ يمكن للبائعين طلب تخصيص معرفات VMCID عن طريق إرسال بريد إلكتروني إلى tagrequest
omg.org . - ↑ يمكن الاطلاع على قائمة بمعرفات VMCID المخصصة حاليًا على موقع OMG الإلكتروني على الرابط التالي: https://www.omg.org/cgi-bin/doc?vendor-tags
- ↑ القسم 3.17.1، "تعريفات الاستثناءات القياسية"، في الصفحة 3-52
- ↑ وسيط طلب الكائنات المشتركة: البنية والمواصفات (CORBA 2.3)
- ↑ "java.corba (Java SE 10 & JDK 10)" . docs.oracle.com . تم الاطلاع عليه بتاريخ 10 أكتوبر 2025 .
- ↑ "ORBexpress: نظرة عامة" .
- ↑ "omniORB: Free CORBA ORB" . تم الاطلاع عليه بتاريخ 10 أكتوبر 2024 .
- 1 2 تشابل، ديفيد (مايو 1998). "مشكلة مع كوربا" . davidchappel.com. مؤرشف من الأصل في 3 ديسمبر 2012. تم الاطلاع عليه في 10 أكتوبر 2024 .
- ↑ والدو، جيم؛ جيف واينت؛ آن وولراث؛ سام كيندال (نوفمبر 1994). "ملاحظة حول الحوسبة الموزعة" (ملف PDF) . مختبرات صن مايكروسيستم . مؤرشف (ملف PDF) من الأصل في 10 أكتوبر 2022. تم الاطلاع عليه في 10 أكتوبر 2024 .
- 1 2 هينينغ، ميتشي (30 يونيو 2006). "صعود وسقوط كوربا" . مجلة ACM Queue . 4 (5). رابطة آلات الحوسبة : 28-34 . doi : 10.1145/1142031.1142044 . S2CID 12103742 .
للمزيد من القراءة
- بولتون، فنتان (2001). كوربا نقية . سامز للنشر. رقم ISBN 0-672-31812-1.
- بروس، جيرالد؛ فوغل، أندرياس؛ دودي، كيث (25 يناير 2001). برمجة جافا باستخدام كوربا . جون وايلي وأولاده. ISBN 0-471-37681-7.
- هارمون، بول ؛ موريسي، ويليام (1996). كتاب دراسات حالة تكنولوجيا الكائنات . جون وايلي وأولاده. ISBN 0-471-14717-6.
- هارتمان، بريت؛ بيزنوسوف، هارتمان؛ فينوسكي، ستيف؛ فلين، دونالد (20 أبريل 2001). أمن المؤسسات باستخدام EJB وCORBA . جون وايلي وأولاده. ISBN 0-471-40131-5.
- هينينغ، ميتشي؛ فينوسكي، ستيف (1999). برمجة كوربا المتقدمة باستخدام لغة سي++ . أديسون-ويسلي. ISBN 0-201-37927-9.
- كورتهاوس، أكسل. شادر، مارتن؛ أليكسي ماركوس (22 يونيو 2005). تنفيذ الأنظمة الموزعة باستخدام Java وCORBA . سبرينغر. رقم ISBN 3-540-24173-6أُرشف من الأصل في 31 أكتوبر 2005. تم الاطلاع عليه في 23 يونيو 2005 .
- موبراي، توماس جيه؛ مالفو، رافائيل سي. (1997). أنماط تصميم كوربا . جون وايلي وأولاده. ISBN 0-471-15882-8.
- موبراي، توماس جيه؛ زهافي، رون (1995). أساسيات كوربا: تكامل الأنظمة باستخدام الكائنات الموزعة . جون وايلي وأولاده. ISBN 0-471-10611-9.
- أورفالي، روبرت (1996). الدليل الأساسي للبقاء على قيد الحياة في بيئة العميل/الخادم . جون وايلي وأولاده. ISBN 0-471-15325-7.
- أورفالي، روبرت؛ هاركي ، دان. إدواردز، جيري (1997). كوربا الفورية . جون وايلي وأولاده. رقم ISBN 0-471-18333-4.
- أورفالي، روبرت؛ هاركي، دان؛ إدواردز، جيري (1996). الدليل الأساسي للبقاء على قيد الحياة في بيئة الكائنات الموزعة . جون وايلي وأولاده. ISBN 0-471-12993-3.
- أورفالي، روبرت؛ هاركي، دان (1998). برمجة العميل/الخادم باستخدام جافا وكوربا . جون وايلي وأولاده. ISBN 0-471-24578-X.
- روزن، مايكل ؛ كورتيس، ديفيد (13 أكتوبر 1998). دمج تطبيقات CORBA وCOM . جون وايلي وأولاده. ISBN 0-471-19827-7.
- روزنبرغر، جيريمي ل. (1998). تعلم بنفسك كوربا في 14 يومًا . دار سامز للنشر. رقم ISBN 0-672-31208-5.
- شيتينو، جون. هوهمان، روبن س. أوهارا، ليز (1998). كوربا للدمى . العقول الجائعة. رقم ISBN 0-7645-0308-1.
- سيجل، جون (27 أبريل 2000). كوربا 3 - الأساسيات والبرمجة . جون وايلي وأولاده. ISBN 0-471-29518-3.
- سيجل، جون (7 مايو 2001). كويك كوربا 3. جون وايلي وأولاده. ISBN 0-471-38935-8.
- سلامة، ديرك؛ غاربيس، جيسون؛ راسل، بيري (1999). مؤسسة كوربا . برنتيس هول. ISBN 0-13-083963-9.
- زهافي، رون (2000). تكامل تطبيقات المؤسسات باستخدام كوربا: حلول قائمة على المكونات والويب . جون وايلي وأولاده. ISBN 0-471-32720-4.
روابط خارجية
- بنية وسيط طلب الكائنات المشتركة
- هندسة البرمجيات القائمة على المكونات
- جنوم
- التواصل بين العمليات
- معايير ISO
- البرمجة الكائنية التوجه
