كورباسكريبت

كورباسكريبت هي لغة برمجة نصية كائنية التوجه مصممة لدعم التفاعل مع كائنات بنية وسيط طلب الكائنات المشتركة ( CORBA ). وقد طُوّرت لتوفير بيئة برمجة نصية مرنة لتطوير تطبيقات CORBA من جانب العميل والخادم، مستفيدةً من إمكانيات الاستدعاء الديناميكي وانعكاس الواجهة.

كورباسكريبت هي لغة ديناميكية مُفسَّرة، يشبه تركيبها النحوي تركيب لغتي C++ وجافا . مع ذلك، فهي تُدمج العديد من عناصر التصميم من لغات ديناميكية مثل بايثون وسمول توك . ومثل تلك اللغات، تُعامل كورباسكريبت جميع القيم ككائنات، وتدعم التحقق الديناميكي من الأنواع أثناء التشغيل. يُترجم كود المصدر إلى شبه كود يُنفَّذ بواسطة آلة افتراضية كائنية التوجه مُخصصة، تتضمن جامع قمامة بسيطًا يعتمد على عد المراجع . [ 1 ]

سمات

الكتابة الأساسية

تتضمن CorbaScript ميزات البرمجة النصية النموذجية:

يتضمن وقت التشغيل جامع قمامة بسيط يعتمد على عد المراجع .

تكامل CORBA

تتكامل CorbaScript بشكل وثيق مع برمجيات CORBA الوسيطة وتوفر وصولاً كاملاً إلى كل من واجهة الاستدعاء الديناميكي (DII) وواجهة الهيكل العظمي الديناميكي (DSI):

  • استدعاء أي كائن CORBA عبر DII، مما يتيح برمجة عملاء CORBA.
  • تنفيذ كائنات CORBA عبر DSI، مما يسمح بكتابة الخوادم بلغة CorbaScript.
  • دعم كامل لأنواع البيانات المحددة بواسطة لغة تعريف واجهة OMG (IDL)، بما في ذلك الأنواع المعقدة مثل struct و union و sequence و array .
  • الوصول إلى معلمات الإدخال والإخراج والإخراج باستخدام واجهة برمجة تطبيقات CORBA DynAny .
  • يدعم التحقق من النوع عبر مستودع الواجهة ، مع التخزين المؤقت الاختياري لتحسين الأداء.
  • الوصول إلى بنية واجهات IDL من خلال البرمجة النصية للاكتشاف الديناميكي والتأمل .

التكامل المتقدم

يتضمن CorbaScript أيضًا إمكانيات إضافية تتجاوز البرمجة النصية الأساسية:

  • التحميل الديناميكي لمكتبات لغة C لدمج التعليمات البرمجية الأصلية.
  • دعم تجريبي للتفاعل مع آلة جافا الافتراضية .
  • بيئة تشغيل قابلة للتوسيع تسمح بتضمين وظائف جديدة في لغة C++ .

الوحدات

تتيح لغة CorbaScript لأي نص برمجي العمل كوحدة نمطية قابلة للاستيراد. تتضمن بعض الوحدات النمطية القياسية ما يلي:

  • LIBC: الوصول الديناميكي إلى وظائف مكتبة C القياسية.
  • الإدخال/الإخراج: دعم قراءة/كتابة الملفات الثنائية والنصية.
  • الرياضيات : العمليات الحسابية القياسية.
  • POSIX : استدعاءات نظام POSIX مثل system() و fork().
  • المقبس : دعم شبكات TCP/IP.
  • IOR: تخزين/استرجاع مبسط لمراجع كائنات CORBA (IORs).
  • NSTools و CosNamingImpl: أدوات وتنفيذ لإدارة خدمة تسمية CORBA .
  • shell: فئة أساسية لإنشاء برامج shell.
  • SMTP : تطبيق أساسي لبروتوكول SMTP.
  • الوقت : أدوات التاريخ والوقت.

المظاهرات

يتضمن توزيع CorbaScript عددًا من التطبيقات والأدوات النموذجية:

  • مرحباً: تطبيق "مرحباً بالعالم" الأساسي من نوع CORBA للعميل/الخادم.
  • calc: خدمة حاسبة بسيطة.
  • الدردشة: نظام دردشة يطبق أنماط تصميم المصنع والمراقب .
  • المكون: مكونات رد نداء العميل باستخدام الاتصالات الضمنية.
  • الحاسوب: خدمة الأعداد الأولية الموزعة.
  • الحدث: تنفيذ قناة الأحداث باستخدام خدمة أحداث OMG.
  • الشبكة: نمط المصنع لكائنات الشبكة.
  • ir: التنقل عبر مستودع واجهة CORBA.
  • مرتبط: عرض توضيحي لاستدعاء الكائنات بشكل متكرر.
  • التسمية: التكامل مع خدمة تسمية CORBA.
  • اختبار: أمثلة على أنواع الوسائط وطريقة تمريرها.
  • العامل: مثال على العميل والخادم باستخدام الاستدعاءات المؤجلة (غير المتزامنة) .
  • remote_cssh: واجهة محرك البرمجة النصية باستخدام OMG IDL والاستدعاء عن بعد المستند إلى shell.
  • العملية: الوصول إلى كائنات CORBA ونمط المصنع باستخدام عناوين URL .

أمثلة

مثال مرحباً

يوضح ما يلي كيفية استخدام CorbaScript للتفاعل مع كائن CORBA المحدد بواسطة واجهة OMG IDL التالية:

واجهة Hello { void hello (); void display ( in string message ); };

باستخدام CorbaScript، يمكنك استدعاء العمليات على كائن CORBA الذي ينفذ هذه الواجهة:

>>> # يشير المتغير `hello` إلى كائن CORBA `Hello`. >>> hello = Hello ( " IOR:...." ) >>> # استدعاء عملية 'hello' >>> hello.hello () >>> # استدعاء عملية 'display' >>> hello.display ( " Hello World! " )>>> # الحصول على خدمة تسمية CORBA >>> NS = CORBA.ORB.resolve_initial_references ( " NameService" ) >>> # حل اسم في خدمة تسمية CORBA >>> object = NS.resolve ( CosNaming.Name ( CosNaming.NameComponent ( " anHelloObject " , " " ) ) )>>> # صيغة أسهل مع تحويل التسلسل التلقائي >>> object = NS.resolve ([[ " anHelloObject " , "" ]])>>> # استدعاء العمليات على الكائن المُحلَّل >>> object.display ( "Hello World! " )

تتيح لغة CorbaScript استدعاء كائنات CORBA بسهولة وبشكل بديهي.

تنفيذ كائنات CORBA في CorbaScript

يوضح المثال التالي كيفية تنفيذ واجهة "Hello" في لغة CorbaScript:

# تعريف فئة نصية تُنفذ واجهة Hello class HelloImpl { # المُنشئ proc __HelloImpl__ ( self ) {}# تنفيذ عملية `hello` proc hello ( self ) { println ( "تم استدعاء عملية OMG IDL `hello`." ) }# تنفيذ عملية `display` proc display ( self , message ) { println ( message ) } }
>>> # إنشاء نسخة >>> hello = HelloImpl ()>>> # استدعاء محلي >>> hello . hello () يتم استدعاء عملية OMG IDL `hello`.>>> hello.display ( " Hello World!" ) Hello World !>>> # الاتصال بـ CORBA وتحديد الواجهة المُطبقة >>> CORBA.ORB.connect ( hello , Hello )>>> # تسجيل الكائن في خدمة تسمية CORBA >>> NS = CORBA.ORB.resolve_initial_references ( " NameService " ) >>> NS.bind ( [ [ " anHelloObject" , " " ]] , hello._this )

يوضح هذا المثال كيف تُبسط لغة CorbaScript استدعاء وتنفيذ كائنات CORBA. وتتوفر أمثلة إضافية، مثل واجهة برمجة تطبيقات خدمة تسمية CORBA وتنفيذ CORBA CosNaming، في حزمة توزيع CorbaScript.

التوافر

تم تنفيذ مترجم CorbaScript بلغة C++ وهو متاح على معظم أنظمة Unix الرئيسية وكذلك على نظام Windows .

مراجع

  1. ميزات كورباسكريبت ، corbaweb.lifl.fr (أرشيف 22 أبريل 2005)