Share via


Modelo de objetos de programación web de WCF

El modelo de programación web HTTP permite a los desarrolladores exponer los servicio web Windows Communication Foundation (WCF) a través de solicitudes HTTP básicas sin necesidad de SOAP. El modelo de programación web de HTTP se genera a partir del modelo de extensibilidad WCF existente. Define las clases siguientes:

Modelo de programación:

Infraestructura de canales y envíos:

Clases de utilidades y puntos de extensibilidad:

WebGetAttribute

El atributo WebGetAttribute se utiliza para marcar una operación de servicio como operación que responde a las solicitudes de HTTP GET. Es un comportamiento de operación pasivo (los métodos IOperationBehavior no hacen nada) que agrega los metadatos a la descripción de la operación. La aplicación de WebGetAttribute no tiene ningún efecto, a menos que se agregue al comportamiento del servicio un comportamiento que busque estos metadatos en la descripción de la operación (concretamente, WebHttpBehavior). El atributo WebGetAttribute adopta los parámetros opcionales de la siguiente tabla.

Parámetro Descripción

BodyStyle

Controla si encapsular las solicitudes y respuestas enviadas y recibidas desde la operación de servicio a la que se aplica el atributo.

RequestFormat

Controla cómo se da formato a los mensajes de solicitud.

ResponseFormat

Controla cómo se da formato a los mensajes de respuesta.

UriTemplate

Especifica la plantilla URI que controla qué solicitudes GET se asignan a la operación de servicio a la que se aplica el atributo.

WebHttpBinding

WebHttpBinding incorpora los codificadores de tipo XML, JSON y de datos binarios sin formato que utilizan WebMessageEncodingBindingElement. Se compone de un HttpsTransportBindingElement, un HttpTransportBindingElement, y un objeto WebHttpSecurity. WebHttpBinding se ha diseñado para utilizarse junto con WebHttpBehavior.

WebInvokeAttribute

El atributo WebInvokeAttribute es similar a WebGetAttribute, pero se utiliza para marcar una operación de servicio como una operación que responde a las solicitudes HTTP que no son GET. Es un comportamiento de operación pasivo (los métodos IOperationBehavior no hacen nada) que agrega los metadatos a la descripción de la operación. La aplicación de WebInvokeAttribute no tiene ningún efecto, a menos que se agregue al comportamiento del servicio un comportamiento que busque estos metadatos en la descripción de la operación (concretamente, WebHttpBehavior).

El atributo WebGetAttribute adopta los parámetros opcionales de la siguiente tabla.

Parámetro Descripción

BodyStyle

Controla si encapsular las solicitudes y respuestas enviadas y recibidas desde la operación de servicio a la que se aplica el atributo.

Method

Especifica el método HTTP al que se asigna la operación del servicio.

RequestFormat

Controla cómo se da formato a los mensajes de solicitud.

ResponseFormat

Controla cómo se da formato a los mensajes de respuesta.

UriTemplate

Especifica la plantilla URI que controla qué solicitudes GET se asignan a la operación de servicio a la que se aplica el atributo.

UriTemplate

La clase UriTemplate permite definir un conjunto de direcciones URI estructuralmente similares. Las plantillas se componen de dos partes, una ruta de acceso y una consulta. Una ruta de acceso consiste en una serie de segmentos delimitados por una barra diagonal (/). Cada segmento puede tener un valor literal, un valor variable (escrito entre llaves [{}], necesariamente debe coincidir con el contenido exacto de un segmento), o un carácter comodín (se escribe como un asterisco [*] y coincide con "el resto de la ruta de acceso"), que debe aparecer al final de la ruta de acceso. La expresión de consulta puede omitirse completamente. Si está presente, especifica una serie no ordenada de pares nombre/valor. Los elementos de la expresión de consulta pueden ser pares literales (?x=2) o pares variables (?x = {valor}). No se permiten valores no emparejados. El modelo de programación web de WCF utiliza UriTemplate internamente para asignar direcciones URI específicas o grupos de direcciones URI a las operaciones del servicio.

UriTemplateTable

La clase UriTemplateTable representa un conjunto asociativo de objetos UriTemplate enlazado a un objeto elegido por el desarrollador. Permite hacer coincidir los identificadores uniformes de recursos (URI) con las plantillas del conjunto, y recuperar los datos asociados a las plantillas coincidentes. El modelo de programación web de WCF utiliza internamente UriTemplateTable para asignar direcciones URI específicas o grupos de direcciones URI a las operaciones del servicio.

WebServiceHost

WebServiceHost extiende ServiceHost para facilitar el hospedaje de un servicio de estilo Web no SOAP. Si WebServiceHost no encuentra extremos en la descripción del servicio, crea automáticamente un extremo predeterminado en la dirección base del servicio. Cuando se crea un extremo HTTP predeterminado, WebServiceHost también deshabilita la página de ayuda HTTP y la funcionalidad GET del lenguaje de descripción de servicios web (WSDL), de modo que el extremo de los metadatos no interfiere con el extremo HTTP predeterminado. WebServiceHost también garantiza que todos los extremos que utilizan WebHttpBinding poseen el WebHttpBehavior necesario. Finalmente, cuando se utiliza en un directorio virtual protegido, WebServiceHost configura automáticamente el enlace del extremo para trabajar con la configuración de seguridad de Internet Information Services (IIS) asociada.

WebServiceHostFactory

La clase WebServiceHostFactory se utiliza para la creación dinámica de un WebServiceHost cuando un servicio se hospeda en IIS o en WAS (servicio de activación de procesos de Windows). A diferencia de un servicio hospedado en si mismo, en el que la aplicación de hospedaje crea la instancia WebServiceHost, los servicios hospedados en IIS o WAS utilizan esta clase para crear el WebServiceHost del servicio. Se llama al método CreateServiceHost cuando se recibe una solicitud de entrada para el servicio.

WebHttpBehavior

WebHttpBehavior proporciona los formateadores, los selectores de la operación y otros elementos necesarios para que se admita el servicio de estilo web en la capa de modelo de servicio. Esto se implementa como comportamiento de extremo (utilizado junto con WebHttpBinding) y permite especificar los formateadores y selectores de operación de cada extremo, lo que permite que una misma implementación de servicio exponga extremos SOAP y POX.

Extender WebHttpBehavior

WebHttpBehavior es extensible utilizando distintos métodos virtuales: GetOperationSelector, GetReplyClientFormatter, GetRequestClientFormatter, GetReplyDispatchFormattery GetRequestDispatchFormatter. Los desarrolladores pueden derivar una clase de WebHttpBehavior e invalidar estos métodos para personalizar el comportamiento predeterminado.

WebScriptEnablingBehavior es un ejemplo de WebHttpBehavior de extensión. WebScriptEnablingBehavior permite a los extremos Windows Communication Foundation (WCF) recibir solicitudes HTTP desde un cliente ASP.NET AJAX basado en explorador. Para obtener un ejemplo del uso de este punto de extensibilidad, consulte HTML Form Handler Sample.

WebHttpDispatchOperationSelector

WebHttpDispatchOperationSelector utiliza UriTemplate y las clases UriTemplateTable para enviar las llamadas a las operaciones del servicio.

Compatibilidad

El modelo de programación web WCF no utiliza mensajes basados en SOAP y, por lo tanto, no es compatible con los protocolos WS-*. No obstante, exponga el mismo contrato en dos extremos diferentes, uno que utilice SOAP y el otro sin utilizar SOAP. Vea Cómo exponer un contrato a clientes web y de SOAP para obtener un ejemplo.

Consulte también

Referencia

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector

Conceptos

Información general del modelo de objetos de programación web de WCF