Книга: C# для профессионалов. Том II
Объекты прокси
Объекты прокси
Методы Activator.GetObject()
и Activator.CreateInstance()
возвращают клиенту прокси. На самом деле создается два прокси (прозрачный и реальный). Прозрачный прокси выглядит как удаленный объект, он реализует все открытые методы удаленного объекта, вызывая метод Invoke()
реального прокси. Реальный прокси посылает сообщения в канал посредством приемников сообщений.
С помощью RemotingServices.IsTransparentProxy()
проверяется, является ли объект на самом деле прозрачным прокси. Можно также добраться до реального прокси с помощью RemotingServices.GetRealProxy()
. Используя отладчик, легко получить все свойства реального прокси:
ChannelServices.RegisterChannel(new TCPChannel());
Hello obj =
(Hello)Activator.GetObject(typeof(Hello), "tcp://localhost:8086/Hi");
if (obj == null) {
Console.WriteLine("could not locate server");
return 0;
}
if (RemotingServices.IsTransparentProxy(Obj)) {
Console.WriteLine("Using a transparent proxy");
RealProxy proxy = RemotingServices.GetRealProxy(obj);
// proxy.Invoke(message);
}
Подключаемость прокси
Реальный прокси может заменяться специально созданным прокси. Специально созданный прокси расширяет базовый класс System.Runtime.Remoting.RealProxy
. Мы получаем тип удаленного объекта в конструкторе специального прокси. Вызов конструктора для RealProxy
создает прозрачный прокси в дополнение к реальному. В конструкторе могут быть доступны зарегистрированные каналы с помощью класса ChannelServices
для создания приемника сообщений в методе IChannelSender.CreateMessageSink()
. Помимо реализации конструктора, специальный канал переопределяет метод Invoke()
. В Invoke()
получают сообщение, которое затем анализируется и посылается в приемник сообщений.
- ЧАСТЬ IV. База данных и ее объекты.
- Физические объекты
- 1.3.3. Достоинства и недостатки анонимных прокси-серверов
- 9.2. Работа прокси-сервера
- 1.3.1. Прокси-сервер – что это?
- Объекты без прототипов
- Для работы в Интернете мне надо использовать какой-то «прокси». Как это сделать?
- Объекты базы данных
- Форматирующие объекты XSL-FO
- 12.5.4. Журнал прокси-сервера squid
- Практическая работа 10. Объекты на Рабочем столе
- Объекты WordArt