برای درک مفهوم server skeleton و client stub ابتدا بهتر است که با مفهوم CORBA و ORB آشنا شویم.
CORBA مخفف Common Object Request Broker Architecture یک معماری نرم افزاری است که قطعاتی به نام اشیا را صرفنظر از زبانی که با آن نوشته شده اند یا سیستم عاملی که بر روی آن اجرا میشوند به برقراری ارتباط با یکدیگر قادر میسازد.CORBA بوسیله یک کنسرسیوم صنعتی به نام OMG توسعه داده میشود.
ORB مخفف Object Request Broker است و یک جز از CORBA است که بعنوان میان افزار بین client و Server عمل میکند.
مدل شی CORBA شی ای را در نظر میگیرد که صفات و سرویس ها را بسته بندی کرده باشد. اشیا CORBA باید واسط جداگانه ای داشته باشند که صفات و عملیات عمومی شی را تعریف کند . واسط های شی CORBA با استفاده از واسط IDL(زبان تعریف واسط) تعریف شده اند.اگر شی ای بخواهد از سرویس های شی دیگر استفاده کند ، از طریق واسط IDL به آنها دسترسی دارد.اشیا CORBA شناسه منحصربفردی به نام IOR دارند.این IOR وقتی استفاده میشود که شی ای سرویس هایی را از شی دیگر درخواست کند.کارگزار درخواست شی(object request server) اشیای درخواست کننده سرویس ها و واسط های بین آنها را می شناسد.ORB ارتباط بین اشیا را اداره می کند .اشیایی که با هم ارتباط برقرار میکنند لازم نیست محل یکدیگر را بدانند و از پیاده سازی همدیگر اطلاع داشته باشند.چون واسط IDL اشیا را از ORB جدا می کند میتوان پیاده سازی شی را بسادگی تغییر داد.محل شی ممکن است در فراخوانی ها تغییر کند و تمام اشیا دیگر هم این تغییر محل را ببینند.شکل زیر نشان میدهد که چگونه دوشی O1و O2 از طریق ORB با هم ارتباط برقرار می کنند.

ارتباط اشیا از طریق ORB
شی فراخوان (O1) یک stub(تابع) مربوط به IDL دارد که واسط شی ای را تعریف می کند که سرویس های درخواستی را ارائه میدهد.پیاده سازی O1 هنگام نیاز به سرویس ها فراخوانی این تابع(stub) را در پیاده سازی شی خود تعبیه می کندIDL شبیه به ++C است و در نتیجه اگر به C++ ، C یا Java برنامه نویسی کنید IDL میتواند به این تابع دسترسی داشته باشد.
شی ای که سرویس ها را ارائه می کندیک اسکلت IDL دارد که واسط را به پیاده سازی زبان مورد استفاده پیوند میدهد.وقتی رویه اجرا شود IDL Skeleton نتیجه را به به IDL ترجمه می کند به طوری که اشیای فراخوان می توانند به آن دستیابی داشته باشند.وقتی شی ای سرویس هایی را برای اشیای دیگر ارائه می کند و از سرویس های اشیای دیگر استفاده می کند به IDL Stubو IDL skeleton نیاز دارد . Stub برای هر شی ای لازم است.
معماری CORBA آنقدر گسترده است که به مباحث پیچیده تری برای درک کامل آن نیاز است اما امیدوارم با همین اندک مطلب نگاشته شده توانسته باشم بخشی از سوالتان را جواب دهم.





