Создание клиента

Теперь, когда сервер установлен нам требуется создать клиента. Создание объекта Order является точно таким же процессом, что и создание локального объекта, за исключением того, что среда выполнения удаленного доступа перехватывает запрос на создание объекта и возвращает прокси-объект, который и используется клиентом. С точки зрения разработки разработчик может интерпретировать прокси-объект точно так же, как и нормальный экземпляр объекта:

using System;

using System.Collections.Generic;

using System.Text;

using System.Runtime.Remoting;

 

namespace Client

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Клиент создан в {0} на {1}",

DateTime.Now.ToLongTimeString(),Environment.MachineName);

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

Order.Order o = new Order.Order();

Console.WriteLine(o.GetMachineName());

Console.WriteLine("Итоговая стоимость: {0}",

o.CalculateItem(12.48,2));

Console.ReadLine();

}

}

}

Чтобы откомпилировать эти приложение, мы должны создать ссылки на объект среды выполнения удаленного доступа и Order.dll. Может показаться странным, что нам требуется ссылка на Order.dll, так как объект исполняется исключительно на сервере. Клиенту, чтобы он мог осуществлять вызов серверного объекта, требуются метаданные из объекта удаленного доступа. Без этих метаданных компилятор и среда выполнения не будут иметь ни малейшего представления, что представляет из себя объект удаленного доступа. Мы также можем получить метаданные с помощью инструмента soapsuds.exe. Для краткости мы будем хранить экземпляр Order.dll на стороне клиента. За дополнительной информацией по вопросам о метаданных обратитесь к документации по .NET SDK и, в частности, по инструменту командной строки soapsuds.exe.

Точно так же, как и на сервере, клиент реализует настроечный файл для получения конфигурации своего объекта удаленного доступа. Файл называется client.exe.config и хранится в той же директории, что и клиентское приложение:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<system.runtime.remoting>

<application>

<client>

<wellknown type="Order, Order" url="http://mobil185:8080/Order.soap"/>

</client>

</application>

</system.runtime.remoting>

</configuration>