Тип ChannelServices

We use cookies. Read the Privacy and Cookie Policy

Тип ChannelServices

Итак, объявляя существование удаленного типа, сервер использует тип System. Runtime.Remoting.Channels.ChannelServices. Тип ChannelServices предлагает небольшой набор статических методов, призванных обеспечить содействие в процессе регистрации канала удаленного взаимодействия и обнаружения указанного URL. Главные члены данного типа описаны в табл. 18.4.

Вдобавок к методам RegisterChannel() и UnregisterChannel() с их ясными названиями, тип ChannelServices определяет свойство RegisteredChannels. Этот член возвращает массив интерфейсов IChannel, каждый из которых представляет дескриптор соответствующего канала из тех, которые зарегистрированы в данном домене приложения.

Таблица 18.4. Подборка членов типа ChannelServices

Член Описание RegisteredChannels Свойство, получающее или устанавливающее список зарегистрированных в настоящий момент каналов, каждый из которых представляется интерфейсом IChannel DispatchMessage() Метод, выполняющий обработку поступающих удаленных вызовов GetChannel() Метод, возвращающий зарегистрированный канал с указанным именем GetUrlsForObject() Метод, возвращающий массив адресов URL, которые могут использоваться для доступа к указанному объекту RegisterChannel() Метод, регистрирующий канал о соответствующими канальными сервисами UnregisterChannel() Метод, отменяющий регистрацию данного канала и удаляющий этот канал из списка зарегистрированных

Определение интерфейса IChannel оказывается исключительно простым.

publiс interface IChannel {

 string ChannelName { get; }

 int ChannelPriority { get; }

 string Parse(string url, ref String objectURI);

}

Как видите, каждый канал получает понятное строковое имя, а также свой уровень приоритета. Например, если добавить в метод Main() приложения SimpleRemoteObjectClient следующую) программную логику

// Список всех зарегистрированных каналов.

IChannel[] сhannelObjs = ChannelServices.RegisteredChannels;

foreach (IChannel i in channelObjs) {

 Console.WriteLine("Имя канала: {0}", i.ChannelName);

 Console.WriteLine("Приоритет: {0}", i.ChannelPriority);

}

то в окне консоли клиента вы увидите вывод, подобный показанному на рис. 18.4.

Рис. 18.4. Список каналов в окне клиента