<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>
Внесем небольшое изменение в конфигурационный файл и можем использовать канал HTTP (как видно в 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' />
<channel type='System.Runtime.Remoting.Channels.Tcp.TcpChannel, System.Runtime.Remoting' />
</channels>
</application>
</system.runtime.remoting>
</configuration>