.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 - это комплекс, в прямом смысле этого слова. С помощью операционной системы и сетевых агентов клиентский процесс отсылает сообщение серверному процессу и получает ответы.
Обзор .NET Remoting
.NET Remoting позволяет программе делать объект (объект ремоутингу) доступным через границы ремоутингу, такие как различные программные домены (application domains), процессы или даже разные компьютеры, соединенные в сеть. .NET Remoting среда запускает приемник запросов к объекту ремоутингу в программном домене серверной программы. В клиентской программе все запросы к объекту ремоутингу проксуются в .NET Remoting среде с помощью Channel объектов, таким образом инкапсулируется способ транспортировки ( TCP потоки, HTTP потоки и именованные каналы ( англ.Named pipes )). Таким образом, используя необходимый Channel объект, .NET Remoting программа поддерживает различные коммуникационные протоколы. При этом нет необходимости в перекомпиляции. Среда самостоятельно управляет сериализации имаршалингом объектов через клиентские и серверные программные домены.
.NET Remoting делает ссылку на объект ремоутингу доступным клиентский программе, затем создает экземпляр объекта и использует объект ремоутингу, будто он был локальным объектом. Тем не менее, фактически выполнение кода происходит на серверном стороне. Объект ремоутингу идентифицируется с помощью Activation URL, экземпляр объекта создается при установке соединения с URL. Среда ремоутингу создает приемник запросов, когда сервер регистрирует канал, используемый для соединения с объектом ремоутингу. На клиентской стороне среду ремоутингу создает прокси, который действует как псевдо-экземпляр объекта ремоутингу. В нем не реализована функциональность объекта ремоутингу, но у него такой же интерфейс. Таким образом инфраструктура ремоутингу должна знать публичный интерфейс объекта ремоутингу заранее. Любой вызов метода объекта, включая идентификацию самого метода и все параметры переданы в него, сериализуються в байтовый поток и передаются через коммуникационный, зависящий от протокола, канал к принимающему прокси объекта на серверной стороне («маршалинг»). На серверной стороне прокси вычитывает из потока все полученные данные и делает вызов метода на объекте ремоутингу от имени клиента. Результаты сериализуються и передаются на клиент, где прокси отчитывает результат и передает его в программу, вызвавшую объект ремоутингу.