Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Тип ChannelServices

Тип 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. Список каналов в окне клиента

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


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