Compartir a través de


Modelo de objetos de programación HTTP web de WCF

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

Modelo de programación:

Canales e infraestructura de distribuidor:

Clases de utilidad y puntos de extensibilidad:

AspNetCacheProfileAttribute

, AspNetCacheProfileAttributecuando se aplica a una operación de servicio, indica el perfil de caché de salida de ASP.NET en el archivo de configuración que se debe usar para almacenar en caché las respuestas de la operación en la caché de salida de ASP .NET. Esta propiedad solo toma un parámetro, el nombre del perfil de caché que especifica la configuración de caché en el archivo de configuración.

WebGetAttribute

El WebGetAttribute atributo se usa para marcar una operación de servicio como una que responde a las solicitudes HTTP GET. Es un comportamiento de operación pasiva (los IOperationBehavior métodos no hacen nada) que agrega metadatos a la descripción de la operación. La aplicación de WebGetAttribute no tiene efecto a menos que se agregue un comportamiento que busque estos metadatos en la descripción de la operación (específicamente, el WebHttpBehavior) a la colección de comportamientos del servicio. El WebGetAttribute atributo toma los parámetros opcionales que se muestran en la tabla siguiente.

Parámetro Descripción
BodyStyle Controla si se deben envolver las solicitudes y respuestas enviadas y recibidas de 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 de URI que determina a qué solicitudes HTTP se mapean a la operación del servicio a la que se aplica el atributo.

WebHttpBinding

La clase WebHttpBinding incorpora soporte para XML, JSON, y datos binarios sin procesar mediante WebMessageEncodingBindingElement. Se compone de un HttpsTransportBindingElement, un HttpTransportBindingElement y un objeto WebHttpSecurity. WebHttpBinding está diseñado para usarse junto con .WebHttpBehavior

WebInvokeAttribute

El WebInvokeAttribute atributo es similar a WebGetAttribute, pero se usa para marcar una operación de servicio como una que responda a solicitudes HTTP distintas de GET. Es un comportamiento de operación pasiva (los IOperationBehavior métodos no hacen nada) que agrega metadatos a la descripción de la operación. La aplicación de WebInvokeAttribute no tiene efecto a menos que se agregue un comportamiento que busque estos metadatos en la descripción de la operación (específicamente, el WebHttpBehavior) a la colección de comportamientos del servicio.

El WebInvokeAttribute atributo toma los parámetros opcionales que se muestran en la tabla siguiente.

Parámetro Descripción
BodyStyle Controla si se deben envolver las solicitudes y respuestas enviadas y recibidas de 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 de 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 de URI que determina qué solicitudes GET se asignan a la operación del servicio donde el atributo es aplicado.

UriTemplate

La UriTemplate clase permite definir un conjunto de URI estructuralmente similares. Las plantillas se componen de dos partes, una ruta de acceso y una consulta. Una ruta de acceso consta de una serie de segmentos delimitados por una barra diagonal (/). Cada segmento puede tener un valor literal, un valor de variable (escrito entre llaves [{ }], restringido para que coincida exactamente con el contenido de un segmento) o un carácter comodín (escrito como asterisco [*], que coincide con "el resto de la ruta de acceso"), que debe aparecer al final de la ruta de acceso. La expresión de consulta se puede omitir por completo. Si está presente, especifica una serie desordenada de pares nombre-valor. Los elementos de la expresión de consulta pueden ser pares literales (?x=2) o pares de variables (?x={value}). No se permiten valores no emparejados. UriTemplate se usa internamente mediante el modelo de programación HTTP web de WCF para asignar URI o grupos específicos de URI a operaciones de servicio.

UriTemplateTable

La UriTemplateTable clase representa un conjunto asociativo de UriTemplate objetos enlazados a un objeto de la elección del desarrollador. Permite hacer coincidir identificadores uniformes de recursos (URI) candidatos con las plantillas del conjunto y recuperar los datos asociados a las plantillas coincidentes. UriTemplateTable se usa internamente mediante el modelo de programación HTTP web de WCF para asignar URI o grupos específicos de URI a operaciones de servicio.

WebServiceHost

WebServiceHost amplía ServiceHost para facilitar el alojamiento de un servicio web estilo no-SOAP. Si WebServiceHost no encuentra ningún punto 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, WebServiceHost también deshabilita la página ayuda 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 puntos de conexión que hacen uso de WebHttpBinding tengan el WebHttpBehavior necesario asociado. Por último, WebServiceHost configura automáticamente el enlace del punto de conexión para que funcione con la configuración de seguridad de Internet Information Services (IIS) asociada cuando se usa en un directorio virtual seguro.

WebServiceHostFactory

La WebServiceHostFactory clase se usa para crear dinámicamente un WebServiceHost cuando un servicio se hospeda en Internet Information Services (IIS) o servicio de activación de procesos de Windows (WAS). A diferencia de un servicio autohospedado en el que la aplicación de hospedaje crea instancias de WebServiceHost, los servicios hospedados en IIS o WAS usan esta clase para crear el WebServiceHost para el servicio. Se llama al CreateServiceHost(Type, Uri[]) método cuando se recibe una solicitud entrante para el servicio.

WebHttpBehavior

La WebHttpBehavior clase proporciona los formateadores, selectores de operaciones, etc., necesarios para la compatibilidad con servicios de estilo web en el nivel modelo de servicio. Esto se implementa como un comportamiento de punto de conexión (usado junto con WebHttpBinding) y permite especificar formateadores y selectores de operaciones para cada punto de conexión, lo que permite que la misma implementación de servicio exponga los puntos de conexión SOAP y POX.

Extensión de WebHttpBehavior

WebHttpBehavior es extensible mediante un número de 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 extender WebHttpBehavior. WebScriptEnablingBehavior permite que los puntos de conexión de Windows Communication Foundation (WCF) reciban solicitudes HTTP de un cliente AJAX ASP.NET basado en explorador. El servicio AJAX mediante HTTP POST es un ejemplo de uso de este punto de extensibilidad.

Advertencia

Cuando se utiliza el WebScriptEnablingBehavior, UriTemplate no se admiten dentro de los atributos WebGetAttribute o WebInvokeAttribute.

WebHttpDispatchOperationSelector

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

Compatibilidad

El modelo de programación HTTP web de WCF no usa mensajes basados en SOAP y, por lo tanto, no admite los protocolos WS-*. Sin embargo, puede exponer el mismo contrato mediante dos puntos de conexión diferentes: uno usando SOAP y el otro sin usar SOAP. Vea How to: Expose a Contract to SOAP and Web Clients (Cómo: Exponer un contrato a soap y clientes web ) para obtener un ejemplo.

Seguridad

Dado que el modelo de programación HTTP web de WCF no admite los protocolos WS-* la única manera de proteger un servicio web basado en el modelo de programación HTTP WEB de WCF es exponer el servicio mediante SSL. Para obtener más información sobre cómo configurar SSL con IIS 7.0, consulte Implementación de SSL en IIS.

Consulte también