Compartir a través de


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 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 de WCF existente. Define las clases siguientes:

Modelo de programación:

Infraestructura de canales y envíos:

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.

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 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.

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 los valores no emparejados. El modelo de programación WEB HTTP de WCF usa UriTemplate internamente para asignar URI específicos o grupos de URI a operaciones del servicio.

UriTemplateTable

La clase UriTemplateTable representa un conjunto asociativo de objetos UriTemplate enlazado a un objeto elegido por el desarrollador. Le permite hacer coincidir los identificadores uniformes de recursos (URI) del candidato con las plantillas del conjunto y recuperar los datos asociados a las plantillas correspondientes. El modelo de programación WEB HTTP de WCF usa UriTemplateTable internamente para asignar URI específicos o grupos de URI a operaciones del servicio.

WebServiceHost

WebServiceHost extiende ServiceHost para facilitar el hospedaje de un servicio de estilo Web no SOAP. Si WebServiceHost no encuentra puntos de conexión en la descripción del servicio, crea automáticamente un punto de conexión predeterminado en la dirección base del servicio. Al crear un punto de conexión HTTP predeterminado, el WebServiceHost también deshabilita la página de ayuda de HTTP y la funcionalidad GET del lenguaje de descripción de servicios Web (WSDL) para que el punto de conexión de metadatos no interfiera con el punto de conexión HTTP predeterminado. WebServiceHost también garantiza que todos los extremos que usan WebHttpBinding tengan el WebHttpBehavior necesario adjunto. Finalmente, cuando se utiliza en un directorio virtual protegido, WebServiceHost configura automáticamente el enlace del punto de conexión 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(Type, Uri[]) 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 punto de conexión (utilizado junto con WebHttpBinding) y permite especificar los formateadores y selectores de operación de cada punto de conexión, lo que permite que una misma implementación de servicio exponga puntos de conexión SOAP y POX.

Extender WebHttpBehavior

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

WebScriptEnablingBehavior es un ejemplo de cómo extender WebHttpBehavior. WebScriptEnablingBehavior permite a los puntos de conexión Windows Communication Foundation (WCF) recibir las solicitudes HTTP de un cliente AJAX de ASP.NET basado en un explorador. El servicio AJAX mediante HTTP POST es un ejemplo de uso de este punto de extensibilidad.

Advertencia

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. Consulte Procedimiento para 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 admite 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 cómo configurar SSL con IIS 7.0, consulte el artículo sobre cómo implementar SSL en IIS.

Consulte también