Серверный код, использующий конфигурационные файлы

В серверном коде необходимо сконфигурировать удаленное использование статического метода 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);

  Console.WriteLine('Type: ' + entry.TypeName);

 }

}

Клиентский код, использующий конфигурационные файлы

В клиентском коде с помощью конфигурационного файла client.exe.config нужно сконфигурировать только удаленные службы. После этого можно использовать оператор new для создания новых экземпляров класса Remote независимо от того, происходит ли работа с активированными сервером или с активированными клиентов удаленными объектами. Но помните, что существует небольшая разница. Для активированных клиентом объектов теперь можно использовать произвольные конструкторы с помощью оператора new. Это невозможно для активированных сервером объектов и не имеет смысла в этом случае: объекты SingleCall не могут иметь состояния, так как они разрушаются вместе с каждым вызовом, объекты Singleton создаются только однажды. Вызов произвольных конструкторов полезен только для активированных клиентом объектов, так как только для этого вида объектов оператор new реально вызывает конструктор удаленного объекта:

RemotingConfiguration.Configure('HelloClient.exe.config');

Hello obj = new Hello();

if (obj == null) {

 Console.WriteLine('could not locate server');

 return 0;

}

for (int i=0; i < 5; i++) {

 Console.WriteLine(obj.Greeting('Christian'));

}

Службы времени жизни в конфигурационных файлах

Аренда конфигурации для удаленных серверов также может делаться с помощью конфигурационных файлов приложений. Элемент <lifetime> имеет атрибуты leaseTime, sponsorshipTimeOut, renewOnCallTime и pollTime:

<configuration>

 <system.runtime.remoting>

  <application>

   <lifetime leaseTime='15M' sponsorshipTimeOut='4M' renewOnCallTime='3M' pollTime='30s' />

  </application>

 </system.runtime.remoting>

</configuration>

Используя конфигурационные файлы, можно изменить удаленную конфигурацию, редактируя файлы вместо работы с исходным кодом. Легко изменить канал для использования HTTP вместо TCP, изменить порт, имя канала, и т. д. С помощью добавления одной строки сервер может слушать два канала вместо одного.

Инструменты для файлов удаленной конфигурации

Не обязательно начинать создавать конфигурационный файл XML для .NET Remoting с чистого листа. Для этого существует несколько инструментов:

□ При использовании версии .NET Remoting Beta 1 можно найти пример convertconfig.exe в списке примеров Framework SDK. С помощью этого инструмента можно преобразовать использовавшийся ранее компактный формат файлов в новый формат на основе XML.

□ С помощью примера configfilegen.exe можно создать конфигурационный файл из сборки. Запустите эту программу без параметров, чтобы увидеть все возможные конфигурации. Следующая командная строка создает активированный клиентом (-а) конфигурационный файл для сервера

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату