كوربا (حاسوب)
المحتويات
في البداية، CORBA هي كلمة اختصار لـCommon Object Request Broker Architecture وهي عبارة إنكليزية تعني باللغة العربية أسلوب البناء الوسيطي لطلب الأغراض العامة. وفيما يلي تفاصيل أوسع عن ذلك.
ومن ناحية أخرى، يستعمل الـ Object Adapter لتسجيل الـ instances من الصفوف مولدة النص البرمجي generated code classes.
نظرة عامة (مقدمة)
علاوةً على ذلك، بعض مواصفات كوربا هي: أنماط المعطيات، الاستثناءات Exceptions، بروتوكولات الشبكة، الزمن المحدد للتواصل communication timeouts. مثلًا: يتواجد في جهة الخادم عادةً Portable Object Adapter (POA) يقوم بتوجيه الطلبات اما إلى الخادم المحلي local servants أو يقوم بتوجيهها إلى خوادم أخرى وذلك لتحقيق موازنة الحمل.
في هذا الإطار، بعض الأمور التي لا تهتم بها كوربا ولكنها موجودة في جميع الأنظمة الموزعة الأخرى هي: مدة حياة الغرض، التكرارية وتجاوز الأعطال، name semantics، إدارة الذاكرة، الموازنة الديناميكية للحمل، وفصل النماذج عن بعضها (اظهار، معطيات، تحكم).
من جانب آخر، تعتبر الصفوف مولدة النص البرمجي Generated Code Classes على أنها نتيجة ترجمة الكود الخاص بـ IDL المستعمل الذي يقوم بتحويل تعاريف الواجهات عالية المستوى إلى أساس صفوف خاصة باللغة وخاصة بنظام التشغيل لكي يتم استخدامها في تطبيق المستعمل. وتعد هذه الخطوة ضرورية للتأكيد على دلالات ألفاظ الكوربا، كما وتعد ضرورية لتقديم عملية صحيحة للمستعمل للمواجهة مع البنية التحتية لكوربا.
ومن ناحية أخرى، تقتضي مواصفات كوربا وجود ORB كي يتمكن من خلاله التطبيق بالتعامل مع أغراض برمجية أخرى. في الواقع، يقوم التطبيق بإعطاء قيمة ابتدائية للـ ORB ويقوم بالنفاذ إلى وصيلة الغرض Object Adapter الذي يحافظ على بعض الأمور متل عداد المرجع وسياسات إنشاء الأغراض وسياسات فترة حياة الأغراض.. الخ.
وفي هذا السياق، يعتبر أسلوب البناء الوسيطي لطلب الأغراض العامة CORBA معيار قياسي معرّف من قبل مجموعة إدارة الأغراض (. يخوّل هذا المعيار المكونات البرمجية المكتوبة بلغات حاسوبية مختلفة، والتي تعمل على أجهزة متعددة، يخولها بالعمل معا.
وفي هذا السياق، هناك لغات مقابلات IDL تعتبر أكتر صعوبة من غيرها. مثلًا طبيعة لغة البرمجة جافا تقتضي أن الـ IDL-Java Mapping سلس ويستفيد من كوربا بشكل بسيط في تطبيقات الجافا. بينما C++ Mapping لا تعتبر سهلة ولكنها مناسبة لجميع هيئات الكوربا مثل معالجة الاستثناءات Exception Handling. كما وأن C-mapping تعتبر أشد غرابة (لأنها ليست لغة برمجة غرضية التوجه) ولكنها منطقية وتعالج RPC semantics بشكل جيد. (لقد استبدلت Red Hat Linux و GNOME UI system الـ IPC المبني على كوربا بآخر هو DBus)
وعلى صعيد آخر، تستعمل كوربا CORBA لغة تعريف الواجهات Interface Definition Language) IDL) لتحديد الواجهات التي سوف تقدمها الأغراض البرمجية للعالم الخارجي. عندئذ كوربا تؤمن الانتقال من لغة تعريف الواجهات IDL إلى أي لغة برمجة خاصة بالتنفيذ مثل لغة C++ أو لغة جافا. هناك ارتباط قياسي لعدد من لغات البرمجة منها لغة آدا Ada ولغة C ولغة C++ ولغة Lisp ولغة Smalltalk ولغة جافا ولغة كوبول COBOL ولغة PL/L ولغة بايثون Python. كما وهناك ارتباطات غير قياسية للغات أخرى مثل لغة بيرلPerl ولغة فيجوال بيسك Visual Basic ولغة Rubyروبي ولغة Erlang ولغة Tcl منجزة من خلال الوسائط لطلب الأغراض العامة ORBs Object Request Brokers ومكتوبة من أجل تلك اللغات.
وفي السياق ذاته، إضافة لكون كوربا تقدم للمستعمل تقنية استدعاء الاجرائيات عن بعد بغض النظر عن البيئة، فهي كذلك تعرّف بعض الخدمات الهامة مثل المناقلات transactions والأمان والأحداث والوقت وغيرها من نماذج الواجهات حسب المجال المحدد.
ومن جهة أخرى، إن تحقيق التقابل بين لغات البرمجة يتطلب من المبرمج أن يكتب IDL code يمثل واجهة إلى الأغراض البرمجية الخاصة به. وعادةً هناك مترجم خاص مع كوربا هو IDL compiler يحول IDL code الذي كتبه المبرمج إلى نص برنامج مولد حسب لغة البرمجة المحددة. ومن ثم يقوم مترجم تقليدي بترجمة نص البرنامج المولد لإنشاء ملفات أغراض القابلة للربط لهذا التطبيق.
من جهة ثانية، تعتبر كوربا CORBA تقنية في البرمجيات مستعملة في تنظيم وتوحيد دلالية استدعاءات المناهج (الطرائق) method-call بين أغراض التطبيقات التي تقع في المجال العنواني نفسه للتطبيق أو تقع في مجال عنواني بعيد (أي عنوان المضيف نفسه، أو عنوان مضيف بعيد على شبكة ما). لقد تم إصدار النسخة 1.0 في شهر تشرين الأول أكتوبر من عام 1991 ميلادي.
المزايا
- الاستقلال عن لغة البرمجة.
وفي السياق ذاته، - قوة في أنماط المعطيات، حيث تسمح كوربا بأي نمظ للمعطيات على وجه التقريب كما وأن CORBA IDL تقدم تقنية تؤكد أن نص البرنامج المكتوب متوافق مع أنماط التوابع وأسماؤها وأنماط المتحولات الممررة والاسثناءات وغيرها..
وفي هذا السياق، - التحرر من التقنية، حيث تسمح كوربا للمهندسين باستنظام الواجهات بين النظم الجديدة والنظم القديمة وتؤمن وسائل تسمح للمبرمجين ببرمجة نظم متفاوتة ومن ثم دمجها معا لتكوين نظام متماسك بغض النظر عن التقنية المستعملة.
- قدرة عالية على تحقيق التوافقية.
- التحرر من تفاصيل نقل المعطيات.
- الاستقلال عن نظام التشغيل.
العلامة التجارية OMG
ومن ناحية أخرى، المواضيع التي تهتم بها كوربا CORBA (أسلوب البناء الوسيطي لطلب الأغراض العامة)
ومن ناحية أخرى، إن كلاً من كوربا CORBA و IIOPو OMG هي علامات تجارية مسجلة لمجموعة Object Management Group ويجب مراعاة ذلك عن استخدامها. أما GIOP فهي ليست علامة مسجلة لدى OMG لذلك يكفي القول أن التطبيق يستعمل بنية معتمدة على GIOP.
المساويء والمشكلات والانتقادات
وفي السياق ذاته، - النقص في التصميم، لم يكن هناك تنظيم للعروض المختلفة المقدمة ولم يتم تنسيق المشاكل لمعالجتها ومع ذلك تم إصدار المعايير القياسية مما أدى لتعقيد المواصفات وصعوبة تنفيذها وفي بعض الأحيان كانت غامضة. كما وأدى ظهور بعض الخلافات في اللجنة المصممة إلى ظهور طبعات منقّحة من معايير كوربا كانت مستحيلة التنفيذ دون وجود اضافات خاصة لها.
- تجاهل التعامل مع الـ threads.
OpenCCM (Open CORBA Component Model)
إضافةً إلى ذلك، وغيرها الكثير من المشكلات التي أدت إلى تراجع أهمية كوربا مع الزمن، وأيضاً من أسباب اندثار كوربا هو ظهور منافسة لها من قبل عدد من التقنيات مثل DCOM التابعة لشركة مايكروسوفت و EJB وخدمات الويب Web Services.
في هذا الإطار، - شفافية الموقع، حيث أن الأغراض البرمجية الموجودة في المجال العنواني ذاته والتي يمكن الوصول إليها من خلال استدعاء بسيط تُعامَل ذات معاملة الأغراض البرمجية البعيدة، مما يؤدي إلى تعقيد الاستدعاءات وخاصة إذا كان أغلب الأغراض البرمجية المطلوبة موجودة محلياً.
إضافةً إلى ذلك، ومن أشهر الـ ORBS المفتوحة المصدر مثل TAO و JacORB تدعم GIOP باتجاهين مما يعطي كوربا ميزة القدرة على اتصالات استعمال الاستدعاء الرجعي callback communication بدلا من صفة polling approach الموجودة في خدمات الويب.
في هذا الإطار، يعتبر OpenCCM أول تحقيق عام ومفتوح المصدر لمواصفات CORBA Component Model المعرّفة حسب مجموعة Object Management Group (OMG). يسمح OpenCCM بتصميم وتحقيق وترجمة وترزيم وتجميع ونشر وتنصيب واعداد وتنفيذ وإدارة وإنشاء تطبيقات موزعة تعتمد على مكونات كوربا CORBA Component. يعتبر OpenCCM مشروع حر ومفتوح المصدر معرّف تحت رخصة جنو LGPL ومستضاف من قبل Object Web Constium.
إضافةً إلى ذلك، - مشكلات في التنفيذ والتحقيق، غالباً كانت النسخ المحققة قليلة أو غير كاملة أو غير كافية. على الرغم من أن النسخ المحققة جيداً من كوربا كان صعب الحصول عليها سابقاً إلا أن SUN Java SDK يأتي معها كوربا ضمنياً. كما وأن هناك بعض النسخ المحققة من كوربا قد تكون معقدة أو بطيئة أو غير متوافقة أو عير كاملة.
وفي السياق ذاته، - لا وجود للضغط compression، إن كوربا ترتب معطياتها على شكل معطيات ثنائية (صفر وواحد) ولكنها لا تستعمل أي ضغط. وفي الوقت الحالي شركات IONA/Remedy IT/Telefonica يعملون على إنشاء إضافة لمعيار كوربا القياسي يسمح بتحقيق الضغط وتسمى هذه الإضافة بـ ZIOP وسوف يقدم به طلب رسمي لمجموعة OMG في اجتماعها القادم.
وفي السياق ذاته، لقد كان من الصعب اجبار التحقيق على استخدام port قياسي واحد فقد كان يتم اختيار عدد من الـ ports بشكل عشوائي، وللآن الـ ORBs لديهم هذه العلة. بسبب هذه الصعوبات ازداد عدد المستعملين الذين لجئو لاستخدام خدمات الويب web services بدلا من استخدام كوربا CORBA حيث تتواصل باستخدام XML/SOAP على الميناء 80 الذي يُترَك مفتوح عادةً. بعض النسخ الحديثة المحققة من كوربا تدعم SSL ويمكن إعدادها بسهولة لتعمل على رقم ميناء port واحد فقط.
- لا يوجد تقابل للغات برمجة متل C# حيث أن كوربا تجاهلت.Net.
علاوةً على ذلك، - الجدار الناري Firewalls، كوربا وبالتحديد IIOP تستعمل اتصال TCP/IP خام لنقل المعطيات، فإذا كان الزبون client موجود خلف بيئة firewall أو transparent proxy server قوية تسمح فقط بتمرير HTTP connections عبر الميناء 80، عندئذ التواصل سيكون مستحيل إلا إذا أعطى مخدم البروكسي المطلوب السماحية لـ HTTP CONNECT method أو SOCKS connections.
في هذا الإطار، يعتمد OpenCCM على جافا مما يسمح له بالعمل على عدة منصات كما ويعمل على منتجات كوربا التالية:
إضافةً إلى ذلك، كما أنه أصبح هناك عدد من الـ CORBA-friendly firewalls الصديقة لكوربا متوفرة في السوق.
- Borland Enterprise Server (BES)
- JacORB
- ORBacus
The Community OpenORB
- كما ويعمل OpenCCM على وجه التقريب على كل أنظمة التشغيل مثل:
- Linux
- Linux Familiar
- MacOS X
- Solaris
- Windows NT/2000/XP
المعطيات بواسطة القيمة
وفي هذا الصدد، 2-5- بروتوكول InterORB العام (General InterORB Protocol(GIOP
من جانب آخر، يعتبر GIOP بروتوكول مجرد تتخاطب من خلاله الـ ORB مع بعضها البعض. المعايير القياسية المرتبطة بهذا البروتوكول متبناة من قبل مجموعة OMG. إن بنية GIOP تقدم بعض البروتوكولات متل:
وفي هذا السياق، إن CORBA Component Model (CCM) هو إضافة لمجموعة تعريفات كوربا. أول ظهور له كان في CORBA 3 كما وأنه يوصّف اطار عمل framework للتطبيقات قياسي لـ CORBA Component. بالرغم من أنه لا يعتمد على Enterprise Java Beans (EJB) التي هي مستقلة عن لغة البرمجة، الا وأنه أكثر عمومية من EJB لأنه يقدم أربع أنواع من الـcomponents بدلاً من 2 التي تعرّفها EJB. كما وأنه يعرّف تجرّد من الأشياء entities التي يمكن أن تقدم وتقبل خدمات من خلال واجهات اسمية معرفة جيداً تدعى ports.
الأغراض بواسطة القيمة Object By Value(OBV)
نموذج مكونات كوربا CORBA Component Model (CCM)
- HyperText InterORB Protocol (HTIOP) وهو IIOP فوق HTTP ويقدم بروكسي شفاف جانبي.
- و غيرها العديد..
- VMCID (Vendor Minor Codeset ID)
كذلك، رقم VMCID في المجال بين 0 و 0xfffff محجوز للتجارب والرقم VMCID OMGVMCID و 1 إلى 0xf محجوز لاستخدامات مجموعة OMG أما غيرها فهو متاح للشركات المصنّعة.
إضافةً إلى ذلك، Internet InterORB Protocol (IIOP) وهو تحقيق لـ GIOP يستعمل في الإنترنت ويقدم تقابل بين رسائل GIOP و TCP/IP layer.
إضافةً إلى ذلك، عرّفت كوربا و RMI-IIOP مفهوم OBV بعيداً عن الأغراض البرمجية البعيدة. إن النص البرمجي المكتوب في طرائق هذه الأغراض البرمجية بشكل افتراضي ينفذ محلياً. إذا كان الـ OBV قد وصل من مكان بعيد فإن النص البرمجي اللازم يجب أن يكون معروف سابقاً لدى كلا الطرفين أو يتم تحميله بشكل ديناميكي من المرسل، وللقيام بذلك يجب أن تتوفر التسجيلة التي تحوي الـ Code Base التي هي عبارة عن قائمة من عناوين URL مفصولة بفراغات، حيث يمكن تحميل النص البرمجي من تلك العناوين. كما ويمكن أن يوجد طرق عن بعد للـ OBV. قد يحوي الـ OBV حقول تنتقل عندما ينتقل الـOBV حيث أن هذه الحقول قد تكون OBV كذلك مشكلة قوائم أو أشجار أو بنيان ما. إن OBV تتميز ببنية صفوف class hierarchy تتضمن الوراثة المتعددة والصفوف المجردة.
- Corba Location (CorbaLoc)
- هو مرجع نصي لأغراض كوربا يشبه URL. مثال عن corbaloc هو:
- corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_root
علاوةً على ذلك، كل استثناء قياسي في كوربا يتضمن رقم ثانوي لتحديد نوع الاستثناء exception، رقم الاسثناء يتألف من رقم موجب مؤلف من 20 بت ويسمىVMCID (Vendor Minor Codeset ID) وهي الـ 20 بت العليا إلى جانب 12 بت أخرى هي الرقم الثانوي.
إضافةً إلى ذلك، لدى CCM حاوٍ للمكونات component container لكي تُنشَر المكونات البرمجية فيه. ان هذا الحاوي يقدّم مجموعة من الخدمات للمكونات. بعض هذه الخدمات هي التنبيه والتوثيق authentication والاستمرارية وإدارة المناقلات. وهذه الخدمات هي أكثر الخدمات التي تطلبها النظم الموزعة، ومن خلال نقل التحقيق لهذه الخدمات من المكونات البرمجية إلى حاوِ المكونات ينخفض تعقيد المكونات components بدرجة كبيرة.
وعلى صعيد آخر، يجب على كل منتجات كوربا أن تدعم “corbaloc:”و “corbaname:” ويمكنها أن تدعم أي من “http:”, “ftp:”, “ملف:”.
وعلى صعيد آخر، SSL InterORB Protocol (SSLIOP) وهو IIOP فوق SSL ويقدم ترميز encryption وتوثيق Authentication.
علاوةً على ذلك، تقدم لغة تعريف الواجهات الخاصة بـ CORBA تعريف inter-object communication مستقل عن لغة البرمجة ونظام التشغيل. إن أغراض كوربا تمرر بواسطة المرجع بينما المعطيات متل (integers, doubles, structs) تمرر بواسطة القيمة وهذا المزيج من الأغراض البرمجية الممررة بواسطة المرجع والمعطيات الممررة بواسطة القيمة تؤكّد على قوة data typing أثناء ترجمة الـ clients والـ Servers، ومع ذلك تحمي الوراثة المرنة في CORBA problem-space.
الأغراض بواسطة المرجع
وفي هذا السياق، تستعمل الأغراض البرمجية في التطبيقات من خلال مرجع لها، ويمكن تحقيق هذا المرجع اما بعنوان نصي URI أو عن طريقة خدمة أسماء مشابهة لـ DNS أو تمريره كأحد المتحولات الممررة الاستدعاء. ان المراجع على الأغراض البرمجية تعتبر أغرض خفيفة مشابهة لواجهات أغراض الواقع (سواء كانت محلية أو عن بعد). إن استدعات الطرق البرمجية بواسطة المرجع Method calls on the reference تُنتِج استدعاءات متتالية لـ ORB كما وتحجب الـ thread بينما تنتظر اجابة: نجاح أم فشل. إن المتحولات الممررة قد تعيد معطيات ومن ثم المعطيات المستثناة ترتب داخليا من قبل الـ ORB حسب تقابل لغة البرمجة المحددة ونظام التشغيل.
Windows NT/2000/XP with CYGWIN
Windows CE for Personal Data Assistants (PDA)
إضافةً إلى ذلك، ولا زال OpenCCM قيد التطوير حيث أنه لا يتمتع بجميع ميزات CCM المعروفة.
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟