Contratos
En esta sección se muestra cómo definir e implementar los contratos Windows Communication Foundation (WCF). Un contrato de servicio especifica lo que un extremo comunica al mundo exterior. En un nivel más concreto, es una instrucción sobre un conjunto de mensajes concretos organizada en modelos de intercambio de mensajes básicos (MEP), como solicitud/respuesta, unidireccional y dúplex. Si un contrato de servicio es un conjunto relacionado de forma lógica de intercambios de mensajes, una operación de servicio es un intercambio único de mensajes. Por ejemplo, una operación Hello debe aceptar obviamente un mensaje (de manera que el autor de la llamada pueda anunciar el saludo) y puede o no devolver un mensaje (dependiendo de la cortesía de la operación).
Para obtener más información acerca de contratos y otros conceptos WCF básicos, consulte Conceptos básicos de Windows Communication Foundation. Este tema se centra en entender los contratos de servicios. Para obtener más información acerca de cómo generar clientes que utilicen contratos de servicios para conectarse a servicios, consulte Introducción a un cliente WCF. Para obtener más información acerca de canales de cliente, la arquitectura del cliente, y otros aspectos relacionados con el cliente, consulte Clientes.
Información general
En este tema se proporciona un nivel elevado de orientación conceptual para diseñar e implementar los servicios WCF. Los subtemas proporcionan más información detallada sobre las características del diseño e implementación. Antes de diseñar e implementar su aplicación WCF, se recomienda lo siguiente:
- Entender lo que es un contrato de servicio, cómo funciona, y cómo crear uno.
- Comprenda que los contratos especifican requisitos mínimos que la configuración en tiempo de ejecución o el entorno de alojamiento pueden no admitir.
Contratos de servicio
Un contrato de servicios es una instrucción que proporciona información sobre:
- La agrupación de operaciones en un servicio.
- La firma de las operaciones en términos de mensajes intercambiados.
- Los tipos de datos de estos mensajes.
- La ubicación de las operaciones.
- Los protocolos concretos y formatos de serialización que se utilizan para admitir la comunicación correcta con el servicio.
Por ejemplo, un contrato de orden de compra podría tener una operación CreateOrder que acepte una entrada de tipos de información de orden y devuelva información de error o completada, además de un identificador de orden. También podría tener una operación GetOrderStatus que acepte un identificador de orden y devuelva información de estado de la orden. Un contrato de servicio de este tipo especificaría lo siguiente:
- Que el contrato de la orden compra consistiese en las operaciones CreateOrder y GetOrderStatus.
- Que las operaciones han especificado mensajes de entrada y de salida.
- Los datos que estos mensajes pueden llevar.
- Instrucciones de categorías sobre la infraestructura de la comunicación necesaria para procesar correctamente los mensajes. Por ejemplo, estos detalles incluyen qué formularios de seguridad son necesarios para establecer una comunicación correcta.
Para transmitir este tipo de información a otras aplicaciones en otras plataformas (incluidas plataformas que no sean de Microsoft), los contratos de servicio XML se expresan públicamente en los formatos XML estándar, como Web Services Description Language (WSDL) y XML Schema (XSD), entre otros. Los desarrolladores de muchas plataformas pueden utilizar esta información de contrato público para crear aplicaciones que pueden comunicarse con el servicio, porque entienden el lenguaje de la especificación y porque esos lenguajes están diseñados para permitir la interoperación describiendo los formularios, formatos y protocolos públicos que admite el servicio. Para obtener más información acerca de cómo controla WCF este tipo de información, consulte Metadatos.
Los contratos se pueden expresar de muchas maneras, sin embargo, mientras WSDL y XSD son lenguajes excelentes para describir servicios de una manera accesible, son lenguajes difíciles de usar directamente. En cualquier caso, son simplemente descripciones de un servicio, no implementaciones de contratos de servicio. Por consiguiente, las aplicaciones WCF utilizan atributos administrados, interfaces y clases para definir la estructura de un servicio e implementar un servicio.
El contrato resultante definido en tipos administrados se puede convertir (también denominado exportar) como metadatos (WSDL y XSD) cuando lo necesitan clientes u otros implementadores de servicio, sobre todo en otras plataformas. El resultado es un modelo de programación sencillo que se puede describir utilizando metadatos públicos en cualquier aplicación cliente. Los detalles de los mensajes SOAP subyacentes, como el transporte e información relacionada con la seguridad, etc., pueden dejarse en WCF, que realiza automáticamente las conversiones necesarias a y desde el sistema de tipos de contratos de servicio al sistema de tipos de XML.
Para obtener más información acerca de el diseño de contratos, consulte Diseño de contratos de servicios. Para obtener más información acerca de implementación de contratos, consulte Implementación de contratos de servicio.
Además, WCF también proporciona la capacidad de desarrollar contratos de servicios completamente en el nivel de mensaje. Para obtener más información acerca de del desarrollo de contratos de servicios en el nivel de mensaje, consulte. Usar contratos de mensaje. Para obtener más información acerca de del desarrollo de servicios en XML distinto de SOAP, consulte Interoperabilidad con aplicaciones POX.
Introducción a la jerarquía de los requisitos
Un contrato de servicio agrupa operaciones; especifica el MEP, tipos de mensaje y tipos de datos que llevan esos mensajes e indica categorías de comportamiento de tiempo de ejecución que una implementación debe tener para admitir el contrato (por ejemplo, puede requerir que los mensajes se cifren y firmen). El contrato de servicio en sí mismo, sin embargo, no especifica precisamente cómo se cumplen estos requisitos, sólo que deben ser. Qué tipo de cifrado o cómo se firma un mensaje es tarea de la implementación y configuración de un servicio compatible.
Observe la manera en que el contrato requiere algunas cosas de la implementación del contrato de servicio y la configuración del tiempo de ejecución para agregar comportamiento. El conjunto de requisitos que se deben cumplir para exponer un servicio para usar compilaciones en el conjunto anterior de requisitos. Si un contrato realiza requisitos de la implementación, una implementación puede requerir todavía más de la configuración y enlaces que permiten al servicio ejecutarse. Finalmente, la aplicación host también debe admitir cualquier requisito que la configuración de servicio y los enlaces agreguen.
Este proceso de requisito aditivo es importante tenerlo presente mientras diseña, implementa, configura y aloja su aplicación de servicio Windows Communication Foundation (WCF). Por ejemplo, el contrato puede especificar que necesita admitir una sesión. En ese caso, deberá configurar el enlace para admitir ese requisito contractual o la implementación del servicio no funcionará. O si su servicio requiere la autenticación de Windows integrada y se hospeda en Internet Information Services (IIS), la aplicación web en la que reside el servicio debe tener la autenticación de Windows integrada activada y la compatibilidad anónima desactivada. Para obtener más información acerca de las características e impacto de los tipos de aplicaciones host de servicio diferentes, consulte Hospedaje.
Consulte también
Conceptos
Extremos: direcciones, enlaces y contratos
Diseño de contratos de servicios
Implementación de contratos de servicio