Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Создание файлов *.config сервера

Создание файлов *.config сервера

Файлы конфигурации на стороне сервера позволяют объявить объекты, которые будут доступны для удаленных вызовов, а также задать параметры канала и порта. Рассмотрим следующий вариант программной логики сервера.

// "Жестко" заданная программная логика сервера HTTP.
HttpChannel с = new HttpChannel(32469);
ChannelServices.RegisterChannel(с);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(SimpleRemotingAsm.RemoteMessageObject), "RemoteMsgObj.soap", WellKnownObjectMode.Singleton);

Используя элементы ‹service›, ‹wellknown› и ‹channels›, эту программную логику можно заменить следующим файлом *.config.

‹configuration›
 ‹system.runtime.remoting›
  ‹application›
   ‹service›
    ‹wellknown mode="Singleton" type="SimpleRemotingAsm.RemoteMessageObject, SimpleRemotingAsm" objectUri="RemoteMsgObj.soap"/›
   ‹/service›
   ‹channels›
    ‹channelref="http"/›
   ‹/channels›
  ‹/application›
 ‹/system.runtime.remoting›
‹/configuration›

Обратите внимание на то, что значительная часть информации удаленного сервера указывается в контексте элемента ‹service› (не сервер!). Его дочерний элемент ‹wellknown› использует три атрибута (mode, type и objectUri) для регистрации WKO-объекта в слое удаленного взаимодействия .NET. Элемент ‹channels› может содержать любое число элементов ‹channel›, которые позволяют определить вид канала (в данном случае это HTTP), открываемого на сервере. Для ТСР-каналов вместо http нужно просто использовать лексему tcp.

Поскольку в этом случае вся необходимая информация содержится в файле SimpleRemoteObjectServer.exe.config, метод Main() серверной стороны значительно упрощается. В нем остается выполнить только вызов RemotingConfiguration.Configure() и указать имя соответствующего файла конфигурации.

static void Main(string[] args) {
 // Регистрация WKO-объекта с помощью файла *.config.
 RemotingConfiguration.Configure("SimpleRemoteObjectServer.exe.config");
 Console.WriteLine("Старт сервера! Для остановки нажмите ‹Enter›");
 Console.ReadLine();
}

Оглавление книги


Генерация: 1.847. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз