Compartir a través de


Diseño e implementación de servicios

En esta sección se muestra cómo definir e implementar contratos 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 Windows Communication Foundation (WCF), consulte 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.

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 especifica lo siguiente:

  • Las operaciones que expone un contrato.

  • 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:

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

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

  3. Los datos que pueden llevar estos mensajes.

  4. 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 otras aplicaciones en muchas 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.

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 y son meramente descripciones de un servicio, no implementaciones de contrato de servicio. Por lo tanto, las aplicaciones WCF usan atributos administrados, interfaces y clases tanto para definir la estructura de un servicio como para implementarlo.

El contrato resultante definido en tipos administrados se puede exportar como metadatos (WSDL y XSD) cuando los clientes u otros implementadores de servicios lo necesiten. 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, la información relacionada con la seguridad y el transporte, etc., se pueden dejar a WCF, que realiza las conversiones necesarias hacia y desde el sistema de tipos de contrato de servicio al sistema de tipos XML automáticamente.

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.

Mensajes arriba y al centro

El uso de interfaces, clases y métodos administrados para modelar las operaciones de servicio es sencillo para quienes están acostumbrados a las firmas de métodos al estilo de llamada a procedimiento remoto (RPC), donde pasar parámetros a un método y recibir valores devueltos es la forma habitual de solicitar funcionalidad de un objeto u otro tipo de código. Por ejemplo, los programadores que usan lenguajes administrados como Visual Basic y C++ COM pueden aplicar su conocimiento del enfoque de estilo RPC (ya sea mediante objetos o interfaces) a la creación de contratos de servicios wcF sin experimentar los problemas inherentes a los sistemas de objetos distribuidos de estilo RPC. La orientación del servicio proporciona las ventajas de la programación acoplada y orientada a mensajes mientras mantiene la facilidad y familiaridad de la experiencia de programación de RPC.

Muchos programadores se sienten más cómodos con las interfaces de programación de aplicaciones orientadas a mensajes, como las colas de mensajes como Microsoft MSMQ, los espacios de nombres System.Messaging en .NET Framework o el envío de XML no estructurado en solicitudes HTTP, por nombrar algunos. Para obtener más información sobre la programación en el nivel de mensaje, vea Using Message Contracts, Service Channel-Level Programming, and Interoperability with POX Applications.

Descripción de la jerarquía de requisitos

Un contrato de servicio agrupa las operaciones; especifica el patrón de intercambio de mensajes, 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). El propio contrato de servicio no especifica exactamente cómo se cumplen estos requisitos, solo que deben ser. El tipo de cifrado o la manera en que se registra un mensaje es la implementación y configuración de un servicio compatible.

Tenga en cuenta cómo el contrato requiere ciertos requisitos de la implementación del contrato de servicio y la configuración en tiempo de ejecución para agregar comportamiento. 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 una 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 aplicación host de servicio, consulte Servicios de hospedaje.

Consulte también