كوربا (حاسوب)

من ويكيبيديا، الموسوعة الحرة

(تم التحويل من كوبرا (حاسوب))
اذهب إلى: تصفح, بحث

CORBA هي كلمة اختصار لـCommon Object Request Broker Architecture وهي عبارة إنكليزية تعني باللغة العربية أسلوب البناء الوسيطي لطلب الأغراض العامة.

يعتبر أسلوب البناء الوسيطي لطلب الأغراض العامة CORBA معيار قياسي معرّف من قبل مجموعة إدارة الأغراض (بالإنكليزية: Object Management Group،‏ OMG). يخوّل هذا المعيار المكونات البرمجية (بالإنكليزية: Software components) المكتوبة بلغات حاسوبية مختلفة، والتي تعمل على أجهزة متعددة، يخولها بالعمل معا.

محتويات

[عدل] نظرة عامة (مقدمة)

تعتبر كوربا CORBA تقنية في البرمجيات مستخدمة في تنظيم وتوحيد دلالية استدعاءات المناهج (الطرائق) method-call بين أغراض التطبيقات التي تقع في المجال العنواني نفسه للتطبيق أو تقع قي مجال عنواني بعيد (أي عنوان المضيف نفسه، أو عنوان مضيف بعيد على شبكة ما). لقد تم اصدار النسخة 1.0 في شهر تشرين الأول أوكتوبر من عام 1991 ميلادي.

تستخدم كوربا CORBA لغة تعريف الواجهات Interface Definition Language IDL لتحديد الواجهات التي سوف تقدمها الأغراض البرمجية للعالم الخارجي outside world. عندئذ كوربا تؤمن الانتقال mapping من IDL لغة تعريف الواجهات إلى أي لغة برمجة خاصة بالتنفيذ implementation مثل لغة C++ أو لغة جافا. هناك ارتباط قياسي standard mapping لعدد من لغات البرمجة منها لغة آدا Ada و لغة C و لغة C++ و لغة Lisp و لغة Smalltalk و لغة جافا و لغة كوبول COBOL و لغة PL/L و لغة بايثون Python. كما و هناك ارتباطات غير قياسية non-standard mapping للغات أخرى مثل لغة بيرل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. على سبيل المثال: يتواجد في جهة المخدم Server عادةً Portable Object Adapter (POA) يقوم بتوجيه الطلبات اما إلى الخادم المحلي local servants او يقوم بتوجيهها إلى مخدمات أخرى servers و ذلك لتحقيق موازنة الحمل.

بعض الأمور التي لا تهتم بها كوربا و لكنها موجودة في جميع الأنظمة الموزعة الأخرى هي: مدة حياة الغرض، التكرارية و تجاوز الأعطال، name semantics، إدارة الذاكرة، الموازنة الديناميكية للحمل، وفصل النماذج عن بعضها (اظهار، معطيات، تحكم). إضافة لكون كوربا تقدم للمستخدم تقنية استدعاء الاجرائيات عن بعد بغض النظر عن البيئة، فهي أيضاً تعرّف بعض الخدمات الهامة مثل المناقلات transactions و الأمان و الأحداث و الوقت و غيرها من نماذج الواجهات حسب المجال المحدد.

[عدل] العلامة التجارية OMG

إن كلاً من كوربا CORBA و IIOPو OMG هي علامات تجارية مسجلة لمجموعة Object Management Group و يجب مراعاة ذلك عن استخدامها. أما GIOP فهي ليست علامة مسجلة لدى OMG لذلك يكفي القول أن التطبيق يستخدم بنية معتمدة على GIOP.

[عدل] المواضيع التي تهتم بها كوربا CORBA (أسلوب البناء الوسيطي لطلب الأغراض العامة)

[عدل] == الأغراض بواسطة المرجع ==

تستخدم الأغراض البرمجية في التطبيقات من خلال مرجع لها، ويمكن تحقيق هذا المرجع اما بعنوان نصي URI أو عن طريقة خدمة أسماء مشابهة لـ DNS أو تمريره كأحد المتحولات الممررة الاستدعاء. ان المراجع على الأغراض البرمجية تعتبر أغرض خفيفة مشابهة لواجهات أغراض الواقع (سواء كانت محلية أو عن بعد). إن استدعات الطرق البرمجية بواسطة المرجع Method calls on the reference تُنتِج استدعاءات متتالية لـ ORB كما و تحجب الـ thread بينما تنتظر اجابة: نجاح أم فشل. إن المتحولات الممررة قد تعيد معطيات و من ثم المعطيات المستثناة ترتب داخليا من قبل الـ ORB حسب تقابل لغة البرمجة المحددة و نظام التشغيل.

[عدل] == المعطيات بواسطة القيمة ==

تقدم لغة تعريف الواجهات الخاصة بـ CORBA تعريف inter-object communication مستقل عن لغة البرمجة و نظام التشغيل. إن أغراض كوربا تمرر بواسطة المرجع بينما المعطيات متل (integers, doubles, structs) تمرر بواسطة القيمة و هذا المزيج من الأغراض البرمجية الممررة بواسطة المرجع و المعطيات الممررة بواسطة القيمة تؤكّد على قوة data typing أثناء ترجمة الـ clients و الـ Servers، ومع ذلك تحمي الوراثة المرنة في CORBA problem-space.

[عدل] == الأغراض بواسطة القيمة Object By Value(OBV) ==

عرّفت كوربا و RMI-IIOP مفهوم OBV بعيداً عن الأغراض البرمجية البعيدة. إن النص البرمجي المكتوب في طرائق هذه الأغراض البرمجية بشكل افتراضي ينفذ محلياً. إذا كان الـ OBV قد وصل من مكان بعيد فإن النص البرمجي اللازم يجب أن يكون معروف سابقاً لدى كلا الطرفين أو يتم تحميله بشكل ديناميكي من المرسل، وللقيام بذلك يجب أن تتوفر التسجيلة التي تحوي الـ Code Base التي هي عبارة عن قائمة من عناوين URL مفصولة بفراغات، حيث يمكن تحميل النص البرمجي من تلك العناوين. كما ويمكن أن يوجد طرق عن بعد للـ OBV. قد يحوي الـ OBV حقول تنتقل عندما ينتقل الـOBV حيث أن هذه الحقول قد تكون OBV أيضاً مشكلة قوائم أو أشجار أو بنيان ما. إن OBV تتميز ببنية صفوف class hierarchy تتضمن الوراثة المتعددة و الصفوف المجردة.

[عدل] == نموذج مكونات كوربا CORBA Component Model (CCM) ==

إن CORBA Component Model (CCM) هو إضافة لمجموعة تعريفات كوربا. أول ظهور له كان في CORBA 3 كما و أنه يوصّف اطار عمل framework للتطبيقات قياسي لـ CORBA Component. بالرغم من أنه لا يعتمد على Enterprise Java Beans (EJB) التي هي مستقلة عن لغة البرمجة، الا و أنه أكثر عمومية من EJB لأنه يقدم أربع أنواع من الـcomponents بدلاً من 2 التي تعرّفها EJB. كما و أنه يعرّف تجرّد من الأشياء entities التي يمكن أن تقدم و تقبل خدمات من خلال واجهات اسمية معرفة جيداً تدعى ports. لدى CCM حاوٍ للمكونات component container لكي تُنشَر المكونات البرمجية فيه. ان هذا الحاوي يقدّم مجموعة من الخدمات للمكونات. بعض هذه الخدمات هي التنبيه و التوثيق authentication و الاستمرارية و إدارة المناقلات. وهذه الخدمات هي أكثر الخدمات التي تطلبها النظم الموزعة، ومن خلال نقل التحقيق لهذه الخدمات من المكونات البرمجية إلى حاوِ المكونات ينخفض تعقيد المكونات components بشكل كبير. 2-5- بروتوكول InterORB العام (General InterORB Protocol( GIOP يعتبر GIOP بروتوكول مجرد تتخاطب من خلاله الـ ORB مع بعضها البعض. المعايير القياسية المرتبطة بهذا البروتوكول متبناة من قبل مجموعة OMG. إن بنية GIOP تقدم بعض البروتوكولات متل:

  • Internet InterORB Protocol (IIOP) وهو تحقيق لـ GIOP يستخدم في الانترنت و يقدم تقابل بين رسائل GIOP و TCP/IP layer.
  • SSL InterORB Protocol (SSLIOP) وهو IIOP فوق SSL و يقدم ترميز encryption و توثيق Authentication.
  • HyperText InterORB Protocol (HTIOP) وهو IIOP فوق HTTP و يقدم بروكسي شفاف جانبي.
  • و غيرها العديد..

[عدل] == VMCID (Vendor Minor Codeset ID) ==

كل استثناء قياسي في كوربا يتضمن رقم ثانوي لتحديد نوع الاستثناء exception، رقم الاسثناء يتألف من رقم موجب مؤلف من 20 بت و يسمىVMCID (Vendor Minor Codeset ID) وهي الـ 20 بت العليا بالإضافة إلى 12 بت أخرى هي الرقم الثانوي. رقم VMCID في المجال بين 0 و 0xfffff محجوز للتجارب و الرقم VMCID OMGVMCID و 1 إلى 0xf محجوز لاستخدامات مجموعة OMG أما غيرها فهو متاح للشركات المصنّعة.

[عدل] == Corba Location (CorbaLoc) ==

هو مرجع نصي لأغراض كوربا يشبه URL. مثال عن corbaloc هو:

corbaloc::160.45.110.41:38693/StandardNS/NameServer-POA/_root

يجب على كل منتجات كوربا أن تدعم “corbaloc:”و “corbaname:” و يمكنها أن تدعم أي من “http:”, “ftp:”, “file:”. المزايا

- الاستقلال عن لغة البرمجة.

- الاستقلال عن نظام التشغيل.

- التحرر من التقنية، حيث تسمح كوربا للمهندسين باستنظام الواجهات بين النظم الجديدة و النظم القديمة وتؤمن وسائل تسمح للمبرمجين ببرمجة نظم متفاوتة ومن ثم دمجها معا لتكوين نظام متماسك بغض النظر عن التقنية المستخدمة.

- قوة في أنماط المعطيات، حيث تسمح كوربا بأي نمظ للمعطيات تقريبا كما و أن CORBA IDL تقدم تقنية تؤكد أن نص البرنامج المكتوب متوافق مع أنماط التوابع و أسماؤها و أنماط المتحولات الممررة و الاسثناءات و غيرها..

- قدرة عالية على تحقيق التوافقية.

- التحرر من تفاصيل نقل المعطيات.

[عدل] المساويء و المشكلات و الانتقادات

- شفافية الموقع، حيث أن الأغراض البرمجية الموجودة في المجال العنواني ذاته و التي يمكن الوصول اليها من خلال استدعاء بسيط تُعامَل ذات معاملة الأغراض البرمجية البعيدة، مما يؤدي إلى تعقيد الاستدعاءات و خاصة اذا كان معظم الأغراض البرمجية المطلوبة موجودة محلياً.

- النقص في التصميم، لم يكن هناك تنظيم للعروض المختلفة المقدمة و لم يتم تنسيق المشاكل لمعالجتها و مع ذلك تم اصدار المعايير القياسية مما أدى لتعقيد المواصفات و صعوبة تنفيذها و في بعض الأحيان كانت غامضة. كما و أدى ظهور بعض الخلافات في اللجنة المصممة إلى ظهور طبعات منقّحة من معايير كوربا كانت مستحيلة التنفيذ دون وجود اضافات خاصة لها.

- مشكلات في التنفيذ و التحقيق، غالباً كانت النسخ المحققة قليلة أو غير كاملة أو غير كافية. على الرغم من أن النسخ المحققة جيداً من كوربا كان صعب الحصول عليها سابقاً الا أن SUN Java SDK يأتي معها كوربا ضمنياً. كما و أن هناك بعض النسخ المحققة من كوربا قد تكون معقدة أو بطيئة أو غير متوافقة أو عير كاملة.

- الجدار الناري Firewalls، كوربا و بالتحديد IIOP تستخدم اتصال TCP/IP خام لنقل المعطيات، فإذا كان الزبون client موجود خلف بيئة firewall أو transparent proxy server قوية تسمح فقط بتمرير HTTP connections عبر الميناء 80، عندئذ التواصل سيكون مستحيل إلا إذا أعطى مخدم البروكسي المطلوب السماحية لـ HTTP CONNECT method أو SOCKS connections .

لقد كان من الصعب اجبار التحقيق على استخدام port قياسي واحد فقد كان يتم اختيار عدد من الـ ports بشكل عشوائي، وللآن الـ ORBs لديهم هذه العلة. بسبب هذه الصعوبات ازداد عدد المستخدمين الذين لجئو لاستخدام خدمات الويب web services بدلا من استخدام كوربا CORBA حيث تتواصل باستخدام XML/SOAP على الميناء 80 الذي يُترَك مفتوح عادةً. بعض النسخ الحديثة المحققة من كوربا تدعم SSL ويمكن إعدادها بسهولة لتعمل على رقم ميناء port واحد فقط.

ومن أشهر الـ ORBS المفتوحة المصدر مثل TAO و JacORB تدعم GIOP باتجاهين مما يعطي كوربا ميزة القدرة على اتصالات استعمال الاستدعاء الرجعي callback communication بدلا من صفة polling approach الموجودة في خدمات الويب.

كما أنه أصبح هناك عدد من الـ CORBA-friendly firewalls الصديقة لكوربا متوفرة في السوق.

- لا وجود للضغط compression، إن كوربا ترتب معطياتها على شكل معطيات ثنائية (صفر و واحد) و لكنها لا تستخدم أي ضغط. و حالياً شركات IONA/Remedy IT/Telefonica يعملون على إنشاء إضافة لمعيار كوربا القياسي يسمح بتحقيق الضغط و تسمى هذه الإضافة بـ ZIOP و سوف يقدم به طلب رسمي لمجموعة OMG في اجتماعها القادم.

- تجاهل التعامل مع الـ threads.

- لا يوجد تقابل للغات برمجة متل C# حيث أن كوربا تجاهلت .Net.

وغيرها العديد من المشكلات التي أدت إلى تراجع أهمية كوربا مع الزمن، و أيضاً من أسباب اندثار كوربا هو ظهور منافسة لها من قبل عدد من التقنيات مثل DCOM التابعة لشركة مايكروسوفت و EJB و خدمات الويب Web Services.

[عدل] OpenCCM (Open CORBA Component Model)

يعتبر OpenCCM أول تحقيق عام و مفتوح المصدر لمواصفات CORBA Component Model المعرّفة حسب مجموعة Object Management Group (OMG). يسمح OpenCCM بتصميم و تحقيق و ترجمة و ترزيم و تجميع و نشر وتنصيب واعداد وتنفيذ و إدارة و انشاء تطبيقات موزعة تعتمد على مكونات كوربا CORBA Component. يعتبر OpenCCM مشروع مجاني و مفتوح المصدر معرّف تحت رخصة جنو LGPL و مستضاف من قبل Object Web Constium.

يعتمد OpenCCM على جافا مما يسمح له بالعمل على عدة منصات كما و يعمل على منتجات كوربا التالية:

  • Borland Enterprise Server (BES)
  • JacORB
  • ORBacus
  • The Community OpenORB

كما و يعمل OpenCCM تقريبا على كل أنظمة التشغيل مثل:

  • Linux
  • Linux Familiar
  • MacOS X
  • Solaris
  • Windows NT/2000/XP
  • Windows NT/2000/XP with CYGWIN
  • Windows CE for Personal Data Assistants (PDA)

ولازال OpenCCM قيد التطوير حيث أنه لا يتمتع بجميع ميزات CCM المعروفة.

أدوات شخصية