Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Модель программирования WCF WEB HTTP позволяет разработчикам предоставлять веб-службы Windows Communication Foundation (WCF) через базовые HTTP-запросы, не требуя SOAP. Модель программирования WCF WEB HTTP основана на существующей модели расширяемости WCF. Он определяет следующие классы:
Модель программирования:
Каналы и инфраструктура диспетчера:
Классы служебной программы и точки расширяемости:
AspNetCacheProfileAttribute
При применении AspNetCacheProfileAttribute к операции службы указывает профиль кэша вывода ASP.NET в файле конфигурации, который должен использоваться для кэширования ответов этой операции в выходном кэше ASP.NET. Это свойство принимает только один параметр, имя профиля кэша, указывающее параметры кэша в файле конфигурации.
WebGetAttribute
Атрибут WebGetAttribute используется для пометки операции службы как операции, которая отвечает на HTTP-запросы GET. Это пассивное поведение операции ( IOperationBehavior методы не делают ничего), которое добавляет метаданные в описание операции. Применение WebGetAttribute не действует, если поведение, которое ищет эти метаданные в описании операции (в частности, WebHttpBehavior), добавлено в коллекцию поведения службы. Атрибут WebGetAttribute принимает необязательные параметры, показанные в следующей таблице.
Параметр | Описание |
---|---|
BodyStyle |
Определяет, следует ли обрамлять запросы и ответы, отправляемые и получаемые из операции службы, к которой применяется атрибут. |
RequestFormat |
Определяет форматирование сообщений запроса. |
ResponseFormat |
Определяет форматирование сообщений ответа. |
UriTemplate |
Указывает шаблон URI, который контролирует сопоставление HTTP-запросов с операцией службы, к которой применяется атрибут. |
WebHttpBinding
Класс WebHttpBinding включает поддержку XML, JSON и необработанных двоичных данных с помощью WebMessageEncodingBindingElement. Он состоит из HttpsTransportBindingElementHttpTransportBindingElement объекта и WebHttpSecurity объекта. WebHttpBinding предназначен для использования в сочетании с WebHttpBehavior.
Атрибут WebInvoke
Атрибут WebInvokeAttribute аналогичен WebGetAttributeатрибуту, но он используется для пометки операции службы как операции, которая отвечает на HTTP-запросы, отличные от GET. Это пассивное поведение операции ( IOperationBehavior методы не делают ничего), которое добавляет метаданные в описание операции. Применение WebInvokeAttribute не действует, если поведение, которое ищет эти метаданные в описании операции (в частности, WebHttpBehavior), добавлено в коллекцию поведения службы.
Атрибут WebInvokeAttribute принимает необязательные параметры, показанные в следующей таблице.
Параметр | Описание |
---|---|
BodyStyle |
Определяет, следует ли обрамлять запросы и ответы, отправляемые и получаемые из операции службы, к которой применяется атрибут. |
Method |
Указывает метод HTTP, с который сопоставляется операция службы. |
RequestFormat |
Определяет форматирование сообщений запроса. |
ResponseFormat |
Определяет форматирование сообщений ответа. |
UriTemplate |
Указывает шаблон URI, который определяет, к каким запросам GET сопоставляются операции службы, к которым применяется атрибут. |
UriTemplate
Класс UriTemplate позволяет определить набор структурны похожих URI. Шаблоны состоят из двух частей, пути и запроса. Путь состоит из ряда сегментов, разделенных косой чертой (/). Каждый сегмент может иметь литеральное значение, переменное значение (записанное в фигурных скобках [{ }], ограниченное для сопоставления содержимого ровно одного сегмента), или подстановочный знак (написанный как звездочка [*], который соответствует "остальной части пути"), который должен отображаться в конце пути. Выражение запроса может быть полностью опущено. Если он присутствует, он указывает неупорядоченный ряд пар name/value. Элементы выражения запроса могут быть либо литеральными парами (?x=2), либо парами переменных (?x={value}). Непарные значения не допускаются. UriTemplate внутренне используется моделью программирования WCF WEB HTTP для сопоставления конкретных URI или групп URI с операциями службы.
UriTemplateTable
Класс UriTemplateTable представляет ассоциативный набор UriTemplate объектов, привязанных к объекту выбора разработчика. Он позволяет сопоставить кандидатов с универсальными идентификаторами ресурсов (URI) с шаблонами в наборе и извлекать данные, связанные с соответствующими шаблонами. UriTemplateTable внутренне используется моделью программирования WCF WEB HTTP для сопоставления конкретных URI или групп URI с операциями службы.
WebServiceHost
WebServiceHost расширяет ServiceHost, чтобы упростить размещение служб веб-стилей, не связанных с SOAP. Если WebServiceHost в описании службы не найдены конечные точки, она автоматически создает конечную точку по умолчанию в базовом адресе службы. Также при создании HTTP конечной точки по умолчанию отключаются страница справки HTTP и функциональность GET языка описания веб-служб (WSDL), чтобы конечная точка метаданных не мешала работе HTTP конечной точки по умолчанию. WebServiceHost также гарантирует, что все конечные точки, использующие WebHttpBinding, имеют необходимые WebHttpBehavior подключения. Наконец, WebServiceHost автоматически настраивает привязку конечной точки для работы с связанными параметрами безопасности служб IIS при использовании в защищенном виртуальном каталоге.
WebServiceHostFactory
Класс WebServiceHostFactory используется для динамического создания WebServiceHost при размещении службы в Internet Information Services (IIS) или Windows Process Activation Service (WAS). В отличие от локальной службы, где размещенное приложение создает WebServiceHost, службы, размещенные в IIS или WAS, используют этот класс для создания WebServiceHost службы. Метод CreateServiceHost(Type, Uri[]) вызывается при получении входящего запроса для службы.
WebHttpBehavior
Класс WebHttpBehavior предоставляет необходимые средства форматирования, селекторы операций и т. д., необходимые для поддержки веб-служб на уровне модели службы. Это реализуется как поведение конечной точки (используемое в сочетании с WebHttpBinding) и позволяет указывать селекторы форматирования и селекторы операций для каждой конечной точки, что позволяет одной реализации службы предоставлять как конечные точки SOAP, так и POX.
Расширение WebHttpBehavior
WebHttpBehavior расширяемо с помощью ряда виртуальных методов: GetOperationSelector(ServiceEndpoint), GetReplyClientFormatter(OperationDescription, ServiceEndpoint), GetRequestClientFormatter(OperationDescription, ServiceEndpoint), GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint)и GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint). Разработчики могут наследовать класс от WebHttpBehavior и переопределять эти методы для настройки поведения по умолчанию.
WebScriptEnablingBehavior является примером расширения WebHttpBehavior. WebScriptEnablingBehavior позволяет конечным точкам Windows Communication Foundation (WCF) получать HTTP-запросы от клиента ASP.NET AJAX на основе браузера. Служба AJAX с использованием HTTP POST является примером использования этой точки расширяемости.
Предупреждение
При использовании WebScriptEnablingBehavior, UriTemplate не поддерживаются в пределах WebGetAttribute или атрибутах WebInvokeAttribute.
WebHttpDispatchOperationSelector
Класс WebHttpDispatchOperationSelector использует UriTemplate и UriTemplateTable классы для отправки вызовов операциям службы.
Совместимость
Модель программирования WCF WEB HTTP не использует сообщения на основе SOAP и поэтому не поддерживает протоколы WS-*. Однако вы можете предоставить один и тот же контракт с помощью двух разных конечных точек: одна с использованием SOAP, а другая без использования SOAP. Дополнительные сведения см. в статье "Практическое руководство. Предоставление контракта для SOAP и веб-клиентов ".
Безопасность
Так как модель программирования WCF WEB HTTP не поддерживает протоколы WS-* единственным способом защиты веб-службы, созданной на основе модели программирования WCF WEB HTTP, является предоставление службы с помощью SSL. Дополнительные сведения о настройке SSL с помощью IIS 7.0 см. в статье о реализации SSL в IIS.