Книга: C# для профессионалов. Том II
Простой клиент
Простой клиент
Клиент также является консольным приложением C#. И здесь делается ссылка на сборку System.Runtime.Remoting.dll
, чтобы можно было использовать класс TcpClientChannel
. Кроме того, имеется ссылка на сборку RemoteHello.dll
. Хотя объект будет создаваться на удаленном сервере, нам понадобится сборка на стороне клиента, чтобы прокси прочитал метаданные во время выполнения.
В клиентской программе создается объект TcpClientChannel
, который регистрируется в ChannelServices
. Для TcpChannel
используется конструктор по умолчанию, поэтому выбирается свободный порт. Затем используется класс Activator
для возврата прокси удаленному объекту. Прокси является типом System.Runtime.Remoting.Proxies._TransparentProxy
. Этот объект выглядит как реальный. Это делается с помощью механизма отражения, в котором считываются метаданные реального объекта. Прозрачный прокси использует реальный для пересылки сообщений в канал:
using System;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace Wrox.ProfessionalCSharp {
/// <summary>
/// Краткое описание Class1.
/// </summary>
public class HelloClient {
public static void Main(string[] args) {
ChannelServices.RegisterChannel(new TcpClientChannel());
Hello obj = (Hello)Activator.GetObject(typeof(Hello), "tcp://localhost:8086/Hi");
if (obj == null) {
Console.WriteLine("could not locate server"); return;
}
for (int i = 0; i < 5; i++) {
Console.WriteLine(obj.Greeting("Christian"));
}
}
}
}
Когда запустятся сервер и клиентская программа Hello, Christian появится пять раз на клиентской консоли. В консольном окне серверного приложения можно будет увидеть вывод, аналогичный следующему:
Первый конструктор вызывается во время регистрации удаленного объекта. Как утверждалось ранее, метод RemotingConfiguration.RegisterWellKnownServiceType()
уже создает один экземпляр. Затем для каждого вызова метода создается новый экземпляр, так как был выбран режим активации WellKnownObjectMode.SingleCall
. В зависимости от синхронизации и необходимых ресурсов, будут наблюдаться также вызовы деструктора. Если запустить клиент несколько раз, то вызовы деструктора будут присутствовать наверняка.
- Еще один простой шаг к созданию сайта
- Создание простой панели управления email-маркетингом
- 1.2. Простой клиент времени и даты
- Совместимость клиентов и серверов различных версий
- Клиенты 3-го диалекта
- СТРУКТУРА ПРОСТОЙ ПРОГРАММЫ
- Аватар идеального клиента
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Определение версии клиента
- Снятие ответственности с клиента
- Приложение 21 Образец должностной инструкции начальника отдела по работе с сетевыми клиентами
- 4. Стадии бизнес-процесса взаимодействия с клиентами