Выбор канала

Этот раздел относится к технологии прежних версий, которая сохраняется для обеспечения обратной совместимости с существующими приложениями и не рекомендуется для разработки новых приложений. Сейчас распределенные приложения следует создавать с помощью Windows Communication Foundation (WCF).

Инфраструктура удаленного взаимодействия .NET Framework предоставляет реализации следующих каналов.

IpcChannel

Класс IpcChannel использует именованные каналы, чтобы обеспечить высокоскоростное межпроцессное взаимодействие для приложений, выполняющихся в нескольких процессах на одном компьютере. Объект типа IpcChannel:

  • обеспечивает взаимодействие между отправителем и получателем с помощью именованных каналов;

  • поддерживает кодирование данных в двоичный формат и формат сериализации SOAP, принятый в качестве отраслевого стандарта;

  • создает и использует ChannelDataStore для ссылок на объекты;

  • поддерживает олицетворение и делегирование;

  • поддерживает списки управления доступом (ACL) в именованном канале для расширенного управления доступом.

Объект IpcChannel следует использовать, когда приложение должно взаимодействовать с другим приложением, которое выполняется в другом процессе на том же компьютере. Поскольку объект IpcChannel использует именованные каналы, это обычно позволяет добиваться очень высокой производительности при передаче данных и использовать олицетворение и делегирование для управления доступом к удаленному объекту. Эта функция бывает особенно полезной между вторым и третьим уровнями трехуровневого приложения, которое должно выполняться под нагрузкой.

TcpChannel

Класс TcpChannel использует двоичный модуль форматирования для сериализации всех сообщений в двоичный поток и для передачи потока по целевому универсальному коду ресурса (URI) с помощью протокола TCP. Объект TcpChannel выполняет следующие функции:

  • обеспечивает взаимодействие между отправителем и получателем с помощью сокетов TCP;

  • поддерживает кодирование данных в двоичный формат и формат сериализации SOAP, принятый в качестве отраслевого стандарта;

  • создает и использует ChannelDataStore для ссылок на объекты;

  • поддерживает олицетворение и делегирование;

  • поддерживает шифрование SSPI.

Объект TcpChannel открывает и кэширует столько подключений, сколько имеется потоков, в настоящий момент создающих запросы к удаленному серверу. Подключения к сокету закрываются на стороне клиента через 15–20 секунд бездействия.

При построении нескольких приложений, использующих удаленное взаимодействие .NET Framework, легко по ошибке использовать объект HttpChannel для подключения к домену серверного приложения, которое ожидает передачи данных через канал TcpChannel. В этом случае клиент получает следующее исключение: "Базовое соединение закрыто: непредвиденная ошибка при приеме.". Если клиент получил это исключение, необходимо проверить клиент и сервер на наличие несоответствующих каналов.

HttpChannel

Объект HttpChannel передает сообщения удаленным объектам и обратно с помощью протокола SOAP. Все сообщения передаются через модуль SoapFormatter, где сообщение переводится в формат XML и сериализуется, а к потоку добавляются необходимые заголовки SOAP. Если также задан двоичный модуль форматирования, создается поток двоичных данных. После этого поток данных передается по целевому универсальному коду ресурса (URI) с помощью протокола HTTP. Класс HttpChannel совместим со стандартом SOAP 1.1 и выполняет следующие операции:

  • обеспечивает взаимодействие между отправителем и получателем, используя в качестве транспортного протокола HTTP;

  • поддерживает кодирование данных в формат SOAP, который является стандартом кодирования XML, а также в двоичный формат;

  • настраивает получатель для приема HTTP-запросов и отправки HTTP-ответов в ASP.NET и через сокет TCP;

  • создает и использует ChannelDataStore для ссылок на объекты;

  • поддерживает олицетворение и делегирование;

  • поддерживает шифрование SSPI.

4b3scst2.note(ru-ru,VS.100).gifПримечание
Чтобы использовать объект HttpChannel на клиенте с обозревателем Microsoft Internet Explorer, нельзя автоматически настроить параметры прокси-сервера в Internet Explorer. Вместо этого необходимо явным образом задать в Internet Explorer параметры прокси-сервера.

Объект HttpChannel открывает только заданное количество одновременных подключений для заданного сервера. По умолчанию число подключений равно двум, но с помощью атрибута clientConnectionLimit в файле конфигурации приложения можно изменить значение по умолчанию.

При построении нескольких приложений, использующих удаленное взаимодействие .NET Framework легко по ошибке использовать объект HttpChannel для подключения к домену серверного приложения, которое ожидает передачи данных через канал TcpChannel. В этом случае клиент получает следующее исключение: "Базовое соединение закрыто: непредвиденная ошибка при приеме.". Если клиент получил это исключение, необходимо проверить клиент и сервер на наличие несоответствующих каналов.

См. также

Справочник

HttpChannel
TcpChannel
IpcChannel

Основные понятия

Каналы