Modelo de objetos de programación web HTTP de WCF

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

Modelo de programación:

Infraestructura de canales y distribuidor:

Clases de utilidades y puntos de extensibilidad:

AspNetCacheProfileAttribute

La clase AspNetCacheProfileAttribute, cuando se aplica a una operación de servicio, indica el perfil de caché de resultados de ASP.NET en el archivo de configuración que debe usar para almacenar en la memoria caché las respuestas de la operación realizada en la memoria caché de resultados de ASP.NET. Esta propiedad toma solo uno parámetro, el nombre de perfil de memoria caché que especifica la configuración de la memoria caché en el archivo de configuración.

WebGetAttribute

El atributo de la clase WebGetAttribute se usa 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 mostrados en la siguiente tabla.

Parameter 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 HTTP se asignan a la operación de servicio a la que se aplica el atributo.

WebHttpBinding

La clase WebHttpBinding incorpora los codificadores de tipo XML, JSON y de datos binarios sin formato que usan 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 WebInvokeAttribute adopta los parámetros opcionales mostrados en la siguiente tabla.

Parameter 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 HTTP de WCF de WCF usa 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 HTTP de WCF de WCF usa 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 adjunto. 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

La clase WebHttpBehavior proporciona los formateadores, los selectores de la operación y otros elementos necesarios para que se admita el servicio de estilo web en el nivel 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, vea Servicio AJAX mediante HTTP POST.

Bb412204.Warning(es-es,VS.100).gif Precaución:
Cuando se usa el WebScriptEnablingBehavior, no se admiten objetos UriTemplate dentro de los atributos WebGetAttribute o WebInvokeAttribute.

WebHttpDispatchOperationSelector

La clase WebHttpDispatchOperationSelector usa las clases UriTemplate y UriTemplateTable para enviar las llamadas a las operaciones del servicio.

Compatibilidad

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

Seguridad

Dado que el modelo de programación WEB HTTP de WCF no es compatible con los protocolos WS-*, la única manera de proteger un servicio Web compilado en el modelo de programación WEB HTTP de WCF consiste en exponer el servicio mediante SSL. Para obtener más información sobre la configuración de SSL con IIS 7.0, vea Cómo implementar SSL en IIS

Vea también

Referencia

WebHttpBinding
WebGetAttribute
WebInvokeAttribute
WebHttpBehavior
WebHttpDispatchOperationSelector

Conceptos

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