Corba 1
Corba 1
CORBAس رنام واژهه اي Common Object Request Broker Architectureاس تانداردي ب راي نرمافزاره اي تركي بي (
)componentryاس ت ك ه توس ط ش ركت )object managementgroup) OMGط راحي ش ده و پش تيباني ميگ ردد .اين
استاندارد ،APIپروتكلهاي رابطهاي ومدلهاي اطالعاتي object/serviceرا تعريف ميكند كه ميتواند نرمافزارهاي ن اهمگون
(نوش ته ش ده ب ه زبانه اي متف اوت) را ب ه هم مرتبطس ازد .بن ابراين ب ا اس تفاده از CORBAميت وانيم ازش ي( )objectدر
پلتفرمهاي توزيعيافته( ،)distributedبه صورت مشترك استفاده كنيم؛ ب دون نگ راني از اين ك ه ش ي در چ ه م وقعيت مك اني
قرارگرفته يا به چه پلتفرمي متعلق است CORBA .ميتواند كدهاي نوشته شده (در برخي زبانهاي برنامهنويس ي) را بس ته
بندي و به آن اطالعاتي از قبيل توانايي اجرايي كدها و چگونگي اجراي آنها را اض افه نماي د .بهط وري ك ه اين ك دهاي بس ته
بنديشده (يا شيها) بتوانند از برنامههاي ديگر (يا حتي شيهاي )CORBAكه تحت شبكه ق رار دارن د ،اج را ش ودCORBA .
براي تعيينكردن اينترفيسهايي كه به ديگران ارائه ميكند ،از ي ك زب ان رابطهاي ب ه ن ام IDLاس تفاده ميكن د و از طري ق اين
زبان ميتواند كدهاي اجرايي (مثال جاوا يا )C++را بشناسد .امروزه ميتوان زبانه اي مع روفي مث لج اواSmalltalk ،C++ ،
،،Pythonآدا ،سي و ليس پ را ب ا اس تفاده از اين زب ان( )IDLب ه هم مرتب ط س اخت و از تواناييه اي آنه ا اس تفاده نم ود.
قسمت اول اين مقاله در آغاز نرمافزارهاي توزيع يافت ه را مع رفي ك رده و دالي ل ني از ب ه آن را مش خص مينماي د .س پس اين
نرمافزارها را با سيستمهاي متمركز يا توزيع يافته مقايسه ميكند و در ادامه با طرح اين سؤال كه چرا به CORBAنياز داريم،
CORBAرا معرفي و ساختار آن را تش ريح ميكن د و بع د چگ ونگي ك ار اين اس تاندارد را توض يح ميده د .درپاي ان ن يز مزاي ا و
همانطور كه قبال اشاره شد ،يكي ديگر از داليل نياز به نرمافزارهاي توزيعيافته ،پراكندگي اطالعات
ميباشد .برخي از نرمافزارها ،از آنجايي كه به اطالعاتي نياز دارند كه برروي چند كامپيوتر است (بهداليل
امنيتي و حفاظت اطالعات شخصي) و صاحب اطالعات فقط اجازه دسترسي از راه دور را به كاربران
ميدهد ،بايد درچند كامپيوتر اجرا شوند .از طرف ديگر ،نياز به نرمافزارهاي توزيعيافته در سيستمهايي كه
ميخواهند از مزاياي استفاده از چند پردازنده (بهصورت موازي) استفاده كنند ،محسوس به نظر مي رسد.
تا اين جا داليل نياز دنياي امروز به نرم افزارهاي غيرمتمركز توضيح
داده شد .ممكن است از خود سؤال كنيد چه فرقي بين
1برخي از اين
سيستمهاي متمركز و توزيعيافته وجوددارد؟ جدول
تفاوتها را نشان ميدهد.
كاركرد CORBA
نرمافزارهايي كه از CORBAاستفاده مي كنند ،حاوي شيهاييهستند .البته معموال از يك شي چندين
نمونه( )Instancesاز يك نوع وجود دارد .مثال در يك سايت تجارت الكترونيك ،نمونه سبدهاي خريد زيادي
وجود دارد كه با وجودي كه همه آنها كاري يكسان انجام ميدهند ،هر كدام به مشتريان متفاوتي تعلق
دارد و اطالعات خريد آن مشتري را ذخيره مي كنند.
براي هر نوع از شيها ،مثال سبد خريد ميبايد يك اينترفيس در OMG IDLتعريف كنيم كه نشانگر
سرويسهايي است كه شي سرور در اختيار كالينتهاي تقاضاكننده قرارميدهد .هر كالينت كه تقاضاي
اجراي عملياتي از شي را دارد ،بايد از اين اينترفيسها استفاده و آرگومان ها را كنار هم چيده و
ارسالنمايد .وقتي كه اين تقاضا به شي سرويسدهنده ميرسد ،اين شي با استفاده ازاينترفيس مشابه
آن ،عمليات درخواستي كالينت را انجام مي دهد و آرگومان ها را جدا سازي مي كند .پس از انجام
عمليات درخواستي ،جواب درخواست ،بسته بندي شده و با استفاده از تعريف اينترفيس از همان
مسيري كه آمده بود ،بر مي گردد .چنان كه گفته شد ،اينترفيس IDLبراي اكثر زبانهاي برنامهنويسي از
جمله IDLscript , Python, Lisp, Ada , Smalltalk , COBOL, java, C++, C و از طريق استاندارد OMG
تعريف شده است.
جداسازي اينترفيس و قسمت اجرايي كه توسط OMG IDLمهيا شده است ،يكي از مهمترين پايههاي
اصولي CORBAمي باشد و ايجاد اينترفيس براي هر شي در CORBAضروري است .ازطرف ديگر قسمت
اجرايي هر شي از ديد سيستم مخفي ميماند و كالينت از آن چيزي نميداند.
در نتيجه كالينتها فقط ميتوانند از طريق اينترفيسها به سرويسها دسترسي داشته و تنها سرويسي
را اجرا كنند كه توسط اينترفيسهاي IDLمعرفي شده اند.
-موقعيت مكاني شي ميتواند بدون بروز اشكال در نرم افزار تغيير يابد.
-كالينت نيازي به دانستن اينكه سروري براي جواب دادن به درخواست وجود دارد يا نه ،ندارد.
-كالينت و سرور ميتوانند به دو زبان كامال متفاوت نوشته شوند و اين مزيت مهم CORBAاجازه استفاده
ازقدرت زبانهاي مختلف را ازطريق( ) IDLبراي تهيه نرمافزارهاي بزرگ ميدهد.
-كالينت نميداند يك شي چگونه عمل ميكند .به همين خاطر يك سرور ميتواند بدون اين كه كالينت
اطالع پيدا كند يك بار از فايل ساده و بار ديگر از پايگاه اطالعاتي شيگرا براي ذخيره اطالعات استفاده
نمايد.
اگرچه همانطوركهميبينيد استفاده از CORBAميتواند مزاياي زيادي داشته باشد ،اما داراي نقاط ضعف
زير نيز هست:
-از انتقال و جابهجايي شي (objectها) پشتيباني نمي كند.
CORBA -بهIDLهايي نيازدارد كه هنوز براي برخي از زبانها تعريف نشده است و وقت زيادي براي
يادگيري آنها نياز است.
-اگر CORBAنتواند نيازهاي صنايع امروز را برآورده سازد و رواج نيابد ،آينده مبهمي در انتظار خواهدداشت
و ممكن است به جمع سيستمهاي قديمي بپيوندد.
-از آنجايي كه خصوصيات CORBAهر چند وقت يكبار عوض ميشود ،نياز به آموزش و بروزآوري بيشتري
دارد.
-از آن جايي كهشعار ،CORBAسرعت و كارايي بيشتر نسبت به سيستمهاي توزيعيافته جاوا مثل RM
Iاست و همه نرمافزارهاي كاربردي نيازي به سرعت باالي آن ندارند ،شايد بتوان گفت اگر بخواهيم فقط با
جاوا كار كنيم آساني و كاربرد سيستمهايي مثل RMIاز CORBAبيشتر است.
جمعبندي
البته نميتوان ادعا كرد با اين مطالب همه مسائل مربوط به CORBAشرح دادهشد .هرچند سعي شد
بسياري از مطالب مهم مربوط به آن در حد امكان توضيح داده شود .بااين حال پارهاي ازاين موارد دربخش
دوم اين مقاله خواهد آمد كه به معرفي سرويسها و محصوالت CORBAميپردازد و با طرح مثالهاي
ساده و مقايسه اين فناوري با RMIو ،COMاين بحث را پيگيري ميكند.