Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе рассматриваются критерии выбора трех основных транспортов, включенных в Windows Communication Foundation (WCF): HTTP, TCP и именованных каналов. WCF также включает транспорт для управления очередью сообщений (также известный как MSMQ), но этот документ не рассматривает управление очередью сообщений.
Модель программирования WCF отделяет операции конечных точек (как выражено в контракте службы) от механизма транспорта, который подключает две конечные точки. Это дает вам гибкость в определении того, как предоставить доступ к вашим услугам в сети.
В WCF вы указываете, как передавать данные по сети между конечными точками с помощью привязки, состоящей из последовательности элементов привязки. Транспорт представлен элементом транспортной привязки, который является частью связывания. Привязка включает необязательные элементы привязки протокола, такие как безопасность, обязательный элемент привязки кодировщика сообщений и обязательный элемент привязки транспорта. Транспорт отправляет или получает сериализованную форму сообщения в или из другого приложения.
Если необходимо подключиться к существующему клиенту или серверу, возможно, вам не придется выбирать использование определенного транспорта. Однако службы WCF могут быть доступны через несколько конечных точек, каждый из которых имеет другой транспорт. Если один транспорт не охватывает целевую аудиторию службы, рассмотрите возможность предоставления службы на нескольких конечных точках. Клиентские приложения затем могут использовать конечную точку, которая лучше всего подходит для них.
После выбора транспорта необходимо выбрать привязку, которая использует ее. Вы можете выбрать системную привязку (см. System-Provided привязки) или создать собственную пользовательскую привязку (см. раздел "Пользовательские привязки"). Вы также можете создать собственную привязку. Дополнительные сведения см. в статье «Создание User-Defined привязок».
Преимущества каждого транспорта
В этом разделе описываются основные причины выбора любого из трех основных транспортных средств, включая подробную диаграмму принятия решений для выбора среди них.
Когда следует использовать транспорт HTTP
HTTP — это протокол запроса и ответа между клиентами и серверами. Наиболее распространенное приложение состоит из клиентов веб-браузера, взаимодействующих с веб-сервером. Клиент отправляет запрос на сервер, который прослушивает сообщения запроса клиента. Когда сервер получает запрос, он возвращает ответ, содержащий состояние запроса. При успешном выполнении возвращаются необязательные данные, такие как веб-страница, сообщение об ошибке или другие сведения. Дополнительные сведения о протоколе HTTP см. в разделе HTTP — протокол передачи гипертекстов.
Протокол HTTP не основан на подключении— после отправки ответа состояние не поддерживается. Для обработки транзакций с несколькими страницами приложение должно сохранять любое необходимое состояние.
В WCF привязка транспорта HTTP оптимизирована для взаимодействия с устаревшими системами, отличными от WCF. Если все стороны, участвующие в обмене, используют WCF, привязки на основе TCP или именованных каналов работают быстрее. Дополнительные сведения см. в разделах NetTcpBinding и NetNamedPipeBinding.
Когда следует использовать транспорт TCP
TCP — это служба доставки, ориентированная на поток, с комплексным обнаружением ошибок и исправлением ошибок. На основе подключения означает, что перед обменом данными устанавливается сеанс обмена данными между узлами. Узел — это любое устройство в сети TCP/IP, определяемой логическим IP-адресом.
TCP обеспечивает надежную доставку данных и удобство использования. В частности, TCP уведомляет отправителя о доставке пакетов, гарантирует, что пакеты доставляются в том же порядке, в котором они отправляются, повторно передает потерянные пакеты и гарантирует, что пакеты данных не дублируются. Обратите внимание, что эта надежная доставка применяется между двумя узлами TCP/IP и не совпадает с WS-ReliableMessaging, которая применяется между конечными точками, независимо от того, сколько промежуточных узлов они могут включать.
Транспорт TCP WCF оптимизирован для сценария, в котором оба конца связи используют WCF. Эта привязка является самой быстрой привязкой WCF для сценариев, связанных с обменом данными между разными компьютерами. Сообщения обмениваются через BinaryMessageEncodingBindingElement для оптимизированной передачи сообщений. TCP обеспечивает дуплексную связь и поэтому может использоваться для реализации дуплексных контрактов, даже если клиент находится за трансляцией сетевых адресов (NAT).
Когда следует использовать транспорт именованного канала
Именованный канал — это объект в ядре операционной системы Windows, например раздел общей памяти, который может использоваться для обмена данными. Именованный канал имеет имя и может использоваться для односторонней или дуплексной связи между процессами на одном компьютере.
Если требуются обмен данными между различными приложениями WCF на одном компьютере и вы хотите запретить обмен данными с другими машинами, то используйте транспорт именованных каналов. Дополнительное ограничение заключается в том, что процессы, работающие с удаленного рабочего стола Windows, могут быть ограничены тем же сеансом удаленного рабочего стола Windows, если у них нет повышенных привилегий.
Предупреждение
При использовании транспорта именованного канала с резервированием слабого URL-адреса с подстановочным знаком на нескольких сайтах, размещенных в IIS, может произойти следующая ошибка: в службе активации протокола "net.pipe" под названием "NetPipeActivator" произошла ошибка при попытке прослушивания сайта "2", в результате чего протокол временно отключается для этого сайта. Дополнительные сведения см. в сообщении об исключении. URL:WeakWildcard:net.pipe:/<machine name>/Status: ConflictingRegistration Exception: Process Name: SMSvcHost Process ID: 1076\
Точки принятия решений для выбора транспорта
В следующей таблице описаны распространенные точки принятия решений, используемые для выбора транспорта. Следует учитывать любые дополнительные атрибуты и транспорты, которые применяются к вашему приложению. Определите атрибуты, важные для приложения, определите транспорты, которые выгодно связываются с каждым из атрибутов, а затем выберите транспорты, которые лучше всего работают с набором атрибутов.
Свойство | Описание | Предпочитаемые транспорты |
---|---|---|
Диагностика | Диагностика позволяет автоматически обнаруживать проблемы с подключением к транспорту. Все транспорты поддерживают возможность отправки обратно сведений о сбоях, связанных с подключением. Однако WCF не включает средства диагностики для изучения проблем с сетью. | Отсутствует |
Хостинг | Все конечные точки WCF должны размещаться в приложении. IIS 6.0 и более ранних версий поддерживают только размещение приложений, использующих транспорт HTTP. В Windows Vista добавлена поддержка для размещения всех транспортов WCF, включая TCP и именованные каналы. Дополнительные сведения см. в разделах «Размещение в Internet Information Services» и «Размещение в службе активации процессов Windows». | HTTP |
Инспекция | Проверка — это возможность извлечения и обработки информации из сообщений во время передачи. Протокол HTTP отделяет маршрутизацию и управление данными, что упрощает создание средств для проверки и анализа сообщений. Транспорты, которые легко проверять, также могут требовать меньше вычислительной мощности у сетевых устройств. Уровень безопасности, используемый, влияет на возможность проверки сообщений. | HTTP |
Задержка | Задержка — это минимальное время, необходимое для завершения обмена сообщениями. Все сетевые операции имеют большую или меньшую задержку в зависимости от выбора транспорта. Использование дуплексной или односторонней связи с транспортом, собственный шаблон обмена сообщениями которого — запрос-ответ, например HTTP, может вызвать дополнительную задержку из-за принудительной корреляции сообщений. В этой ситуации рекомендуется использовать транспорт, чей собственный шаблон обмена сообщениями дуплексен, например TCP. | TCP, именованный Труба |
Охват | Охват транспорта отражает его способность подключаться к другим системам. Именованный канал имеет очень ограниченную доступность; он может подключаться только к сервисам, работающим на одном компьютере. Транспорты TCP и HTTP имеют отличный охват и могут проникать в некоторые конфигурации NAT и брандмауэра. Дополнительные сведения см. в статье "Работа с NATs и брандмауэрами". | HTTP, TCP |
Безопасность | Безопасность — это возможность защиты сообщений во время передачи путем предоставления конфиденциальности, целостности или проверки подлинности. Конфиденциальность защищает сообщение от проверки, целостность защищает сообщение от изменения, а проверка подлинности обеспечивает гарантии о отправителе или получателе сообщения. WCF поддерживает безопасность передачи как на уровне сообщения, так и на уровне транспорта. Безопасность сообщений совмещается с транспортом, если поддерживается буферный режим передачи. Поддержка безопасности транспорта зависит от выбранного транспорта. Транспорты HTTP, TCP и именованные каналы имеют сопоставимость в поддержке транспортной безопасности. |
Все |
Пропускная способность | Пропускная способность измеряет объем данных, которые могут передаваться и обрабатываться за определенный период времени. Как и задержка, выбранный транспорт может повлиять на пропускную способность операций службы. Максимизация пропускной способности для транспорта требует минимизации затрат на передачу содержимого, а также минимизации времени ожидания завершения обмена сообщениями. Как транспорт TCP, так и именованный канал добавляют небольшие накладные расходы на тело сообщения и поддерживают собственную дуплексную схему, уменьшающую время ожидания ответов на сообщения. | TCP, именованный канал |
Инструментальная оснастка | Инструменты обеспечивают поддержку сторонних приложений в рамках протокола для разработки, диагностики, размещения и других действий. Разработка средств и программного обеспечения для работы с протоколом HTTP означает особенно большие инвестиции. | HTTP |