<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>
