كوربا (حاسوب)
نظرة عامة (مقدمة)

تعتبر كوربا CORBA تقنية في البرمجيات مستخدمة في تنظيم وتوحيد دلالية استدعاءات المناهج (الطرائق) method-call بين أغراض التطبيقات التي تقع في المجال العنواني نفسه للتطبيق أو تقع في مجال عنواني بعيد (أي عنوان المضيف نفسه، أو عنوان مضيف بعيد على شبكة ما). لقد تم إصدار النسخة 1.0 في شهر تشرين الأول أكتوبر من عام 1991 ميلادي.
تستخدم كوربا 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 ومكتوبة من أجل تلك اللغات.
تقتضي مواصفات كوربا وجود ORB كي يتمكن من خلاله التطبيق بالتعامل مع أغراض برمجية أخرى. في الواقع، يقوم التطبيق بإعطاء قيمة ابتدائية للـ ORB ويقوم بالنفاذ إلى وصيلة الغرض Object Adapter الذي يحافظ على بعض الأمور متل عداد المرجع وسياسات إنشاء الأغراض وسياسات فترة حياة الأغراض.. الخ.
يستخدم الـ Object Adapter لتسجيل الـ instances من الصفوف مولدة النص البرمجي generated code classes.
تعتبر الصفوف مولدة النص البرمجي Generated Code Classes على أنها نتيجة ترجمة الكود الخاص بـ IDL المستخدم الذي يقوم بتحويل تعاريف الواجهات عالية المستوى إلى أساس صفوف خاصة باللغة وخاصة بنظام التشغيل لكي يتم استخدامها في تطبيق المستخدم. وتعد هذه الخطوة ضرورية للتأكيد على دلالات ألفاظ الكوربا، كما وتعد ضرورية لتقديم عملية صحيحة للمستخدم للمواجهة مع البنية التحتية لكوربا.
هناك لغات مقابلات IDL تعتبر أكتر صعوبة من غيرها. على سبيل المثال طبيعة لغة البرمجة جافا تقتضي أن الـ IDL-Java Mapping سلس ويستفيد من كوربا بشكل بسيط في تطبيقات الجافا. بينما C++ Mapping لا تعتبر سهلة ولكنها مناسبة لجميع هيئات الكوربا مثل معالجة الاستثناءات Exception Handling. كما وأن C-mapping تعتبر أشد غرابة (لأنها ليست لغة برمجة غرضية التوجه) ولكنها منطقية وتعالج RPC semantics بشكل جيد. (لقد استبدلت Red Hat Linux و GNOME UI system الـ IPC المبني على كوربا بآخر هو DBus)
إن تحقيق التقابل بين لغات البرمجة يتطلب من المبرمج أن يكتب IDL code يمثل واجهة إلى الأغراض البرمجية الخاصة به. وعادةً هناك مترجم خاص مع كوربا هو IDL compiler يحول IDL code الذي كتبه المبرمج إلى نص برنامج مولد حسب لغة البرمجة المحددة. ومن ثم يقوم مترجم تقليدي بترجمة نص البرنامج المولد لإنشاء ملفات أغراض القابلة للربط لهذا التطبيق.
بعض مواصفات كوربا هي: أنماط المعطيات، الاستثناءات Exceptions، بروتوكولات الشبكة، الزمن المحدد للتواصل communication timeouts. على سبيل المثال: يتواجد في جهة الخادم عادةً Portable Object Adapter (POA) يقوم بتوجيه الطلبات اما إلى الخادم المحلي local servants أو يقوم بتوجيهها إلى خوادم أخرى وذلك لتحقيق موازنة الحمل.
بعض الأمور التي لا تهتم بها كوربا ولكنها موجودة في جميع الأنظمة الموزعة الأخرى هي: مدة حياة الغرض، التكرارية وتجاوز الأعطال، name semantics، إدارة الذاكرة، الموازنة الديناميكية للحمل، وفصل النماذج عن بعضها (اظهار، معطيات، تحكم).
إضافة لكون كوربا تقدم للمستخدم تقنية استدعاء الاجرائيات عن بعد بغض النظر عن البيئة، فهي أيضاً تعرّف بعض الخدمات الهامة مثل المناقلات transactions والأمان والأحداث والوقت وغيرها من نماذج الواجهات حسب المجال المحدد.