Использование ТСР-каналов

Использование ТСР-каналов

В настоящий момент ваш удаленный объект доступен через сетевой протокол HTTP. Как уже упоминалось выше, этот протокол вполне совместим с брандмауэром, но генерируемые при этом пакеты SOAP немного "раздуты" (по причине представления данных в формате XML). Чтобы уменьшить сетевой трафик, можно изменить компоновочные блоки клиента и сервера так, чтобы в них использовался TCP-канал и, следовательно, тип BinaryFormatter. Вот подходящая модификация компоновочного блока сервера.

Замечание. Для файлов с определениями объектов, доступных по TCP-каналам о заданным URI, чаще всего (но не обязательно) используется расширение *.rem (от remote – удаленный).

// Корректировки для сервера.

using System.Runtime.Remoting.Channels.Tcp;

static void Main(string[] args) {

 …

 // Создание нового TcpChannel

 TcpChannel с = new TcpChannel(32469);

 ChannelServises.RegisterChannel(c);

 // Регистрация WKO-объекта в режиме синглета.

 RemotingConfiguration.RegisterWellKnownServiceType(typeof(SimpleRemotingAsm.RemoteMessageObject), "RemoteMsgObj.rem", WellKnownObjectMode.SingleCall);

 Console.ReadLine();

}

Здесь в слое удаленного взаимодействия .NET регистрируется тип System. Runtime.Remoting.Channels.Tcp.TcpChannel. Кроме того, изменен URI-объект (теперь для него задано более общее имя RemoteMsgObj.rem вместо *.soap, что явно указывало на использование SOAP). Модификация приложения клиента так же проста.

// Корректировки для клиента.

using System.Runtime.Remoting.Channels.Тcр;

static void Main(string[] args) {

 …

 // Создание нового TcpChannel

 TcpChannel с = new TcpChannel();

 ChannelServices.RegisterChannel(c);

 // Получение агента для удаленного объекта.

object remoteObj = Activator.GetObject(typeof(SimpleRemotingAsm.RemoteMessageObject), "tcp://localhost:32469/RemoteMsgObj.rem");

 // Использование объекта.

 RemoteMessageObject simple = (RemoteMessageObject)remoteObj;

 simple.DisplayMessage("Привет от клиента!");

 Console.WriteLine("Сервер говорит: {0}", simple.ReturnMessage());

 Console.ReadLine();

}

Единственным заслуживающим внимания моментом здесь является то, что URL активизации клиента теперь должен содержать признак канала tcp://, а не http://. Во всем остальном программная логика здесь оказывается идентичной программной логике HttpChannel,

Исходный код. Проекты TCPSimpleRemoteObjectServer и TCPSimpleRemoteObjectClient размещены в подкаталоге, соответствующем главе 18 (оба эти проекта используют созданный выше компоновочный блок SimpleRemotingAsm.dll).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

5.12.4 Закрытие каналов

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

5.12.4 Закрытие каналов При закрытии канала процесс выполняет ту же самую процедуру, что и при закрытии обычного файла, за исключением того, что ядро, прежде чем освободить индекс канала, выполняет специальную обработку. Оно уменьшает количество процессов чтения из канала


Список каналов

Из книги Компьютер + TV: телевидение на ПК автора Гольцман Виктор Иосифович

Список каналов Список каналов – одна из самых важных частей программы, так как работа со списком во многом определяет, насколько удобно будет работать с приложением. Необходимо отметить, что в программе FlyDS работа со списком реализована с помощью контекстного меню,


Список каналов

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

Список каналов Познакомимся с основным инструментом программы, который будет использоваться постоянно, – это список каналов, где будут храниться все каналы, распределенные по категориям. Правильно настроенный список каналов – залог комфортной работы.Чтобы вызвать


Список каналов

Из книги Microsoft Windows SharePoint Services 3.0. Русская версия. Главы 9-16 автора Лондер Ольга

Список каналов Прежде всего обратимся к такому важному инструменту, как список каналов, ведь пока не настроены каналы, невозможен просмотр. Список каналов находится в левой части окна программы (рис. 5.15), причем каналы располагаются друг под другом, не подразделяясь на


Формирование списка каналов

Из книги Asterisk™: будущее телефонии Второе издание автора Меггелен Джим Ван

Формирование списка каналов Начальный этап настройки программы уже был изучен выше, теперь можно искать спутниковые каналы и формировать список. Если каналов будет очень много, то их будет удобнее разделить на тематические группы, а также создать небольшую группу,


Просмотр веб-каналов

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Просмотр веб-каналов Многие сайты в Интернете регулярно обновляются, и чтобы узнать последние новости, пользователям приходится регулярно открывать соответствующие вебстраницы и просматривать их содержимое. Однако есть и более удобный способ слежения за новостями –


Использование каналов RSS

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Использование каналов RSS Каналы RSS – это формат данных, предоставляющий пользователям средства поддержки содержимого веб-узла в актуальном состоянии. Первоначально этот формат данных имел название RDF (Resource Description Framework) Site Summary, а затем получил название Rich Site Summary. Сегодня


Банки каналов

Из книги Бесплатные разговоры через Интернет автора Фрузоров Сергей

Банки каналов Банк каналов - это, грубо говоря, устройство, позволяющее разделить цифровую линию на несколько аналоговых линий (и наоборот). Выражаясь точнее, банк каналов обеспечивает возможность объединять аналоговые телефоны и линии в систему через линию T1. На рис. 2.2


Использование именованных каналов

Из книги Как пользоваться Интернетом после принятия закона «Об Интернете» автора Халявин Василий

Использование именованных каналов Функция CreateNamedPipe создает первый экземпляр именованного канала и возвращает дескриптор. При вызове этой функции указывается также максимально допустимое количество экземпляров каналов, а следовательно, и количество клиентов,


Создание именованных каналов

Из книги Linux программирование в примерах автора Роббинс Арнольд

Создание именованных каналов Серверами именованных каналов могут быть только системы на основе Windows NT (как обычно, здесь имеются в виду версия 4.0 и последующие); системы на базе Windows 9x могут выступать только в роли клиентов.Прототип функции CreateNamedPipe представлен ниже. HANDLE


11.6. Создание неименованных каналов

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

11.6. Создание неименованных каналов Неименованные каналы подобны именованным, но они в файловой системе не существуют. Они не имеют путевых имен, ассоциированных с ними, и все они и их следы исчезают после того, как последний файловый дескриптор, ссылающийся на них,


Флаги каналов

Из книги автора

Флаги каналов Теперь перечислим флаги, которые могут иметь каналы.? R (Registered, Зарегистрированный) — обозначает зарегистрированный канал. Если канал не имеет этого флага, то он автоматически удаляется с сервера после того, как все пользователи его покинут. В противном


9.3.1.2. Буферирование каналов

Из книги автора

9.3.1.2. Буферирование каналов Каналы буферируют свои данные, что означает, что записанные в канал данные хранятся ядром до тех пор, пока не будут прочитаны. Однако, канал может содержать лишь такое-то количество записанных, но еще не прочитанных данных. Мы можем называть


5.4.1. Создание каналов

Из книги автора

5.4.1. Создание каналов Канал создается с помощью функции pipe(). Ей необходимо передать массив из двух целых чисел. В элементе с индексом 0 функция сохраняет дескриптор файла, соответствующего выходному концу канала, а в элементе с индексом 1 сохраняется дескриптор файла,