Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 431
Эндрю Троелсен
Вспомните из главы 11 о том, что файл *.config можно использовать для "подсказок" среде CLR в отношений места нахождения внешних компоновочных блоков, необходимых для работы приложения. Эти же файлы *.config могут использоваться и для информирования CLR о целом ряде параметров удаленного взаимодействия, как на стороне клиента, так и на стороне сервера.
‹configuration›
‹!-- параметры удаленного взаимодействия клиента и сервера --›
‹!-- информация привязки компоновочного блока --›
‹/runtime
Если вам нечего указать в отношении привязки компоновочного блока, вы можете опустить соответствующий элемент ‹runtime› и использовать в файле *.config шаблон следующего вида.
‹configuration›
‹!-- параметры удаленного взаимодействия клиента и сервера --›
‹/configuration›
Создание файлов *.config сервера
Файлы конфигурации на стороне сервера позволяют объявить объекты, которые будут доступны для удаленных вызовов, а также задать параметры канала и порта. Рассмотрим следующий вариант программной логики сервера.
// "Жестко" заданная программная логика сервера HTTP.
HttpChannel с = new HttpChannel(32469);
ChannelServices.RegisterChannel(с);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(SimpleRemotingAsm.RemoteMessageObject), "RemoteMsgObj.soap", WellKnownObjectMode.Singleton);
Используя элементы ‹service›, ‹wellknown› и ‹channels›, эту программную логику можно заменить следующим файлом *.config.
‹configuration›
‹application›
‹service›
‹wellknown mode="Singleton" type="SimpleRemotingAsm.RemoteMessageObject, SimpleRemotingAsm" objectUri="RemoteMsgObj.soap"/›
‹/service›
‹channels›
‹channelref="http"/›
‹/channels›
‹/application›
‹/configuration›
Обратите внимание на то, что значительная часть информации удаленного сервера указывается в контексте элемента ‹service› (не
Поскольку в этом случае вся необходимая информация содержится в файле SimpleRemoteObjectServer.exe.config, метод Main() серверной стороны значительно упрощается. В нем остается выполнить только вызов RemotingConfiguration.Configure() и указать имя соответствующего файла конфигурации.
static void Main(string[] args) {
// Регистрация WKO-объекта с помощью файла *.config.
RemotingConfiguration.Configure("SimpleRemoteObjectServer.exe.config");
Console.WriteLine("Старт сервера! Для остановки нажмите ‹Enter›");
Console.ReadLine();
}
Создание файлов *.config клиента
Клиенты тоже могут использовать файлы