Создание серверной сборки

С помощью меню Файл=>Создать=>Проект создать проект консольного приложения с названием ConsoleServer в том же решении.

Замените имя пространства имен на SimpleRemoteObjectServer.

Изменить название класса с Program на SimpleObjServer.

Изменить название файла Program.cs на ServerProgram.

Добавить в проект серверной сборки ссылки на библиотеку System.Runtime.Remoting и на общую сборку SimpleRemotingAsm, а в файле ServerProgram.cs ввести следующие ссылки:

- using System.Runtime.Remoting;

- using System.Runtime.Remoting.Channels;

- using System.Runtime.Remoting.Channels.Http;

- using SimpleRemotingAsm;

Напомним, что серверные сборки обслуживают, в частности, и общие компоновочные блоки (сборки), содержащие объекты удаленного доступа. Роль этой серверной сборки заключается в том, чтобы открыть канал для поступающих запросов и зарегистрировать экземпляр типа RemoteMessageObject как WKO - объект. Для этого необходимо сослаться на сборки System.Runtime.Remoting.dll и SimpleRemotingAsm.dll и модифицировать функцию Main () следующим образом:

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

using SimpleRemotingAsm;

namespace SimpleRemoteObjectServer

{

class SimpleObjServer

{

static void Main(string[] args)

{

Console.WriteLine("***** SimpleRemoteObjectServer started! *****");

Console.WriteLine("Для завершения нажмите <Enter>.");

// Регистрация нового HttpChannel

HttpChannel c = new HttpChannel(32469);

ChannelServices.RegisterChannel(c);

// Регистрация WKO-типа с активизацией синглета.

RemotingConfiguration.RegisterWellKnownServiceType(

typeof(SimpleRemotingAsm.RemoteMessageObject), "RemoteMsgObj.soap",

WellKnownObjectMode.Singleton);

Console.ReadLine();

}

}

}

Метод Main () начинается с создания нового экземпляра типа HttpChannel, для которого указан произвольный идентификатор порта. Этот порт открывается путем регистрации канала с помощью статического метода ChannelServices.RegisterChannel (). После регистрации канала сборка удаленный сервер готова обрабатывать входящие сообщения, поступающие через порт номер 32469.

На заметку! Номер порта обычно выбирается произвольно (или системным администратором). Однако, следует помнить, что порты с номерами ниже 1024 зарезервированы для системного использования.

Затем, чтобы зарегистрировать тип SimpleRemotingAsm.RemoteMessageObject как WKO, необходимо использовать метод:

RemotingConfiguration.RegisterWellKnownServiceType ().

Первый аргумент этого метода несет информацию о регистрируемом типе. Второй параметр RegisterWellKnownServiceType () является произвольно выбранная строка (по вашему усмотрению), которая будет использована для идентификации регистрируемого объекта при обмене данными через границы доменов приложений. Таким образом информируется среда CLR о том, что этот объект должен распознаваться клиентом по имени RemoteMsgObj. soap.

Последним параметром является член перечисления WellKnownObjectMode, который определяется как WellKnownObjectMode.Singleton. Следует вспомнить, что при использовании WKO-синглета все поступающие запросы обслуживаются одним экземпляром RemoteMessageObject. После построения серверной сборки перейдем к созданию программного кода клиента.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: