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

Создание компоновочного блока клиента

Создание компоновочного блока клиента

Теперь, когда у вас есть приемник, который будет обслуживать объекты уда-ленного доступа, остается создать компоновочный блок, который запросит доступ к соответствующим возможностям. Здесь снова создайте простое консольное приложение. Установите ссылку на 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! ***");
   Console.WriteLine("Для завершения нажмите ‹Enter›");
   // Создание нового HttpChannel.
   HttpChannel с = new HttpChannel();
   ChannelServices.RegisterChannel(c);
   // Получение агента для удаленного доступа к WKO-типу.
   object remoteObj = Activator.GetObject(typeof(SimpleRemotingAsm.RemoteMessageObject), "http://localhost:32469/RemoteMsgObj.soap");
   // Использование удаленного объекта.
   RemoteMessageObject simple = (RemoteMessageObject)remoteObj;
   simple.DisplayMessage("Привет от клиента!");
   Console.WriteLine("Сервер говорит: {0}", simple.ReturnMessage());
   Console.ReadLine();
  }
 }
}

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

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

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

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

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


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