0% found this document useful (0 votes)
61 views5 pages

Corba 1

Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
61 views5 pages

Corba 1

Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 5

‫اره ‪:‬‬ ‫اش‬

‫‪ 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‬را معرفي و ساختار آن را تش ريح مي‌كن د و بع د چگ ونگي ك ار اين اس تاندارد را توض يح مي‌ده د‪ .‬درپاي ان ن يز مزاي ا و‬

‫ضعف‌هاي آن را به اختصار بيان مي‌نمايد‪.‬‬

‫نرم افزارهاي توزيع‌يافته (‪ )Distributed‬‬


‫همان‌طور كه اشاره شد‪ ،‬كار اصلي ‪ CORBA‬ارائه استانداردي براي ايجاد و اجراي نرم افزارهاي توزيع‌يافته‬
‫مي‌باشد‪ .‬اگرچه‌‌توزيع‌‌يافته‌بودن نرم‌افزارها مي تواند مشكالتي براي توليد كنندگان و كاربران آن داشته‬
‫باشد‪ ،‬ولي به‌دليل غيرمتمركز بودن اطالعات نرم‌افزارها‪ ،‬پراكندگي كاربران‪ ،‬و نياز به اجراي برخي برنامه‌ها‬
‫با استفاده از بيش از يك پردازنده ‪ ،‬راه ديگري جز استفاده از اين نرم‌افزارها نيست‪.‬‬
‫‪ ‬‬
‫برخي از نرم‌افزارها به دليل اين كه كاربران آن بايد از طريق اين نرم افزارها با هم در ارتباط باشند‪  ،‬بر روي‬
‫چند كامپيوتر اجرا مي شوند‪ .‬بدين ترتيب كه هر كاربر قسمتي از اين نرم افزار را برروي كامپيوتر خود اجرا‬
‫مي‌كند و شي‌هاي مشترك بر روي يك چند سرور اجرا مي شوند‪  .‬شكل ‪ 1‬نشان مي دهد كه دو كاربر از‬
‫شي‌هاي به اشتراك گذاشته شده استفاده مي كنند‪ .‬همان‌طور كه در اين شكل مشخص شده‌است‪ ،‬دو‬
‫كاربر يكي در ناحيه ‪ 1‬و ديگري در ناحيه ‪  2‬بدون در نظر گرفتن موقعيت جغرافيايي‪ ،‬به شي‌هاي گوناگوني‬
‫دسترسي‌دارند و در برخي موارد‪ ،‬بر حسب نياز به يك شي (‪ )object A‬دسترسي خواهند داشت‪  .‬‬

‫همان‌طور كه قبال اشاره شد‪ ،‬يكي ديگر از داليل نياز به نرم‌افزارهاي توزيع‌يافته‪ ،‬پراكندگي اطالعات‬
‫مي‌باشد‪ .‬برخي از نرم‌افزارها‪ ،‬از آنجايي كه به‪  ‬اطالعاتي نياز دارند كه برروي چند كامپيوتر است (به‌داليل‬
‫امنيتي و حفاظت اطالعات شخصي) و صاحب اطالعات فقط اجازه دسترسي از راه دور را به كاربران‬
‫مي‌دهد‪ ،‬بايد درچند كامپيوتر اجرا شوند‪ .‬از طرف ديگر‪ ،‬نياز به نرم‌افزارهاي توزيع‌يافته در سيستم‌هايي كه‬
‫مي‌خواهند از مزاياي استفاده از چند پردازنده (به‌صورت موازي) استفاده كنند‪ ،‬محسوس به نظر مي رسد‪.‬‬
‫تا اين جا داليل نياز دنياي امروز به نرم افزارهاي غيرمتمركز توضيح‬
‫داده شد‪ .‬ممكن است از خود سؤال كنيد چه فرقي بين‬
‫‪ 1‬برخي از اين‬
‫سيستم‌هاي متمركز و توزيع‌يافته وجود‌‌دارد؟ جدول ‌‬
‫تفاوت‌ها‪  ‬را نشان مي‌دهد‪.‬‬

‫دال‌يل نياز به‌‪ CORBA ‬‬


‫دال‌يل نياز به ‪ CORBA‬را مي‌توان در پنج‌مورد زير فهرست كرد‪:‬‬
‫‪ -‌1‬گوناگوني سيستم‌عامل‌ها‌‪ ‬‬
‫‪ -2‬تنوع پلتفرم‌هاي سخت افزاري‬
‫شكل ‪ -1‬استفاده مشترك از شي‌ها‬
‫‪ -3‬گوناگوني پروتكل‌هاي شبكه‌(براي مثال ‪ ‌TCP/IP ،ATM‬و ‪‌Ethern‬‬
‫(براي مشاهده تصاوير مقاله در ابعاد بزرگتر‬
‫‪)et‬‬
‫روي آنها كليك كنيد)‬
‫‪ -4‬گوناگوني زبان‌هاي برنامه‌نويسي‬
‫‪)C ,C++ ,Java ,COBOL ,Basic ,Perl ,Smalltalk( ‬‬
‫‪ -5‬نياز ارتباط يافتن‌ سيستم‌هاي جديد با سيستم‌هاي قديمي‬

‫سيستم هاي‬ ‫‌با استفاده از ‪ ،‌CORBA‬ديگر دليلي براي نگراني در‬


‫سيستم هاي متمركز‬ ‫ويژگي‬ ‫مورد اين‌كه از چه زبان برنامه‌نويسي‪ ،‬سيستم‌عامل‬
‫توزيع‌يافته‌‬
‫كم‬ ‫زياد‬ ‫امنيت‬ ‫يا پلتفرمي‪  ‬استفاده مي‌كنيد‪ ،‬وجود ندارد‪ .‬از آن‌جايي‬
‫كه ‪ CORBA‬با مكانيزم ساده‌اي مي‌تواند سيستم‌هاي‬
‫در سيستم‌هاي توزيع‌يافته كه ‪‌object‬ها درسيستم‌هاي مختلفي‬
‫مختلف از هر نوع و هراندازه‪  ‬را به هم متصل كند‪،‬‬
‫قرار دارند‪ ،‬به‪  ‬امنيت بيشتري نسبت به سيستم هاي محلي نياز‬
‫درخيلي از موقعيت‌ها بسيار مفيد به نظر مي‌رسد‪ .‬‬
‫است‪.‬‬
‫يكي از مصارف ‪ CORBA‬در سرورهايي است كه با‬
‫‪ ‬همه شي ها با هم شي‌ها جداگانه‬ ‫مشكالت و‬ ‫تعداد زيادي كالينت‪  ‬و ترافيك سنگين اطالعاتي بايد‬
‫خراب مي‌شوند خراب مي‌شوند‬ ‫ازكارافتادگي‪ ‬شي‌ها‌‬ ‫به خوبي كاركنند‪ .‬استفاده از ‪  ‌CORBA‬فقط محدود به‬
‫اگر پردازنده‌اي كه دو ‪ ‌object‬را اجرا مي‌كند دچار مشكل شود‪،‬‬ ‫نرم‌افزارهاي بزرگ نمي‌شود و حتي درسيستم‌هاي‌‬
‫هر دو ‪ object‬دچار مشكل خواهند شد‪.‬‬ ‫بال‌درنگ‌‪  ‬نيز كاربرد دارد‪ .‬‬
‫فقط با استفاده از با‬
‫دارد‬ ‫دسترسي همزمان‌‬
‫چند ‪Thread‬‬ ‫‪ CORBA‬و ساختار آن‬
‫برنامه‌ها بر روي سيستم‌هاي متمركز‪ +،‬به‌صورت پيش فرض از‬ ‫گروه ‪ OMG‬در سال ‪ 1989‬با هدف ايجاد و پشتيباني‬
‫يك ‪ thread‬استفاده مي‌كنند‪ .‬ولي در سيستم‌هاي توزيع‌يافته‬ ‫استاندارد برنامه‌هاي شي‌گراي غير متمركز به‌وجود‬
‫به‌صورت پيش فرض از ‪ thread‬استفاده مي‌شود‪.‬‬ ‫آمد‪ .‬البته‪ ،‬اين گروه در واقع‪  ‬توليد كننده هيچ‬
‫آهسته‬ ‫سريع‬ ‫ارتباط بين سيستم ها‬ ‫نرم‌افزاري نيست‪ ،‬بلكه مشخصات‌‌(‪)Specification‬‬
‫از آن‌جايي كه ارتباط بين ‪‌object‬ها دريك پردازنده سريع تر از‬ ‫اين برنامه‌ها را با استفاده از فناوري و نظرات اعضا‬
‫ارتباط بين ‪‌object‬ها درچند پردازنده مي باشد‪ ،‬پيشنهاد‪ +‬مي‌شود‬ ‫مشخص مي‌كند‪.‬‬
‫اگر ارتباط تنگاتنگي بين شي‌ها وجود دارد‪ ،‬از سيستم‌هاي‬
‫متمركز استفاده شود‪.‬‬ ‫اين گروه شامل بيش از ‪ 700‬شركت و سازمان‬
‫توليد‌كننده فناوري سيستم‌هاي‌ توزيع‌يافته‪ ،‬بانك‌هاي‬
‫جدول ‪ -1‬جدول مقايسه‌اي سيستم‌هاي متمركز و توزيع‌يافته‬
‫اطالعاتي‌‪ ،‬پلتفرم‌ها و سازندگان بزرگ نرم‌افزار‬
‫مي‌باشد‪ .‬تالش اصلي اين گروه در راستاي تعريف امكانات و ساختار ال‌زم براي سيستم‌هاي شي‌گراي‬
‫غير‌متمركزاست و يكي ازمكانيزم‌هاي اصلي در اين رابطه كه هسته مركزي اين گروه نيز مي‌باشد‪Object ،‬‬
‫‪ )Request Broker) ORB‬نام دارد‪ .‬سال ‪ 1991‬را مي‌توان سال تولد اولين نسخه‪CORBA ‬‬
‫(‪ )Common Object Request Broker Architecture‬توسط اين گروه ناميد‪.‬‬
‫‪ ‬‬
‫‪ CORBA‬ساختار استانداردي براي سيستم‌هاي توزيع‌يافته شي‌گراست كه مي‌تواند سيستم‌هاي‬
‫ناهمگون و پراكنده را به هم مرتبط سازد‪‌.‬همان‌طور كه گفته شد‪‌CORBA ،‬ساختاري براي ‪‌object‬هاي‬
‫توزيع‌يافته مشخص مي‌كند‪ .‬محوراصلي اين ساختار بر اساس درخواست سرويس‪  ‬از شي‌هاي توزيع‌يافته‬
‫مي‌باشد‪ .‬اين شي‌ها سرويس‌ها را از طريق اينترفيس‌هايشان كه به زبان‌(‪Interface Definition‬‬
‫‪Object‬هاي غير متمركز را مي توان از ‪object‬‬
‫‌‬ ‫‪ Language (IDL‬مشخص شده‌اند‪ ،‬ارائه‌ مي‌دهند‪.‬‬
‫‪references‬ها كه توسط اينترفيس‌هاي‌ ‪ IDL‬تايپ شده اند‪ ،‬شناسايي كرد‪.‬‬

‫همان‌طور‌كه در شكل ‪ 2‬مي‌بينيد‪ ،‬درخواست‌كننده سرويس‌(كالينت) شماره مرجع‌ ‪ object‬شي‬


‫سرويس‌دهنده را از طريق اينترفيس آن در اختيار‌دارد (‪ )Interface A‬و‌ ‪ ORB‬درخواست كالينت را به شي‬
‫سرويس‌دهنده و جواب درخواست را به شي درخواست كننده مي رساند‪.‬‬

‫‪ ORB‬درواقع يك سرويس توزيع‌يافته است كه به درخواست شي‌هاي‪  ‬دوردست‌‌(‪)remote object‬‬


‫رسيدگي مي‌كند‪ .‬بدين ترتيب كه اين شي‌ها را در شبكه قرار مي دهد‪ ،‬با شي‌ها ارتباط‪  ‬برقرار كرده‪ ،‬و‬
‫درخواست‪  ‬سرويس را مطرح مي‌كند‪ .‬سپس براي جواب سرويس درخواستي صبر مي‌كند و‪  ‬سرويس‬
‫موردنظر را به كالينت درخواست كننده منتقل مي‌كند‪ ORB .‬اين كار را بدون توجه به موقعيت مكاني‬
‫سرويس‌دهنده و زبان برنامه درخواست‌كننده انجام مي‌دهد‪ .‬نيازي نيست كه كالينت درخواست كننده به‬
‫زبان ‪ ‌CORBA‬تقاضاي خود را مطرح كند‪ ‌ORB .‬زبان برنامه درخواست‌كننده را شناسايي كرده (براي اكثر‬
‫زبان‌هاي برنامه نويسي) و اين زبان را ترجمه مي كند‪.‬‬

‫كاركرد ‪‌CORBA‬‬
‫نرم‌افزارهايي كه از ‪ ‌CORBA‬استفاده مي كنند‪ ،‬حاوي شي‌هايي‌‌هستند‪ .‬البته معموال از يك شي چندين‬
‫نمونه(‪  )Instances‬از يك نوع وجود دارد‪ .‬مثال در يك سايت تجارت الكترونيك‪ ،‬نمونه سبدهاي خريد زيادي‬
‫وجود دارد كه با وجودي كه همه آن‌ها كاري يكسان انجام مي‌دهند‪ ،‬هر كدام به مشتريان متفاوتي تعلق‬
‫دارد و اطالعات خريد آن مشتري را ذخيره مي كنند‪.‬‬

‫براي هر نوع از شي‌ها‪ ،‬مثال سبد خريد‌ مي‌بايد يك اينترفيس در‌ ‪ OMG IDL‬تعريف كنيم كه نشانگر‬
‫سرويس‌هايي است كه شي سرور در اختيار كالينت‌هاي تقاضا‌كننده‪  ‬قرار‌مي‌دهد‪ .‬هر كالينت كه تقاضاي‬
‫اجراي عملياتي از شي را دارد‪ ،‬بايد از اين اينترفيس‌ها استفاده و آرگومان ها را كنار هم چيده و‬
‫ارسال‌‌نمايد‪ .‬وقتي كه اين تقاضا به شي سرويس‌دهنده مي‌رسد‪ ،‬اين شي با استفاده ازاينترفيس مشابه‬
‫آن‪ ،‬عمليات درخواستي كالينت را انجام مي دهد و آرگومان ها را جدا سازي مي كند‪ .‬پس از انجام‪ ‬‬
‫عمليات درخواستي‪ ،‬جواب درخواست‪ ،‬بسته بندي شده و با استفاده از تعريف اينترفيس‪  ‬از همان‬
‫مسيري كه آمده بود‪ ،‬بر مي گردد‪ .‬چنان كه گفته شد‪ ،‬اينترفيس ‪ IDL‬براي اكثر زبان‌هاي برنامه‌نويسي از‬
‫جمله‪ ‍IDLscript , Python, Lisp, Ada , Smalltalk , COBOL, java, C++, C ‬و‪ ‬از طريق استاندارد ‪OMG‬‬
‫تعريف شده است‪.‬‬

‫‌جداسازي اينترفيس و قسمت اجرايي كه توسط ‪ ‌OMG IDL‬مهيا شده است‪  ،‬يكي از مهم‌ترين پايه‌هاي‬
‫اصولي ‪ CORBA‬مي باشد و ايجاد اينترفيس براي هر شي در ‪ CORBA‬ضروري است‪ .‬ازطرف ديگر قسمت‬
‫اجرايي هر شي از ديد سيستم مخفي مي‌ماند و كالينت از آن چيزي نمي‌داند‪.‬‬

‫در نتيجه كالينت‌ها فقط مي‌توانند از طريق اينترفيس‌ها به سرويس‌ها دسترسي داشته و تنها سرويسي‬
‫را اجرا كنند كه توسط اينترفيس‌هاي ‪ ‌IDL‬معرفي شده اند‪.‬‬

‫همان‌طور كه در شكل ‪ 3‬نشان داده شده‌است‪ ،‬يك كالينت توسط‬


‫اينترفيس ‪ IDL‬تقاضاي سرويس مي‌كند‪ .‬براي اين كار ‪ IDL‬بايد به‬
‫كالينت ‪ stubs‬و ‪ ‌object skeletons‬كامپايل شود‪ s‌ tubs .‬و ‪‌skeleton‬‬
‫‪s‬ها‪ ‬درواقع نقش نمايندگان‌ كالينت و سرور را بازي مي‌كنند و از آن‬
‫جايي كه ‪ IDL‬تعريف مشخصي براي اينترفيس ها دارد‪ ،‬اگر حتي‬
‫اين دو نماينده به دو زبان متفاوت يا حتي برروي دو ‪ ‌ORB‬از دو‬
‫شركت مختلف اجرا شوند‪ ،‬مي‌توانند بدون مشكل به هم مرتبط‬
‫شوند‪.‬‬

‫شكل ‪  -2‬ساختار ساده ‪‌ ORBA‬‬


‫‪C‬‬ ‫همان‌طور كه اشاره شد‪ ،‬در ‪ CORBA‬هر نمونه ازاشيا داراي يك كد‬
‫يكتا (‪ )‌unique‬به نام ‪ object reference‬هستند‪ .‬كالينت‌ها از اين اشيا براي هدايت درخواست‌هايشان و‬
‫شناساندن خود به ‪‌ORB‬ها استفاده مي‌كنند‪ .‬اگرچه كالينت‌ها درخواست‌هايشان را به نماينده سرور يا‬
‫‪ IDL stub‬منتقل مي‌كنند نه به خود سرور‪ ،‬چنين به نظر مي‌رسد كه كالينت مستقيما به سرور دسترسي‬
‫دارد‪  .‬اين درخواست سپس از طريق ‪ ORB‬و ‪ skeleton‬به قسمت اجرايي مي‌رسد و اين قسمت به اين‬
‫درخواست رسيدگي مي‌كند‪ .‬شكل ‪ 4‬مكانيزم درخواست سرويس ازراه دور را نشان مي دهد‪.‬‬
‫براي ايجاد ارتباط و درخواست از شي دوردست‪ ،‬در اولين قدم‪،‬‬
‫كالينت ‪ object reference‬شي مورد‌نظر را از راه‌هاي گوناگوني مثل‬
‫‪ Naming Service‬به‌دست‌‌ميآورد و با استفاده از مكانيزم‌‌درخواست‬
‫محلي‪ ‌،‬درخواست خود را مطرح مي كند‪ .‬وقتي كه ‪ ORB‬متوجه‬
‫مي‌شود ‪ object reference‬موجود‪ ،‬مخصوص يك شي دوردست‬
‫است‪ ،‬مسيرخود را عوض كرده و از طريق شبكه‌‌‌(پروتكل ‪)‌IIOP‬‬
‫به‌دنبال ‪ ORB‬شي دوردست مي‌گردد‌ و درخواست خود را مطرح‬
‫مي كند‪.‬‬
‫شكل ‪ -3‬درخواست از كالينت به‌‬
‫‪ object implementation‬منتقل‬ ‫چگونگي اين مكانيزم از اين قرار است كه‌‌گروه ‪ ‌OMG‬استانداردي‬
‫مي‌شود‪.‬‬ ‫دو مرحله‌اي براي اين رويه دارد‪ .‬در مرحله اول كالينت از نوع شي‌اي‬
‫كه درخواست مي كند‪ ،‬اطالع دارد (مثال سبد خريد) و ‪  ‌stub‬كالينت‌‌(‪ )A‬و ‪ ‌skeleton‬شي‪  ‬توسط ‪‌ID‬‬
‫‪ L‬يكسان توليد شده است‪  .‬اين بدين معني است كه كالينت دقيقا مي‌داند كه چه عملياتي (وبا چه‬
‫پارامترهاي ورودي) مي‌تواند درخواست كند و چه زماني درخواست به شي مقصد مي‌رسد‪ .‬در مرحله دوم‬
‫بايد‌‬
‫‪ORB‬هاي كالينت و شي مورد نظر‪ ،‬هر دو از يك پروتكل يكسان تبعيت كنند‪ .‬اين پروتكل حاوي تمامي‬ ‫‌‬
‫اطالعات مورد نياز (ازجمله تمامي پارامترهاي ورودي‪/‬خروجي) براي دسترسي به شي مقصد مي‌باشد‪.‬‬
‫اگرچه ‪‌ORB‬ها مي‌توانند شي‌هاي محلي را از دوردست تشخيص دهند‪ ،‬از آن جايي كه كالينت حاوي هيچ‬
‫‪objec treference‬ي در موقع درخواست نيست‪  ،‬قادر به تمايز شي‌هاي دوردست و محلي نمي‌باشد و‬
‫همان‌طور كه قبال ذكر شد‪ ،‬اين از اصول اصلي ‪ ‌CORBA‬مي‌باشد (بدون اهميت بودن موقعيت مكاني‌‬
‫‪.)Object‬‬

‫‌مزايا و معايب ‪ ‌CORBA‬‬


‫با توجه به آنچه گذشت‪ ،‬اكنون‌‌به‌نظر مي‌رسد‬
‫بحث درباره مزايا و معايب اين استاندارد‪ ،‬ضروري‬
‫باشد‪ .‬از اين‌رو به پاره‌اي از مزايا و معايب‬
‫‪ CORBA‬اشاره مي‌شود‪:‬‬

‫‪‌‌-‬كالينت نيازي به دانستن موقعيت مكاني شي‪ ‬‬


‫ندارد‪ .‬يك شي مي‌تواند هر جا باشد‪ ،‬به كالينت‬
‫شكل ‪  -4‬ارتباط ‪ ‌ORB‬به ‪( ORB‬مكانيزم درخواست سرويس از‬ ‫متصل باشد يا برروي سروري در آن سوي كره‬
‫راه دور)‬ ‫زمين‪ ،‬هيچ فرقي نمي‌كند‪.‬‬

‫‪ -‬موقعيت مكاني شي مي‌تواند بدون بروز اشكال در نرم افزار تغيير يابد‪.‬‬
‫‌‬
‫‪‌-‬كالينت نيازي به دانستن اين‌كه سروري براي جواب دادن به درخواست وجود دارد يا نه‪ ،‬ندارد‪‌.‬‬

‫‪ -‬كالينت و سرور مي‌توانند به دو زبان كامال متفاوت نوشته شوند و اين‪ ‬مزيت مهم ‪ ‌CORBA‬اجازه استفاده‬
‫ازقدرت زبان‌هاي مختلف را ازطريق‌‌(‪ ) IDL‬براي تهيه نرم‌افزارهاي بزرگ مي‌دهد‪.‬‬

‫‪  -‬كالينت نمي‌داند يك شي چگونه عمل مي‌كند‪ .‬به همين خاطر يك سرور مي‌تواند بدون اين كه كالينت‬
‫اطالع پيدا كند يك بار از فايل ساده و بار ديگر از پايگاه اطالعاتي شي‌گرا براي ذخيره اطالعات استفاده‬
‫نمايد‪.‬‬

‫‪ -‬سرعت و كارايي سيستم‌هايي كه از‌ ‪ CORBA‬استفاده مي كنند بسيار باال است‪.‬‬


‫‪‌-‬سيستم‌هاي عامل و پروتكل سرور و كالينت مي تواند متفاوت باشد‪‌.‬‬

‫‌‌اگرچه همان‌طوركه‌‌مي‌بينيد استفاده از ‪ ‌CORBA‬مي‌تواند مزاياي زيادي داشته باشد‪ ،‬اما داراي نقاط ضعف‬
‫زير نيز هست‪:‬‬
‫‪ -‬از انتقال و جابه‌جايي شي (‪object‬ها) پشتيباني نمي كند‪‌.‬‬
‫‪ CORBA -‬به‪‌‌IDL‬هايي نياز‌‌دارد كه هنوز براي برخي از زبان‌ها تعريف نشده است و وقت زيادي براي‬
‫يادگيري آن‌ها نياز است‪‌.‬‬

‫‪ -‬اگر ‪ CORBA‬نتواند نيازهاي صنايع امروز را برآورده سازد و رواج نيابد‪ ،‬آينده مبهمي در انتظار خواهد‌داشت‬
‫و ممكن است به جمع سيستم‌هاي قديمي بپيوندد‌‪.‬‬

‫‪ -‬از آنجايي كه خصوصيات ‪ ‌CORBA‬هر چند وقت يك‌بار عوض مي‌شود‪ ،‬نياز به آموزش و بروزآوري بيشتري‬
‫دارد‪‌.‬‬
‫‪ -‬از آن جايي كه‌شعار ‪ ،CORBA‬سرعت و كارايي بيشتر نسبت به سيستم‌هاي توزيع‌يافته جاوا مثل ‪‌RM‬‬
‫‪ I‬است و همه نرم‌افزارهاي كاربردي نيازي به سرعت باالي آن ندارند‪ ،‬شايد بتوان گفت اگر بخواهيم فقط با‬
‫جاوا كار كنيم آساني و كاربرد سيستم‌هايي مثل ‪ ‌RMI‬از ‪ ‌CORBA‬بيشتر است‪‌.‬‬

‫جمع‌بندي‌‬
‫البته نمي‌توان ادعا كرد با اين مطالب همه مسائل مربوط به ‪ ‌CORBA‬شرح داده‌شد‪ .‬هرچند سعي شد‬
‫بسياري از مطالب مهم مربوط به آن در حد امكان توضيح داده شود‪ .‬بااين حال پاره‌اي ازاين موارد‪  ‬دربخش‬
‫دوم اين مقاله خواهد آمد كه به معرفي‪  ‬سرويس‌ها و محصوالت ‪ CORBA‬مي‌پردازد و با طرح مثال‌هاي‬
‫ساده و مقايسه اين فناوري با ‪‌RMI‬و‪ ،‌COM‬اين بحث را پيگيري مي‌كند‪‌.‬‬

You might also like