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