.NET Remoting

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

.NET Remoting — прикладний програмний інтерфейс (API) від Microsoft для взаємодії між процесами, який був випущений у 2002 разом 1.0 версією .NET Framework. Це одна із серії технологій Microsoft, серія розпочалася у 1990 році випуском першої версії Object Linking and Embedding (OLE) для 16-бітної Windows. Проміжними кроками у розвитку цих технологій були Component Object Model (COM), яка вийшла в 1993 та оновлена в 1995 як COM-95, Distributed Component Object Model (DCOM), яка вийшла в 1997 (перейменована у ActiveX), і COM+ з її Microsoft Transaction Server (MTS), яка вийшла в 2000.[1] Зараз місце цих технологій займає Windows Communication Foundation (WCF), яка є частиною .NET Framework 3.0. Також .NET Framework 3.0 входить до складу операційної системи Windows Vista.

Так само як члени родини технологій від Microsoft і схожі технології, такі як Common Object Request Broker Architecture (CORBA) та remote method invocation (RMI) у Java, .NET Remoting — це комплекс, у прямому сенсі цього слова. За допомогою операційної системи та мережевих агентів клієнтський процес відсилає повідомлення серверному процесу та отримує відповіді.[2][3]

Огляд[ред. | ред. код]

.NET Remoting дозволяє програмі робити об'єкт (об'єкт ремоутінгу) доступним через границі ремоутінгу, такі як різні програмні домени (application domains), процеси чи навіть різні комп'ютери, з'єднані у мережу.[4] .NET Remoting середовище запускає приймач запитів до об'єкта ремоутінгу в програмному домені серверної програми. У клієнтській програмі всі запити до об'єкта ремоутінгу проксуються в .NET Remoting середовищі за допомогою Channel об'єктів, таким чином інкапсулюється спосіб транспортування (TCP потоки, HTTP потоки та іменовані канали(англ. named pipes)). Таким чином, використовуючи необхідний Channel об'єкт, .NET Remoting програма підтримує різні комунікаційні протоколи. При цьому немає потреби в перекомпіляції. Середовище самостійно керує серіалізацією та маршалінгом[en] об'єктів через клієнтські та серверні програмні домени.[4]

.NET Remoting робить посилання на об'єкт ремоутінгу доступним клієнтській програмі, потім створює екземпляр об'єкта та використовує об'єкт ремоутінгу, ніби він був локальним об'єктом.[4] Тим не менше, фактично виконання коду відбувається на серверному боці. Об'єкт ремоутінгу ідентифікується за допомогою Activation URL, екземпляр об'єкта створюється при встановленні з'єднання з URL. Середовище ремоутінгу створює приймач запитів, коли сервер реєструє канал, який використовується для з'єднання з об'єктом ремоутінгу. На клієнтському боці середовище ремоутінгу створює проксі, який діє як псевдо-екземпляр об'єкта ремоутінгу. В ньому не реалізована функціональність об'єкта ремоутінгу, але в нього такий саме інтерфейс. Таким чином інфраструктура ремоутінгу повинна знати публічний інтерфейс об'єкта ремоутінгу наперед. Будь-який виклик методу об'єкта, включаючи ідентифікацію самого методу та всі параметри передані до нього, серіалізуються в байтовий потік та передаються через комунікаційний, залежний від протоколу, канал до приймаючого проксі об'єкта на серверній стороні («маршалінг»)[5]. На серверній стороні проксі вичитує з потоку усі отримані дані та робить виклик методу на об'єкті ремоутінгу від імені клієнта. Результати серіалізуються та передаються на клієнт, де проксі вичитує результат та передає його до програми, що викликала об'єкт ремоутінгу.[5]

Виноски[ред. | ред. код]

  1. Software Technology Roadmap (2001). Component Object Model and Related Capabilities. Carnegie-Mellon Software Engineering Institute. Архів оригіналу за 15 травня 2008. Процитовано 25 березня 2008. {{cite web}}: Недійсний |deadurl=410 (довідка)
  2. Scott McLean, James Naftel and Kim Williams (2002). Microsoft .NET Remoting. Microsoft Press.
  3. Ingo Rammer and Mario Szpuszta (2005). Advanced .NET Remoting. Apress.
  4. а б в .NET Remoting Overview. Архів оригіналу за 20 лютого 2012. Процитовано 23 жовтня 2007.
  5. а б .NET Remoting Architecture. Архів оригіналу за 20 лютого 2012. Процитовано 23 жовтня 2007.

Див. також[ред. | ред. код]