C# для профессионалов. Том II
Шрифт:
<wellknown type="Wrox.ProfessionalCSharp.Hello, RemoteHello" url="tcp://localhost:6791/Hello/Hi" />
□ Элемент
<activated>
используется для активированных клиентом объектов. С помощью атрибута type
должны быть определены тип данных и сборка как для клиентского, так и для серверного приложений: <activated type="Wrox.ProfessionalCSharp.Hello, RemoteHello" />
□ Для определения канала, используется элемент
<channel>
. Это подэлемент <channels>
, так что совокупность каналов можно сконфигурировать для одного
type
используется для определения типа канала и сборки. Атрибут port
является номером порта, который нужен только для серверной конфигурации: <channels>
<channel type = "System.Runtime.Remoting.Channels.Tcp.TcpChannel, System.Runtime.Remoting" port="6791" />
<channel type = "System.Runtime.Remoting.Channels.Http.HttpChannel, System.Runtime.Remoting" port="6792" />
</channels>
Конфигурация сервера для хорошо известных объектов
Этот пример файла
wellknown.config
имеет значение Hello
для свойства Name
. Мы используем канал TCP для прослушивания порта 6791, а канал HTTP для прослушивания порта 6792. Класс удаленного объекта —Wrox.ProfessionalCSharp.Hello
в сборке RemoteHello.dll
, объект в канале называется Hi
, и используется режим SingleCall
: <configuration>
<system.runtime.remoting>
<application name="Hello">
<service>
<wellknown mode="SingleCall" type="Wrox.ProfessionalCSharp.Hello, RemoteHello" objectUri ="Hi" />
</service>
<channels>
<channel type="System.Runtime.Remoting.Channels.Tcp.TcpChannel, System.Runtime.Remoting" port="6791" />
<channel type="System.Runtime.Remoting.Channels.Http.HttpChannel, System.Runtime.Remoting" port="6792" />
</channels>
</application>
</system.runtime.remoting>
</configuration>
Конфигурация клиента для хорошо известных объектов
Для хорошо известных объектов в клиентском конфигурационном файле
wellknown.config
необходимо определить сборку и канал. Типы для удаленного объекта можно найти в сборке RemoteHello.dll
, Hi
является именем объекта в канале, a URI для удаленного типа Wrox.ProfessionalCSharp.Hello
— это tcp://localhost:6791/Hi
. На клиенте также работает канал TCP, но на клиенте не определяется порт, поэтому выбирается свободный порт. <configuration>
<system.runtime.remoting>
<application name="Client">
<client url="tcp:/localhost:6791/Hello">
<wellknown type = "Wrox.ProfessionalCSharp.Hello, RemoteHello" url="tcp://localhost:6791/Hello/Hi" />
</client>
<channels>
<channel type="System.Runtime.Remoting.Channels.Tcp.TcpChannel, System.Runtime.Remoting" />
</channels>
</application>
</system.runtime.remoting>
</configuration>
Внесем
wellknownhttp.config
): <client url="http://localhost:6792/Hello">
<wellknown type="Wrox.ProfessionalCSharp.Hello, RemoteHello" url="http://localhost:6792/Hello/Hi" />
</client>
<channels>
<channel type="System.Runtime.Remoting.Channels.Http.HttpChannel, System.Runtime.Remoting" />
</channels>
Серверная конфигурация для активизированных клиентом объектов
Преобразуя только конфигурационный файл (который находится в
clientactivated.config
), можно изменить сервер с активизированных сервером объектов на активизированные клиентом объекты. Здесь определяется подэлемент <activated>
элемента <service>
. С его помощью для серверной конфигурации должен быть определен атрибут type
. Атрибут name
элемента application
определяет URI: <configuration>
<system.runtime.remoting>
<application name="HelloServer">
<service>
<activated type="Wrox.ProfessionalCSharp.Hello, RemoteHello" />
</service>
<channels>
<channel type="System.Runtime.Remoting.Channels.Http.HttpChannel, System.Runtime.Remoting" ports="6788" />
<channel type="System.Runtime.Remoting.Channels.Tcp.TcpChannel, System.Runtime.Remoting" ports="6789" /»
</channels>
</application>
</system.runtime.remoting>
</configuration>
Клиентская конфигурация для активизированных клиентом объектов
Файл
clientactivated.config
определяет активированный клиентом удаленный объект с помощью атрибута url
элемента <client>
и атрибута type
элемента <activated>
: <configuration>
<system.runtime.remoting>
<application>
<client url="http://localhost:6788/HelloServer" >
<activated type="Wrox.ProfessionalCSharp.Hello, RemoteHello" />
</client>
<channels>
<channel type="System.Runtime.Remoting.Channels.Http.HttpChannel, System.Runtime.Remoting" />
Поделиться:
Популярные книги
Я тебя не отпускал
2. Черкасовы-Ольховские
Любовные романы:
современные любовные романы
6.55
рейтинг книги
Орден Багровой бури. Книга 3
3. Орден Багровой бури
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Звезда сомнительного счастья
Фантастика:
фэнтези
6.00
рейтинг книги
Прометей: каменный век II
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Жнецы Страданий
1. Ходящие в ночи
Фантастика:
фэнтези
9.32
рейтинг книги
Враг из прошлого тысячелетия
4. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Громовая поступь. Трилогия
Громовая поступь
Фантастика:
фэнтези
рпг
4.50
рейтинг книги
Надуй щеки! Том 5
5. Чеболь за партой
Фантастика:
попаданцы
дорама
7.50
рейтинг книги
Лэрн. На улицах
1. Лэрн
Фантастика:
фэнтези
5.40
рейтинг книги
Комбинация
2. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Стеллар. Заклинатель
3. Стеллар
Фантастика:
боевая фантастика
8.40
рейтинг книги
Решала
10. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Месть бывшему. Замуж за босса
3. Власть. Страсть. Любовь
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Товарищ "Чума" 3
3. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00