Вход/Регистрация
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
вернуться

Троелсен Эндрю

Шрифт:

Console.ReadLine;

}

 }

}

Соответствующий файл *.config почти идентичен файлу *.config сервера, созданному в предыдущем примере. Единственным заслуживающим внимания моментом здесь является определение значения URI объекта для типа CarProvider.

‹configuration›

 ‹system.runtime.remoting›

‹application›

‹service›

‹wellknown mode="Singleton" type="CarGeneralAsm.CarProvider, CarGeneralAsm" objectUri="carprovider.rem" /›

‹/service›

‹channels›

‹channel ref="tcp" port="32469" /›

‹/channels›

‹/application›

 ‹/system.runtime.remoting›

‹/configuration›

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

Наконец, рассмотрим приложение клиента, которое будет использовать MBR-тип CarProvider для получения отдельных типов JamesBondCars и типа List‹›. После получения типа от CarProvider вы посылаете его вспомогательной функции UseCar для обработки.

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

using CarGeneralAsm;

using System.Collections.Generic;

namespace CarProviderClient {

 class CarClient {

private static void UseCar(JamesBondCar c) {

Console.WriteLine("-› Имя: {0}", с.PetName);

Console.WriteLine("-› Макc. скорость: {0} ", с.MaxSpeed);

Console.WriteLine("-› Способность плавать: {0}", с.isSeaWorthy);

Console.WriteLine("-› Способность летать: {0}, c.isFlightWorthy);

Console.WriteLine;

}

static void Main(string[] args) {

RemotingConfiguration.Configure("CarProviderClient.exe.config");

// Создание поставщика машин.

CarProvider cр = new CarProvider;

// Получение первого объекта JBC.

JamesBondCar qCar = cp.GetJBCByIndex(0);

// Получение всех объектов JBC.

List‹JamesBondCar› allJBCs = cp.GetAllAutos;

// Использование первой машины.

UseCar(gCar);

// Использование всех машин в List‹›.

foreach(JamesBondCar j in allJBCs) UseCar(j);

Console.WriteLine(''Старт клиента! Для остановки нажмите ‹Enter›");

Console.ReadLine;

}

 }

}

Содержимое файла *.config на стороне клиента также соответствует ожиданиям. Здесь нужно просто изменить URL активизации.

‹configuration›

 ‹system.runtime.remoting›

‹application›

‹client displayName = "CarClient"›

‹wellknown type= "CarGeneralAsm.CarProvider, CarGeneralAsm" url="tcp://localhost:32469/carpovider.rem"/›

‹/client›

‹channels›

‹channel ref="http" /›

‹/channels›

‹/application›

 ‹/system.runtime.remoting›

‹/configuration›

Теперь запустите свои приложения сервера и клиента (конечно же, в указанном порядке) и рассмотрите соответствующий вывод. В окне консоли клиента будут представлены объекты JamesBondCar и соответствующая информация для каждого типа. Напомним, что вы взаимодействуете с List‹› и типами JamesBondCar, поэтому вы работаете с их членами в рамках домена приложения клиента, так как оба указанных типа обозначены атрибутом [Serializable].

Чтобы доказать это, измените вспомогательную функцию UseCar так, чтобы она вызывала метод TurnOnRadio для входного объекта JamesBondCar. Теперь запустите приложения сервера и клиента еще раз. Обратите внимание на то, что на машине клиента теперь появляются соответствующие сообщения. Если бы типы Car, Radio и JamesBondCar были сконфигурированы, как MBR-типы, сообщения бы появлялись на сервере. Для проверки получите каждый из указанных типов из MarshalByRefObject и перекомпилируйте все три компоновочных блока (для гарантии того, что Visual Studio 2005 скопирует самый последний CarGeneralAsm.dll в каталоги приложений клиента и сервера). Теперь при выполнении приложения окно с сообщением появится на удаленной машине.

  • Читать дальше
  • 1
  • ...
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: