Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Создание сборки клиента






Теперь, когда есть приемник, который будет обслуживать удаленный объект, остается последний шаг — построение сборки, которая будет запрашивать доступ к его соответствующим возможностям. Для этого необходимо добавить в ваше решение новый проект консольного приложения клиента, установить в класса клиента ссылку на 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 SimpleRemoteObjectClient

{

class SimpleObjClient

{

static void Main(string[] args)

{

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

Console.WriteLine(" Hit enter to end.");

// Создание нового HttpChannel

HttpChannel c = new HttpChannel();

ChannelServices.RegisterChannel(c);

// Получение прокси для удаленного доступа к WKO-типу

object remoteObj = Activator.GetObject(

typeof(SimpleRemotingAsm.RemoteMessageObject),

" https://localhost: 32469/RemoteMsgObj.soap");

// Использование удаленного объекта

RemoteMessageObject simple = (RemoteMessageObject)remoteObj;

simple.DisplayMessage(" Hello from the client! ");

Console.WriteLine(" Server says: {0}", simple.ReturnMessage());

Console.ReadLine();

}

}

}

Здесь следует обратить внимание на следующее. Во-первых, клиент также должен зарегистрировать HTTP -канал, но идентификатор порта при этом не указывается, поскольку конечная точка канала задается адресом URL активизации, посылаемым клиентом. Поскольку клиент взаимодействует с запрашиваемым WKO- типом, то необходимо активизировать конструктор типа, заданный по умолчанию. Для этого вызывается метод Activator.GetObject (), с двумя аргументами. Первый — информация о типе, описывающая удаленный объект, с которым нужно взаимодействовать. Поскольку метод Activator.GetObject () требует метаданных описания объекта, то становится ясно, почему для клиента также требуется иметь ссылку на общую сборку.

Второй параметр Activator.GetObject () представляется как URL активизации. Значение URL активизации, которое описывает WKO -тип, можно представить в следующем обобщенном формате:

СхемаПротокола: // ИмяКомпьютера: Порт / UriОбъекта

И, наконец, следует отметить, что метод Activator.GetObject () возвращает общий тип System.Object и поэтому для получения доступа к членам RemoteMessageObject необходимо использовать явное приведение типа.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.