Compartir vía


Contratos

En esta sección se muestra cómo definir e implementar contratos de Windows Communication Foundation (WCF). Un contrato de servicio especifica lo que un punto de conexión comunica al mundo exterior. En un nivel más concreto, es una declaración sobre un conjunto de mensajes específicos organizados en patrones básicos de intercambio de mensajes (MEPs), como solicitud/respuesta, unidireccional y dúplex. Si un contrato de servicio es un conjunto de intercambios de mensajes relacionado lógicamente, una operación de servicio es un intercambio de mensajes único. Por ejemplo, una Hello operación debe aceptar obviamente un mensaje (de modo que el llamante pueda notificar el saludo) y puede o no devolver un mensaje (dependiendo de la cortesía de la operación).

Para obtener más información sobre los contratos y otros conceptos básicos de WCF, vea Conceptos fundamentales de Windows Communication Foundation. Este tema se centra en comprender los contratos de servicio. Para obtener más información sobre cómo crear clientes que usan contratos de servicio para conectarse a servicios, consulte Introducción al cliente WCF. Para obtener más información sobre los canales de cliente, la arquitectura de cliente y otros problemas de cliente, consulte Clientes.

Información general

En este tema se proporciona una orientación conceptual de alto nivel para diseñar e implementar servicios WCF. Los subtemas proporcionan información más detallada sobre los detalles del diseño y la implementación. Antes de diseñar e implementar la aplicación WCF, se recomienda:

  • Comprenda qué es un contrato de servicio, cómo funciona y cómo crear uno.

  • Comprenda que los contratos establecen requisitos mínimos que la configuración en tiempo de ejecución o el entorno de hospedaje pueden no admitir.

Contratos de servicio

Un contrato de servicio es un documento que proporciona información sobre:

  • Agrupación de operaciones en un servicio.

  • Firma de las operaciones en términos de mensajes intercambiados.

  • Los tipos de datos de estos mensajes.

  • Ubicación de las operaciones.

  • Protocolos específicos y formatos de serialización que se usan para admitir una comunicación correcta con el servicio.

Por ejemplo, un contrato de pedido de compra podría tener una operación que acepte una CreateOrder entrada de tipos de información de pedido y devuelva información de éxito o error, incluido un identificador de pedido. También puede tener una GetOrderStatus operación que acepte un identificador de pedido y devuelva información de estado del pedido. Un contrato de servicio de este tipo especificaría:

  • Que el contrato de la orden compra consistiese en las operaciones CreateOrder y GetOrderStatus.

  • Que las operaciones han especificado mensajes de entrada y mensajes de salida.

  • Los datos que pueden llevar estos mensajes.

  • Instrucciones categóricas sobre la infraestructura de comunicación necesaria para procesar correctamente los mensajes. Por ejemplo, estos detalles incluyen si y qué formas de seguridad son necesarias para establecer una comunicación correcta.

Para transmitir este tipo de información a las aplicaciones de otras plataformas (incluidas las plataformas que no son de Microsoft), los contratos de servicio XML se expresan públicamente en formatos XML estándar, como el Lenguaje de descripción de servicios web (WSDL) y el esquema XML (XSD), entre otros. Los desarrolladores de muchas plataformas pueden usar esta información de contrato público para crear aplicaciones que puedan comunicarse con el servicio, tanto porque entienden el lenguaje de la especificación como porque esos lenguajes están diseñados para habilitar la interoperación mediante la descripción de los formularios públicos, los formatos y los protocolos que admite el servicio. Para obtener más información sobre cómo WCF controla este tipo de información, vea Metadatos.

Sin embargo, los contratos se pueden expresar de muchas maneras y, aunque WSDL y XSD son lenguajes excelentes para describir los servicios de forma accesible, son lenguajes difíciles de usar directamente, en cualquier caso, son meramente descripciones de un servicio, no implementaciones de contrato de servicio. Por lo tanto, las aplicaciones WCF usan atributos administrados, interfaces y clases para definir la estructura de e implementar un servicio.

El contrato resultante definido en tipos administrados puede ser convertido a metadatos (también denominado exportado), como WSDL y XSD, cuando sea necesario por clientes u otros implementadores de servicios, especialmente en otras plataformas. El resultado es un modelo de programación sencillo que se puede describir mediante metadatos públicos en cualquier aplicación cliente. Los detalles de los mensajes SOAP subyacentes, como la información relacionada con el transporte y la seguridad, se pueden dejar a WCF, que realiza automáticamente las conversiones necesarias hacia y desde el sistema de tipos de contrato de servicio al sistema de tipos XML.

Para obtener más información sobre cómo diseñar contratos, consulte Diseño de contratos de servicio. Para obtener más información sobre la implementación de contratos, consulte Implementación de contratos de servicio.

Además, WCF también proporciona la capacidad de desarrollar contratos de servicio completamente en el nivel de mensaje. Para obtener más información sobre el desarrollo de contratos de servicio en el nivel de mensaje, consulte Using Message Contracts. Para obtener más información sobre el desarrollo de servicios en XML que no son SOAP, vea Interoperabilidad con aplicaciones POX.

Descripción de la jerarquía de requisitos

Un contrato de servicio agrupa las operaciones; especifica el MEP, los tipos de mensaje y los tipos de datos que llevan esos mensajes; e indica las categorías de comportamiento en 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). Sin embargo, el propio contrato de servicio no especifica exactamente cómo se cumplen estos requisitos, solo que deben ser. Qué tipo de cifrado o cómo se registra un mensaje es la implementación y configuración de un servicio compatible.

Observe cómo el contrato exige ciertos elementos de la implementación del contrato de servicio y de la configuración en tiempo de ejecución para incorporar comportamientos adicionales. Conjunto de requisitos que se deben cumplir para exponer un servicio para su uso se basa en el conjunto anterior de requisitos. Si un contrato realiza los requisitos de la implementación, una implementación puede requerir aún más de la configuración y los enlaces que permiten que el servicio se ejecute. Por último, la aplicación host también debe admitir los requisitos que agregue la configuración del servicio y los enlaces.

Este proceso de requisitos aditivos es importante tener en cuenta al diseñar, implementar, configurar y hospedar la aplicación de servicio de Windows Communication Foundation (WCF). Por ejemplo, el contrato puede especificar que necesita admitir una sesión. Si es así, debe configurar la vinculación para admitir ese requisito contractual o la implementación del servicio no funcionará. O bien, si el servicio requiere autenticación integrada de Windows y se hospeda en Internet Information Services (IIS), la aplicación web en la que reside el servicio debe tener activada la autenticación integrada de Windows y la compatibilidad anónima desactivada. Para obtener más información sobre las características y el impacto de los distintos tipos de aplicaciones de host de servicio, consulte la sección Hospedaje.

Consulte también