Книга: C# для профессионалов. Том II

Активация хорошо известных объектов

Активация хорошо известных объектов

using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
/// ...
TcpClientChannel channel = new TcpClientChannel();
ChannelServices.RegisterChannel(channel);
Hello obj = (Hello)Activator.GetObject(
 typeof(Hello), "tcp://localhost:8086/Hi");
GetObject()
является статическим методом класса System.Activator, который вызывает метод RemotingServices.Connect() для возврата объекта прокси удаленному объекту. Первый аргумент определяет тип удаленного объекта. Прокси реализует все открытые и защищенные методы и свойства, так что клиент может вызывать эти методы так же, как для реального объекта. Второй аргумент является URL удаленного объекта. Здесь используется строка tcp://localhost:8086/Hello, где tcp — протокол, localhost:8086 — имя хоста и номер порта и, наконец, Hello — это URI объекта, который был определен с помощью RemotingConfiguration.RegisterWellKnownServiceType().

Вместо Activator.GetObject() можно также использовать RemotingServices.Connect():

Hello obj =
 (Hello)RemotingServices.Connect(typeof(Hello), "tcp://localhost:8086/Hi");

Если вы предпочитаете задать просто оператор new для активизации хорошо известных удаленных объектов, то удаленный объект можно зарегистрировать на клиенте с помощью все того же RemotingConfiguration.RegisterWellKnownClientType(). Здесь понадобятся похожие аргументы: тип удаленного объекта и URI. Теперь можно использовать оператор new, который на самом деле не создает новый удаленный объект, а возвращает прокси аналогично Activator.GetObject(). Если удаленный объект регистрируется с флажком WellKnownObjectMode.SingleCall, правило остается тем же самым: удаленный объект создается с каждым вызовом метода:

RemotingConfiguration.RegisterWellKnownClientType(
 typeof(Hello), "tcp://localhost:8086/Hi");
Hello obj = new Hello();

Оглавление книги


Генерация: 1.298. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз