دات نت از راه دور

بندانگشتی|ساده ولی نشان دهنده ورکفلویی اصلی
**دات نت از راه دور** یک رابط برنامه نویسی کاربردی مایکروسافت برای ارتباط بین پردازشی است که در سال 2002 میلادی در نسخه 1.0 چارچوب دات نت منتشر شد. این یکی از سری فناوری های مایکروسافت است که در سال 1990 با اولین نسخه Object Linking and Embedding  برای ویندوز 16 بیتی آغاز شد. در مراحل میانی توسعه این فناوری‌ها از مدل شیء مؤلفه (انتشار در 1993) ، Distributed Component Object Model که در سال 1997 منتشر و بعدا به اکتیوایکس تغییر نام داد، و مدل شیء مؤلفه ارتقاء یافته با  Microsoft Transaction Server، در سال 2000 منتشر شد استفاده شده است. در حال حاضر Windows Communication Foundation که بخشی از چارچوب دات نت 3.0 است جایگزین دات نت از راه دور است.

**دات نت از راه دور** مانند فناوری‌های مشابه کوربا و فراخوانی متد راه دور جاوا (RMI)پیچیده است، اما ماهیت آن ساده است. با کمک عامل های سیستم عامل  و شبکه، پردازه‌ی کلاینت پیامی را به پردازه‌ی سرور ارسال می کند و پاسخ را دریافت می کند.  

## نمای کلی
**دات نت از راه دور** این امکان را به  برنامه می‌دهد تا یک شئ (که به آن شئ قابل دسترسی از راه دور گفته می‌شود) را در گستره هایی از راه دور قابل دسترس کند . این گستره ها می تواند شامل  دامنه های برنامه ها، پردازه ها و حتی کامپیوتر های دیگر متصل به یک شبکه باشد . اجرا کننده دات نت از یک شنونده روی دامنه برنامه سرور میزبانی می کند. در برنامه کلاینت هر درخواستی به شئ قابل دسترسی از راه دور از طریق اجراکننده **دات نت از راه دور** مخابره می شود. این کار تحت شئ ای به نام کانال `Channel` انجام می شود که روش اصلی انتقال این پیام را در بر می گیرد. این روش ها می تواند از نوع جریان‌ TCP ، HTTP و  لوله های نامگذاری شده باشد. به همین دلیل، با توجه به در بر گرفتن پروتکل های ارتباطی توسط شئ `Channel` ، ایجاد یک کانال مناسب می تواند این امکان را به برنامه بدهد که بدون کامپایل کردن مجدد، تحت این پروتکل ها اطلاعات را مخابره کند. همچنین خود اجراکننده **دات نت از راه دور**  وظیفه سریال سازی و مارشال کردن داده ها را برای کلاینت و سرور انجام خواهد داد. 

**دات نت از راه دور** یک شئ قابل دسترسی از راه دور را به کلاینت یک برنامه ارجاع می دهد که کلاینت می تواند آن را به گونه ای مورد استفاده قرار دهد که انگار از ابتدا در همانجا بوده است. با این حال کد واقعی در سرور اجرا می شود. یک شی از راه دور توسط *[[مکان‌یاب منبع یکسان|URL های]] فعال سازی* شناسایی می شود و با اتصال به URL قابل استفاده می شود. زمانی که سرور، کانال مورد نیاز برای ارتباط با شئ از راه دور را ثبت می کند اجرا کننده دات نت از راه دور یک شئ شنونده را ایجاد می کند. در کلاینت، **دات نت از راه دور** یک واسطه `proxy` ایجاد می کند که به جای شئ قابل دسترسی از راه دور تلقی می شود. عملکرد شئ قابل دسترسی از راه دور را پیاده سازی نمی کند فقط یک بستر برای استفاده در اختیار می گذارد. بنابراین، بستر راه دور باید قبل از رابط عمومی شئ قابل دسترسی از راه دور را بداند. در هر فراخوانی توابع قابل دسترسی از راه دور‌‌‌، اطلاعات این فراخوانی به همراه پارامتر های شئ مورد استفاده به یک جریان بایت سریال می شود و از طریق یک شئ `Channel` که وابسته به پروتکل ارتباطی است منتقل می شود.  در سمت سرور، پروکسی جریان را از سینک می‌خواند و از طرف کلاینت با شی قابل دسترسی از راه‌ دور تماس می‌گیرد. نتایج سریال می شوند و از طریق سینک به کلاینت منتقل می شوند، جایی که پروکسی نتیجه را می خواند و آن را به برنامه انتقال می دهد.  اگر شئ راه دور نیاز به برقراری تماس با یک شئ کلاینت برای برخی از خدمات داشته باشد، برنامه سرویس گیرنده باید آن را به عنوان قابل دسترس از راه دور علامت گذاری کند و یک شنونده میزبان از راه دور داشته باشد. سرور می تواند از طریق یک کانال دیگر یا از طریق کانال موجود به آن متصل شود اگر اتصال زیرین از ارتباط دو طرفه پشتیبانی می کند. یک کانال می‌تواند از تعدادی شئ کانال مختلف ایجاد شده باشد که ممکن است هر کدام از انتقال‌های ناهمگن مختلف تشکیل شده باشند. بنابراین، دسترسی و فراخوانی از راه دور می‌تواند در سیستم‌هایی که توسط شبکه‌های ناهمگن، از جمله اینترنت، از هم جدا شده‌اند، کار کند. ایمنی نوع متغیر ها توسط CTS و اجرا کننده دات نت از راه دور کنترل می‌شود. فراخوانی اشیا از راه دور ذاتاً سنکرون هستند. تماس های آسنکرون را می توان با استفاده از کتابخانه های مدیریت ریسه‌ها پیاده سازی کرد. احراز هویت و کنترل دسترسی را می توان با استفاده از کانال های سفارشی مدیریت کرد. همچنین می‌توان اشیاء با قابلیت دسترسی از راه دور را در IIS میزبانی کرده و سپس سیستم مدیریت دسترسی را با استفاده از سیستم احراز هویت IIS برای کلاینت ها پیاده سازی کرد.  

## منابع
رده:رابط‌های برنامه‌نویسی کاربرد مایکروسافت
رده:تماس با رویه دوردست


## پیوند به بیرون
[Official wbsite](https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-1.1/kwdt6w2k(v=vs.71))

Migrating from .Net Remoting to WCF