Поделиться через


Привязки и элементы привязки

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

Как правило, привязки (в частности привязки, предоставляемые системой) также имеют множество свойств конфигурации, которые отражают часто изменяемые свойства инкапсулированных элементов привязки.

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

Расширение привязок и элементов привязок

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

  • Чтобы использовать новый элемент привязки (такой как новый элемент привязки транспорта, кодирования или протокола), необходимо создать новую привязку, содержащую такой элемент привязки. Например, для добавления пользовательского элемента UdpTransportBindingElement для транспорта по протоколу UDP потребуется создать новую привязку, которая будет его использовать. Дополнительные сведения о реализации такого поведения с помощью типа System.ServiceModel.Channels.CustomBinding см. в разделе Пользовательские привязки.

  • Настройка существующих элементов привязки таким образом, чтобы предоставляемые системой привязки не предоставляли открытые свойства, например, когда требуется создать новую привязку для изменения порядка выполнения операций подписания и шифрования. Дополнительные сведения о реализации такого поведения см. в разделе Как настроить привязку, предоставляемую системой.

  • Создание стандартных корпоративных привязок, которые предоставляют только определенные параметры конфигурации, например, для создания в рамках предприятия варианта привязки WSHttpBinding, в которой невозможно отключить безопасность, т.е. привязки, которая имеет функциональность привязки WSHttpBinding, но в которой безопасность всегда включена. Дополнительные сведения см. в разделе Создание пользовательских привязок.

  • Настройка некоторых метаданных обычно (но не обязательно) для настройки или использования пользовательского элемента привязки. Дополнительные сведения об обеспечении поддержки метаданных в привязках и элементах привязки см. в разделе Конфигурация и поддержка метаданных.

Каналы, привязки и элементы привязки

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

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

Существует два общих типа каналов: каналы протоколов и каналы транспорта. Каналы транспорта отвечают за фактическую передачу сообщения от одной конечной точки сети к другой. Каналы транспорта должны иметь кодировщик сообщений по умолчанию и должны иметь возможность использовать альтернативный кодировщик сообщений, предоставляемый посредством элемента привязки кодировщика сообщений. Кодировщик сообщений отвечает за преобразование объекта System.ServiceModel.Channels.Message в представление для передачи и наоборот. Каналы протокола отвечают за реализацию протоколов уровня SOAP (например, WS-Security или WS-ReliableMessaging).

Основным требованием к каналам протокола и транспорта является реализацию в них необходимых интерфейсов каналов. Чтобы создать рабочий уровень канала требуются соответствующие фабрики и прослушиватели и т. д. Чтобы использовать реализации канала в WCF, для каждого канала требуются соответствующие элементы привязки, наследуемые от BindingElement. При этом требуется связанный элемент расширения привязки для включения в файлы конфигурации, наследуемый от BindingElementExtensionElement.

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

Дополнительные сведения о разработке каналов и соответствующих элементов привязки см. в разделе Расширение уровня каналов.