از .net remoting میتوان برای این منظور استفاده کنیم که یک پل ارتباطی بین برنامه های مختلف ایجاد کنیم. فارغ از اینکه آن برنامه ها روی یک کامپیوتر اجرا میگردند یا روی چند کامپیوتر. این کامپیوتر ها میتوانند بخشی از یک شبکه باشند یا این که هر یک در شبکه ای در مکانهای جغرافیایی مختلف سراسر دنیا وجود داشته باشند.
علاوه بر آن، این کامپیوتر ها میتوانند سیستم عامل های متفاوتی را اجرا کنند و با این حال از طریق .net remoting با یکدیگر در ارتباط باشند.
این مثال را در نظر بگیرید:
شما برنامه ای برای یک pocket pc با استفاده از زبان C# ایجاد کرده اید که بر روی سیستم عامل Windows CE اجرا میگردد. عملکرد این برنامه این گونه است که به اطلاعات آخرین فروشهای انجام گرفته یک فروشگاه از طریق کامپیوتری که دارای سیستم عامل ویندوز 2003 بوده و بخشی از همان شبکه است دسترسی دارد.
برنامه ای که این اطلاعات را در سمت سرور فراهم میکند تا pocket pc مورد نظر از آن استفاده نماید با زیان visual basic 6.0 نوشته شده است. این برنامه اطلاعات بخش فروش را از یک پیاگاه داده sql server 2000 بازیابی میکند.
امروزه در بسیاری از مواردی که شما میخواهید به اطلاعات در سیستم های کاری مختلف دسترسی داشته باشید، این سناریوی معمول استفاده میگردد. در این سناریو برنامه میتواند به آسانی با برنامه های دیگر از طریق کلاسهای .net remoting ارتباط برقرار کند.
سیستم .net remoting تعدادی سرویس برای فعال سازی اشیاء، کنترل طول عمر هر شیء و انتقال پیغامها به این اشیاء یا از این اشیاء را با استفاده از کانالهای ارتباطی ارائه میکند.
هر پیغامی که از طریق کانالهای ارتباطی منتقل میگردد توسط قالب بندهای سریالی .net ( .net serialization formatters ) مثل فرمت باینری یا SOAP ، کدگذاری و کدگشایی میشود.
.net serialization formatters اشیائی هستند که به شما کمک میکنند پیغام هایی که به یک شیء ارسال میشود یا از آن دریافت میشود را کدگذاری یا کد گشایی کنید.
برای کلیه پیغام ها دو نوع کدگذاری و کد گشایی وجود دارد :
1- باینری
2- XML
برنامه هایی که بازدهی آنها بحرانی میباشد از کدگذاری باینری و در مواقعی که لازم داریم برنامه با یک شیء دیگر در سیستم ارتباط برقرار کند از کد گذاری XML استفاده میکنیم.
سیستم .net remoting شما را قادر میسازد تا بین اشیاء متفاوت در برنامه هایی با دامنه های متفاوت یا پردازشهای متفاوت با استفاده از پروتکل های انتقالی مختلف مانند HTTP ، TCP/IP ، SOAP و ... ارتباط برقرار نمایید.
دسترسی به اشیاء در محدوده های .net remoting
سیستم .net remoting به کلاینت ها اجازه میدهد تا متدهای برخی اشیائی را در محدوده های .net remoting فراخوانی کنند. محدوده های .net remoting عبارتند از دامنه های برنامه، پروسه ها و کامپیوترها.
یک دامنه برنامه میتواند برای یک پروسه اجرا شود. ارتباط بین اشیاء با استفاده از محدوده های .net remoting نیازمند موارد زیر است.
1- یک شیء سرویس دهنده که عملکرد مورد نظر را به فراخوانهای آن عملکرد در بیرون محدوده اش منتشر میکند
2- یک سرویس گیرنده که شیء سرویس دهنده مورد نظرش را فراخوانی میکند
3- یک مکانیزم انتقال بریا ارسال فراخوانی ها از یک نقطه نهایی ( end point ) به نقطه نهایی دیگر
بریا دسترسی به اشیاء و فراخوانی متدهای آنها، شما به اشاره گرها یا ارجاع دهنده هایی به آن اشیاء نیاز دارید. هرچند دسترسی به اشیاء از طریق محدوده های .net remoting کار ساده ای نیست چرا که آدرسها به پروسه ها وابسته هستند و آدرسهایی که در یک پروسه هستند برای یک پروسه دیگر هیچ معنا و مفهومی ندارند.
برای مدیریت این مشکل شما میتوانید یک کپی از شیء سرور را در برنامه سرویس گیرنده ایجاد کنید. پس از آن سرویس گیرنده مذکور میتواند یک متد را از روی شیء کپی شده محلی فراخوانی کند.
در چنین شرایطی شما متیوانید شیء سرویس دهنده را به عنوان یک ارجاع به برنامه سرویس گیرنده ارسال کنید. برنامه سرویس گیرنده از این ارجاع برای فراخوانی متدهاییی که در شیء سرویس دهنده است استفاده میکند.
سیستم .net remoting این فراخوانی را مدیریت کرده و آن را به شیء سرویس دهنده ارسال میکند و پس از آن که فراخوانی انجام شد، حاصل به برنامه سمت سرویس گیرنده ارسال خواهد شد.