Привязки, предоставляемые системой

Привязки указывают, какой механизм связи использовать при взаимодействии с конечной точкой, а также способ подключения к конечной точке. Привязка содержит следующие элементы.

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

  • Элемент транспорта определяет основной транспортный протокол, используемый при отправке сообщений конечной точке, например TCP или HTTP.

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

В этой статье представлены сведения обо всех предоставляемых системой привязках Windows Communication Foundation (WCF). Если ни одна из этих привязок не отвечает в точности требованиям приложения, можно создать пользовательскую привязку. Дополнительные сведения о создании настраиваемых привязок см. в разделе Пользовательские привязки.

Безопасная привязка с возможностью взаимодействия, которая поддерживает протокол WS-Federation, позволяет организациям в федерации эффективно проверять подлинность пользователей и авторизовать их.

Важно!

Следует всегда выбирать привязку, предусматривающую функции безопасности. По умолчанию для всех привязок, кроме <элемента basicHttpBinding> , включена безопасность. При выборе привязки без функций безопасности или при отключении функций безопасности обязательно защищайте данные каким-либо иным способом, например путем хранения в защищенном центре обработки данных или в изолированной сети.

Важно!

Не используйте дуплексные контракты с привязками, которые не поддерживают безопасность или в которых отключены функции безопасности, если данные не защищены каким-либо иным образом.

В состав WCF входят следующие привязки.

Привязка Элемент настройки Описание
BasicHttpBinding <basicHttpBinding> Привязка, которая подходит для взаимодействия с веб-службами, совместимыми с WS-Basic Profile, например службами, основанными на веб-службах ASP.NET Web (ASMX). Эта привязка использует HTTP как транспорт и формат text/XML как кодирование сообщений по умолчанию.
WSHttpBinding <wsHttpBinding> Безопасная привязка с возможностью взаимодействия, которая подходит для недуплексных контрактов службы.
WSDualHttpBinding <wsDualHttpBinding> Безопасная привязка с возможностью взаимодействия, которая подходит для дуплексных контрактов службы или взаимодействия через посредников SOAP.
WSFederationHttpBinding <wsFederationHttpBinding> Безопасная привязка с возможностью взаимодействия, которая поддерживает протокол WS-Federation, позволяющий организациям в федерации эффективно проверять подлинность пользователей и авторизовать их.
NetHttpBinding <netHttpBinding> Привязка, предназначенная для работы со службами HTTP или WebSocket и использующая по умолчанию двоичное кодирование.
NetHttpsBinding <netHttpsBinding> Безопасная привязка, предназначенная для работы со службами HTTP или WebSocket и использующая по умолчанию двоичное кодирование.
NetTcpBinding <Nettcpbinding> Безопасная и оптимизированная привязка, которая подходит для обмена данными между приложениями WCF на разных компьютерах.
NetNamedPipeBinding <netNamedPipeBinding> Безопасная, надежная и оптимизированная привязка, которая подходит для обмена данными между приложениями WCF на одном компьютере.
NetMsmqBinding <Netmsmqbinding> Поставленная в очередь привязка, которая подходит для обмена данными между приложениями WCF на разных компьютерах.
NetPeerTcpBinding <netPeerTcpBinding> Привязка, которая обеспечивает безопасный обмен данными между несколькими компьютерами.
MsmqIntegrationBinding <msmqIntegrationBinding> Привязка, которая подходит для обмена данными между приложением WCF и существующими приложениями очереди сообщений (MSMQ) на разных компьютерах.
BasicHttpContextBinding <basicHttpContextBinding> Привязка, которая подходит для обмена данными с веб-службами, совместимыми с WS-Basic Profile, и позволяет использовать для обмена контекстом файлы cookie HTTP.
NetTcpContextBinding <netTcpContextBinding> Безопасная и оптимизированная привязка, которая подходит для обмена данными между приложениями WCF на разных компьютерах и позволяет использовать для обмена контекстом заголовки SOAP.
WebHttpBinding <webHttpBinding> Привязка, используемая при настройке конечных точек для веб-служб WCF, предоставляемых через HTTP-запросы, а не через сообщения SOAP.
WSHttpContextBinding <wsHttpContextBinding> Безопасная привязка с возможностью взаимодействия, которая подходит для недуплексных контрактов служб и позволяет использовать для обмена контекстом заголовки SOAP.
UdpBinding <udpBinding> Привязка, используемая при отправке группы простых сообщений большому количеству клиентов одновременно.

В следующей таблице приведены возможности каждой предоставляемой системой привязки. В столбцах таблицы приведены привязки; возможности приведены в строках и подробно описаны во второй таблице. В следующей таблице приводится ключ к используемым аббревиатурам привязок. Чтобы выбрать привязку, определите, какой столбец удовлетворяет всем требуемым функциям, указанным в строке.

Привязка Совместимость Режим безопасности (по умолчанию) Сеанс
(по умолчанию)
Transactions Дуплекс Кодирование (по умолчанию) Потоковые операторы
(по умолчанию)
BasicHttpBinding Basic Profile 1.1 (Нет), Транспорт, Сообщение, Смешанный (нет) (нет) Недоступно Текстовое, (MTOM) Да
(с буферизацией)
WSHttpBinding WS Транспорта, (сообщения), смешанный (Нет), Надежный сеанс, Безопасный сеанс (Нет), да Недоступно (Текстовое), MTOM Нет
WSDualHttpBinding WS (Сообщения), нет (Надежный сеанс), Безопасный сеанс (Нет), да Да (Текстовое), MTOM Нет
WSFederationHttpBinding WS-Federation (Сообщения), смешанный, нет (Нет), Надежный сеанс, Безопасный сеанс (Нет), да Нет (Текстовое), MTOM Нет
NetHttpBinding .NET (Нет), Транспорт, Сообщение, TransportWithMessageCredential, TransportCredentialOnly См. примечание ниже Нет См. примечание ниже (Двоичная), текст, MTOM Да (с буферизацией)
NetHttpsBinding .NET (Транспорт), TransportWithMessageCredential См. примечание ниже Нет См. примечание ниже (Двоичная), текст, MTOM Да
(с буферизацией)
NetTcpBinding .NET (Транспорта), сообщения, нет, смешанный (Транспорт), Надежный сеанс, Безопасный сеанс (Нет), да Да Двоичные данные Да
(с буферизацией)
NetNamedPipeBinding .NET (Транспорта), нет Нет, (Транспорт) (Нет), да Да Двоичные данные Да
(с буферизацией)
NetMsmqBinding .NET Сообщения, (транспорта), нет (Нет), Транспорт (Нет), да Нет Двоичные данные Нет
NetPeerTcpBinding Одноранговый узел (Транспорт) (нет) (нет) Да Нет
MsmqIntegrationBinding MSMQ (Транспорт) (нет) (Нет), да Недоступно Недоступно Нет
BasicHttpContextBinding Basic Profile 1.1 (Нет), Транспорт, Сообщение, Смешанный (нет) (нет) Недоступно Текстовое, (MTOM) Да
(с буферизацией)
NetTcpContextBinding .NET (Транспорта), сообщения, нет, смешанный (Транспорт), Надежный сеанс, Безопасный сеанс (Нет), да Да Двоичные данные Да
(с буферизацией)
WSHttpContextBinding WS Транспорта, (сообщения), смешанный (Нет), Надежный сеанс, Безопасный сеанс (Нет), да Недоступно Текстовое, (MTOM) Нет
UdpBinding

Примечание: Взаимодействие может быть достигнуто путем реализации стандартной спецификации SOAP-over-UDP, которую реализует эта привязка.
.NET (нет) (нет) (нет) Недоступно (Текст) Нет

Важно!

NetHttpBinding - это привязка, предназначенная для использования служб HTTP или WebSocket и использующая по умолчанию двоичное кодирование. NetHttpBinding определяет, будет ли она использоваться с дуплексным контрактом и контрактом типа "запрос-ответ" и изменит ли свое поведение для соответствия контракту. HTTP будет использоваться для контрактов типа "запрос-ответ", а WebSockets — для дуплексных контрактов. Это поведение можно переопределить с помощью параметра привязки WebSocketTransportUsage WhenDuplex (это значение по умолчанию, поведение которого описано выше). Never - это исключает использование службы WebSockets. Попытка использования дуплексного контракта с этим параметром приведет к возникновению исключения. Always - это обеспечивает использование службы WebSockets даже для контрактов типа «запрос-ответ». NetHttpBinding поддерживает надежные сеансы как в режиме HTTP, так и в режиме WebSocket. В режиме WebSocket сеансы предоставляются транспортом.

В следующей таблице поясняются возможности, упомянутые в предыдущей таблице.

Компонент Описание
Тип взаимодействия Указывает протокол или технологию, взаимодействие с которыми обеспечивает привязка.
Безопасность Указывает способ защиты канала.
— "Нет". Сообщение SOAP не защищено, и проверка подлинности клиента не выполняется.
— "Транспорт". Требования безопасности выполняются на транспортном уровне.
— "Сообщение". Требования безопасности выполняются на уровне сообщений.
— "Смешанный". Утверждения передаются в сообщении, а требования целостности и конфиденциальности обеспечиваются на транспортном уровне.
Сеанс Указывает, поддерживает ли привязка контракты сеансов.
Transactions Указывает, включены ли транзакции.
Дуплекс Указывает, поддерживаются ли дуплексные контракты. Обратите внимание, что для этой возможности необходима поддержка сеансов в привязке.
Кодирование Указывает формат сообщения при передаче по линиям связи. Допустимые значения:
— "Текст" (например, UTF-8).
— "Двоичная"
— "MTOM" (подсистема оптимизации передачи сообщений): метод эффективного кодирования двоичных XML-элементов в контексте конверта SOAP.
Потоковые операторы Указывает, поддерживается ли потоковая передача входящих и исходящих сообщений. Для задания этого значения используется свойство TransferMode привязки. Допустимые значения:
- Buffered: и сообщение запроса, и сообщение ответа буферизуются.
- Streamed: и сообщение запроса, и сообщение ответа передаются потоком.
- StreamedRequest: сообщение запроса передается потоком, а сообщение ответа буферизируется.
- StreamedResponse: сообщение запроса буферизируется, а сообщение ответа передается потоком.

См. также раздел