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


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

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

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

Привязка должна содержать точно один элемент привязки транспорта. Каждый элемент привязки транспорта содержит элемент привязки кодирования сообщений по умолчанию, который можно переопределить путем добавления в привязку не более одного элемента привязки кодирования сообщений. Кроме элементов привязки транспорта и кодирования, привязка может содержать любое количество элементов привязки протокола, которые совместно реализуют функции, необходимые для обработки и отправки сообщения 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каждого канала, должен быть связанный элемент расширения привязки.

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

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