Ватсон Карли
Шрифт:
</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>
Серверный код, использующий конфигурационные файлы
В серверном коде необходимо сконфигурировать удаленное использование статического метода
Configure
из класса RemotingConfiguration
. Здесь создаются экземпляры всех определяемых каналов. Может быть мы захотим также узнать о конфигурациях каналов из серверного приложения. Поэтому созданы статические методы ShowActivatedServiceTypes
и ShowWellKnovmServiceTypes
, которые вызываются после загрузки и запуска удаленной конфигурации: public static void Main(string[] args) {
RemotingConfiguration.Configure("HelloServer.exe.config");
Console.WriteLine(
"Application: " + RemotingConfiguration.ApplicationName);
ShowActivatedServiceTypes;
ShowWellKnownServiceTypes;
System.Console.WriteLine("hit to exit");
System.Console.ReadLine;
return;
}
Эти две функции показывают данные конфигурации хорошо известных и активированных клиентом типов:
public static void ShowWellKnownServiceTypes {
WellKnownServiceTypeEntry[] entries =
RemotingConfiguration.GetRegisteredWellKnownServiceTypes;
foreach (WellKnownServiceTypeEntry entry in entries) {
Console.WriteLine("Assembly: " + entry.AssemblyName);
Console.WriteLine("Mode: " + entry.Mode);
Console.WriteLine("URI " + entry.ObjectUri);
Console.WriteLine("Type: " + entry.TypeName);
}
}
public static void ShowActivatedServiceTypes {
ActivatedServiceTypeEntry[] entries =
RemotingConfiguration.GetRegisteredActivatedServiceTypes;
foreach(ActivatedServiceTypeEntry entry in entries) {
Console.WriteLine("Assembly: " + entry.AssemblyName);