¿Qué es Windows Communication Foundation?
La aceptación global de servicios Web que incluye los protocolos estándar para la comunicación de aplicación a aplicación, ha cambiado el desarrollo de software. Por ejemplo, las funciones que proporcionan los servicios Web ahora incluyen seguridad, coordinación de transacciones distribuidas y una comunicación fiable. Las ventajas de los cambios en servicios Web se deberían reflejar en las herramientas y tecnologías que los programadores utilizan. Windows Communication Foundation (WCF) está diseñado para ofrecer un enfoque manejable a la informática distribuida, interoperabilidad ancha y asistencia directa para la orientación sobre el servicio.
WCF simplifica el desarrollo de aplicaciones conectadas a través de un nuevo modelo de programación orientado a servicios. WCF admite muchos estilos de desarrollo de aplicaciones distribuidas proporcionando una arquitectura superpuesta. En su base, la arquitectura de canal de WCF proporciona primitivos asíncronos de paso de aprobación de mensajes sin tipo. Generados sobre esta base están las funciones de protocolos para un intercambio de datos de transacción seguro y fiable, así como una amplia variedad de opciones de codificación y transporte.
El modelo de programación tipificada (llamado modelo de servicio) está diseñado para facilitar el desarrollo de aplicaciones distribuidas y proporcionar a los desarrolladores pericia en servicios Web ASP.NET, comunicación remota .NET Framework y Enterprise Services, así como a aquellos que llegan a WCF con cierta experiencia en desarrollo. El modelo de servicio presenta una asignación sencilla de conceptos de servicios Web para aquellos de Common Language Runtime (CLR) .NET Framework, incluyendo la asignación ampliable y flexible de mensajes para la implementación de servicios en lenguajes como Visual C# o Visual Basic. Incluye funciones de serialización que habilitan el acoplamiento separado y el control de versiones y proporciona integración e interoperabilidad con sistemas distribuidos .NET Framework existentes, como Message Queue Server (MSMQ), COM+, servicios Web ASP.NET, Mejoras de servicios Web (WSE) y varias funciones más.
Ejemplo del problema
El siguiente ejemplo muestra algunos de los problemas que WCF resuelve. Una compañía de alquiler de coches decide crear una nueva aplicación para reservar los coches. Los creadores de esta aplicación de reserva de coches de alquiler saben que la lógica empresarial que implementa debe ser accesible por otro software que se ejecute dentro y fuera de la compañía. De acuerdo con, deciden integrarlo en un estilo orientado a servicios, con la lógica de la aplicación expuesta a otro software a través de un conjunto bien determinado de servicios. Para implementar estos servicios y así comunica con otro software, la nueva aplicación utilizará WCF.
Un intervalo de otras aplicaciones tendrá acceso probablemente a la aplicación de reserva de coche de alquiler sobre su duración. Cuando está diseñado, sin embargo, los arquitectos de la aplicación de reserva de coche de alquiler saben que se tendrá acceso a su lógica empresarial, como se muestra en la figura anterior, por tres otros tipos de software:
- Una aplicación cliente de centro de llamadas que se ejecuta en los escritorios de Windows que son utilizados por empleados en el centro de llamadas de la organización. Creada específicamente para el nuevo sistema de reservas, esta aplicación también se generará utilizando .NET Framework de Microsoft e WCF. Esta aplicación no es verdaderamente distinta de la nueva aplicación de reserva de coches de alquiler, porque su único propósito es actuar como un cliente para el nuevo sistema. De una perspectiva orientada a servicios, es simplemente otro cliente para la lógica empresarial del sistema de reservas.
- Una aplicación de reserva existente generada en un servidor de J2EE que se ejecuta en un sistema que no sea Windows. Debido a una reciente fusión con otra empresa de alquiler de coches, este sistema existente debe poder tener acceso a la lógica de la nueva aplicación para proporcionar una experiencia unificada a los clientes de las empresas fusionadas.
- Las aplicaciones de los socios que se ejecutan en una variedad de plataformas, cada una de ellas situada dentro de una empresa que tiene una organización empresarial con la empresa de alquiler de coches. Entre los socios podrían incluirse agencias de viaje, líneas aéreas y otros que tengan un requisito comercial para realizar reservas de alquiler de coches.
Los diversos requisitos de comunicación para la nueva aplicación de reserva de coches de alquiler no son simples. Para las interacciones con la aplicación cliente del centro de llamadas, por ejemplo, el rendimiento es importante, mientras que la interoperabilidad es sencilla, porque ambos están generados en .NET Framework. Para la comunicación con la aplicación existente de reservas basada en J2EE y con las aplicaciones de diversos socios, sin embargo, la interoperabilidad se vuelve el objetivo principal. Los requisitos de seguridad también son bastante diferentes. Varían según las aplicaciones locales basadas en Windows, una aplicación basada en J2EE que se ejecuta en otro sistema operativo y una variedad de aplicaciones de los socios que entran a través de Internet. Incluso los requisitos transaccionales podrían variar, permitiéndole únicamente a las aplicaciones internas realizar solicitudes transaccionales. ¿Cómo se pueden cumplir estos distintos requisitos empresariales y técnicos sin exponer los creadores de la nueva aplicación a una complejidad inmanejable?
WCF se ha diseñado para este escenario diverso pero realista y es la tecnología predeterminada para las aplicaciones de Windows que exponen y tienen acceso a los servicios. Este tema proporciona una introducción a WCF, mientras examina lo que proporciona y muestra cómo se utiliza. A lo largo de esta introducción, el escenario que se describe actuará como ejemplo. El objetivo es poner en claro qué es WCF, mostrar qué problemas resuelve e ilustrar cómo resuelve esos problemas.
Resolver el problema
La base para las nuevas aplicaciones basadas en Windows es .NET Framework. Por lo tanto, WCF se implementa principalmente como un conjunto de clases encima de .NET Framework CLR. Dado que extiende su entorno familiar, WCF permite que los programadores que crean aplicaciones orientadas a objetos utilizando .NET Framework hoy, para también integrar las aplicaciones orientadas a servicios de una manera conocida.
La figura muestra una vista de un cliente WCF y de un servicio. Los dos interactúan utilizando SOAP, WCF la representación del mensaje nativa, por lo que aunque la figura muestra ambas partes generadas en WCF, esto no se requiere. WCF se genera en .NET Framework 2.0.
Como el escenario descrito anteriormente sugiere, WCF hace frente a un intervalo de desafíos para hacer que las aplicaciones se comuniquen. Sin embargo, hay tres cosas que destacan como los aspectos más importantes de WCF:
- Unificación de las tecnologías de comunicación .NET Framework existentes.
- Compatibilidad para interoperabilidad entre proveedores, incluyendo confiabilidad, seguridad y transacciones.
- Orientación explícita al servicio.
La unificación de las tecnologías informáticas distribuidas de Microsoft
En ausencia de WCF, el equipo de desarrollo que implementa la aplicación de alquiler de coches necesitaría elegir la tecnología distribuida adecuada entre las múltiples opciones proporcionadas por .NET Framework. Aunque se den los diversos requisitos de esta aplicación, ninguna tecnología única se ajustaría a ellos. En su lugar, es probable que la aplicación utilizarse varias tecnologías .NET Framework existentes, como:
- ASP.NETServicios Web (ASMX). Una opción para comunicarse con la aplicación de reservas existente basada en J2EE y con las aplicaciones de los socios a través de Internet. Dado que los servicios Web básicos son suministrados hoy en día en la mayoría de las plataformas, esta fue la manera más directa de lograr la interoperabilidad entre proveedores antes del lanzamiento de WCF.
- .NET Framework remoto. Una opción para la comunicación con la aplicación del centro de llamadas, porque ambos se generan en .NET Framework. La comunicación remota está diseñada expresamente para la comunicación de .NET a .NET estrechamente acoplada, por lo que proporciona una experiencia de desarrollo sencilla y sin problemas para las aplicaciones en la red local.
- Enterprise Services. Utilizado por la aplicación de reserva de coches de alquiler para administrar periodos de duración de objeto y definir las transacciones distribuidas. Estas funciones podrían ser útiles para comunicarlas e integrarlas con cualquiera de las otras aplicaciones de este escenario, pero Enterprise Services admite únicamente un conjunto limitado de opciones de comunicación.
- WSE. Se podría utilizar junto con ASMX para comunicarse con la aplicación de reserva basada en J2EE y con las aplicaciones de los socios. Dado que implementa más recientemente los acuerdos de los servicios Web definidos, conocidos colectivamente como las especificacionesWS-*, WSE permite una seguridad más flexible en los servicios Web, con tal de que todas las aplicaciones implicadas sean compatibles con las versiones de estas nuevas especificaciones.
- Message Queuing de Microsoft (MSMQ). Se utiliza para comunicarse con aplicaciones de socios basadas en Windows que requieren la entrega de los datos garantizada, así como el desacoplamiento de cargas de trabajo y periodos de duración de la aplicación. La mensajería duradera que Message Queuing proporciona suele ser la mejor solución para las aplicaciones conectadas de manera intermitente.
Generada en .NET Framework, la aplicación de reserva de coches de alquiler debe utilizar más de una de estas tecnologías de comunicación para cumplir con sus requisitos. Aunque esto es técnicamente posible, la aplicación resultante sería compleja de implementar y su mantenimiento sería todo un desafío.
Con WCF, la solución es mucho más fácil de implementar. Como muestra la figura, WCF se puede utilizar para todas las situaciones descritas previamente. Por lo tanto, la aplicación de reserva de coches de alquiler puede utilizar esta tecnología única para todas sus comunicaciones de aplicación a aplicación. A continuación se muestra WCF trata cada uno de estos requisitos:
- Dado que WCF puede comunicarse utilizando los servicios Web, la interoperabilidad con otras plataformas que también admiten SOAP, como los principales servidores de aplicaciones basados en J2EE, es sencilla.
- También puede configurar y extender WCF para comunicarse con los servicios Web utilizando los mensajes no basados en SOAP, por ejemplo, los formatos XML simples como RSS.
- El rendimiento es una preocupación primordial para la mayoría de los negocios. WCF se desarrolla con el objetivo de ser una de las plataformas de aplicación distribuidas más rápidamente desarrollada por Microsoft. Para una comparación de rendimiento de alto nivel entre WCF y otra tecnología de comunicación distribuida de Microsoft .NET, consulte https://go.microsoft.com/fwlink/?LinkId=94274.
- Para permitir un rendimiento óptimo cuando ambas partes de una comunicación se generan en WCF, la codificación de la conexión utilizada en este caso es una versión binaria optimizada de un conjunto de información XML. Los mensajes todavía cumplen con la estructura de datos de un mensaje SOAP, excepto su codificación, que utiliza una representación binaria de esa estructura de datos en lugar del formato de corchetes angulares y texto estándar de la codificación de texto de XML 1.0. Al utilizar esta opción, tiene sentido para comunicarse con la aplicación cliente de centro de llamadas, porque también se ha generado en WCF y el rendimiento es una preocupación importante.
- La gestión de los periodos de duración de objetos, la definición de las transacciones distribuidas y otros aspectos de Enterprise Services son proporcionados ahora por WCF. Están disponibles para cualquier aplicación basada en WCF, lo que significa que la aplicación de reserva de coches de alquiler puede utilizarlos con cualquiera de las otras aplicaciones con las que se comunica.
- Dado que admite un conjunto grande de las especificaciones de WS - *, WCF ayuda a proporcionar confiabilidad, seguridad y transacciones al comunicarse con cualquier plataforma que también admita estas especificaciones.
- La opción WCF para la mensajería en cola, integrada en Message Queuing, permite que las aplicaciones utilicen la puesta en cola persistente sin utilizar otro conjunto de interfaces de programación de aplicaciones.
El resultado de esta unificación es una mayor funcionalidad y una complejidad significativamente reducida.
Interoperabilidad con aplicaciones generadas en otras tecnologías
Aunque WCF introduce un nuevo entorno de desarrollo para las aplicaciones distribuidas, está diseñado para interoperar bien con aplicaciones que no sean de tipo WCF. Hay dos aspectos importantes en relación con la interoperabilidad WCF: la interoperabilidad con otras plataformas y la interoperabilidad con las tecnologías de Microsoft que precedieron a WCF. La sección siguiente describe ambos tipos.
Interoperabilidad con otras plataformas de los servicios Web
Las empresas hoy en día suelen tener los sistemas y aplicaciones que han adquirido a un amplio abanico de proveedores. En la aplicación de alquiler de coches, por ejemplo, se requiere establecer comunicación con algunas otras aplicaciones de software escritas en varios lenguajes que se ejecutan en varios sistemas operativos.
Debido a que el mecanismo de comunicación fundamental de WCF es un servicio Web basado en SOAP, las aplicaciones basadas en WCF pueden comunicarse con otro software que se ejecute en una variedad de contextos. Una aplicación generada en WCF puede interactuar con todo lo siguiente:
- Las aplicaciones basadas en WCF que se ejecutan en un proceso diferente en el mismo equipo de Windows.
- Las aplicaciones basadas en WCF que se ejecutan en otro equipo de Windows.
- Las aplicaciones generadas en otras tecnologías, como servidores de aplicaciones de J2EE, que son compatibles con los servicios Web estándar. Estas aplicaciones se pueden estar ejecutando en equipos con Windows o en los equipos que ejecutan otros sistemas operativos.
Para permitir más que únicamente la comunicación básica, WCF implementa tecnologías de servicios Web definidas por las especificaciones de WS-*. Todas estas especificaciones fueron definidas originalmente por Microsoft, IBM y otros proveedores que trabajan juntos. Cuando las especificaciones se estabilizan, la propiedad pasa a menudo a los organismos de creación de estándares, como el World Wide Web Consortium (W3C) u OASIS (Organization for the Advanced of Structures Information Standards, Organización para el avance de estándares de información estructurada). Estas especificaciones tratan varias áreas, incluidas la mensajería básica, la seguridad, la confiabilidad, las transacciones y el trabajo con los metadatos de un servicio. Para obtener más información, consulte Interoperabilidad e integración. Para obtener más información acerca de las especificaciones de los servicios web avanzados, consulte https://go.microsoft.com/fwlink/?LinkId=86603.
Agrupadas por función, estas especificaciones abarcan:
- Mensajería: SOAP es la base para los servicios Web y define un sobre básico que contiene las secciones de encabezado y de cuerpo. WS-Addressing define las sumas al encabezado SOAP para direccionar mensajes SOAP, que evita que SOAP confíe en el protocolo de transporte subyacente, como HTTP, para realizar el direccionamiento de la información. El mecanismo de optimización de transmisión del mensaje (MTOM) define un formato de transmisión optimizado para los mensajes SOAP con mucho contenido de datos binarios basado en la especificación del Empaquetado optimizado de XML binario (XOP).
- Metadatos: el lenguaje de descripción de servicios web (WSDL) define un lenguaje estándar para especificar servicios y varios aspectos sobre cómo se pueden utilizar esos servicios. WS-Policy permite la especificación de aspectos más dinámicos del comportamiento de un servicio que no se pueden expresar en WSDL, como una opción de seguridad preferida. WS-MetadataExchange permite que un cliente solicite directamente información descriptiva sobre un servicio, como su WSDL y sus directivas, utilizando SOAP.
- Seguridad: WS-Security, WS-SecureConversation, WS-Trust y WS-Federation todos definen las sumas a los mensajes SOAP para proporcionar autenticación, integridad de datos, privacidad de datos y otras características de seguridad.
- Confiabilidad: la mensajería WS-Reliable define las sumas al encabezado SOAP que permiten la comunicación confiable de un extremo a otro, incluso cuando se deben atravesar uno o más intermediarios de los servicios Web.
- Transacciones: se genera en WS-Coordination, la transacción WS-Atomic permite coordinar las transacciones de la confirmación en dos fases en el contexto de conversaciones de servicios Web.
La aplicación de reserva de coches de alquiler probablemente utilizaría algunos de estas tecnologías más avanzadas. Por ejemplo, WS-Addressing es esencial cada vez que SOAP se utiliza sobre un mecanismo de transporte distinto de HTTP, que podría ser el caso para la comunicación con la aplicación cliente de centro de llamadas basada en .NET Framework. WCF confía en WS-Policy y en WS-Metadata Exchange para detectar si el sistema con el que está comunicando también está utilizando WCF y para otras cosas. La comunicación confiable es esencial para la mayoría de las situaciones, por lo que es probable que la Mensajería de WS-Reliable se utilizase para interactuar con muchas de las otras aplicaciones en este escenario. De igual forma, también podría utilizar WS-Security y las especificaciones relacionadas para proteger la comunicación con una o más aplicaciones, porque todas requerirían algún tipo de protección contra el acceso no autorizado o alguna modificación de mensajes e interceptación. Para las aplicaciones que requieren la integración de la transacción con el sistema de reserva de coches de alquiler sería esencial WS-Atomic Transaction. Finalmente, MTOM se podría utilizar cuando fuese necesario un formato de conexión optimizado para los datos binarios (por ejemplo, para las imágenes de ejemplos rápidos) y ambos lados de la comunicación admitieran esta opción.
El punto clave es que WCF implementa los servicios Web interoperables que se completan con seguridad multiplataforma, confiabilidad, transacciones y otros servicios. Para proporcionar el rendimiento máximo, la comunicación de WCF a WCF se puede optimizar significativamente, pero el resto de las comunicaciones utilizan los protocolos de servicios Web estándar. De hecho, es posible que una aplicación única exponga sus servicios a ambos tipos de clientes.
Interoperabilidad con tecnologías de Microsoft
Muchos clientes de Microsoft han realizado inversiones significativas en las tecnologías .NET Framework que incluye WCF. Proteger esas inversiones fue un objetivo fundamental de los diseñadores de WCF. Al instalar WCF, no se interrumpe la tecnología existente, así que no hay ningún requisito para que las organizaciones cambien las aplicaciones existentes para que la utilicen. Se proporciona una ruta clara de acceso para la actualización, sin embargo y cuando sea posible, WCF interopera con esas tecnologías anteriores.
Por ejemplo, WCF y ASMX utilizan SOAP, por lo que las aplicaciones basadas en WCF pueden interoperar directamente con aquellas integradas en ASMX. Las aplicaciones Enterprise Services existentes también se pueden ajustar con interfaces WCF, permitiéndoles interoperar con aplicaciones generadas en WCF. Y como la puesta en cola persistente en WCF confía en MSMQ, las aplicaciones basadas en WCF pueden interoperar directamente con aplicaciones que no estén basadas en WCF generadas utilizando las interfaces nativas de MSMQ. En la aplicación de reservas de coches de alquiler, el software generado utilizando cualquiera de estas tecnologías anteriores podría conectarse directamente a los servicios basados en el nuevo sistema de WCF y utilizarlos.
Sin embargo, la interoperabilidad no siempre es posible. Por ejemplo, aunque WSE 1.0 y WSE 2.0 implementan algunas de las mismas especificaciones de WS-* que WCF, estas tecnologías anteriores implementan versiones anteriores de las especificaciones. La versión 3.0 de WSE permite la interoperabilidad con WCF, pero las versiones anteriores no. Para obtener más información acerca de la interoperabilidad Migración de los servicios web WSE 3.0 a WCF.
Interoperabilidad con otros protocolos de XML
El futuro de Internet no es predecible y las tecnologías utilizadas hoy en día pueden evolucionar o ser reemplazadas. Hoy en día, una tendencia popular para generar aplicaciones Web céntricas (llamada por muchos "Web 2.0"), es un modelo de aplicación basado en la comunicación utilizando únicamente formatos XML simples que no se basan en SOAP y que confían exclusivamente en HTTP como transporte y como protocolo de aplicación. Por ejemplo, el estilo arquitectónico de Representational State Transfer (REST) no tiene ninguna noción de operaciones definidas por el usuario para tratar con datos. En su lugar, el estado de la aplicación está asociado a métodos de URL de HTTP y HTTP (como PUT, POST, DELETE y GET). Este enfoque está en contraste con la creación de procedimientos definidos por el usuario o funciones con las que está familiarizada la mayoría de los programadores en un entorno empresarial. Sin embargo, el enfoque REST tiene valor en escenarios donde los servicios deben funcionar como el servidor de las aplicaciones de la Web 2.0.
REST es simplemente un ejemplo de una tecnología de la Web 2.0 en evolución. La flexibilidad se exige para cubrir con cambios imprevisibles en este entorno de modelos de programación experimentales, de reinterpretation constante y refinamiento de los estándares. WCF es flexible. Por ejemplo, mientras WCF utiliza SOAP como una estructura subyacente, no se enlaza para utilizar SOAP para la comunicación de la conexión. De hecho, WCF se puede configurar para procesar datos XML "sin formato" que no se ajustan en un sobre SOAP. WCF también se puede extender para admitir los formatos XML concretos, como ATOM (un estándar popular de RSS) e incluso formatos que no sean XML, como JavaScript Object Notation (JSON). Esta flexibilidad asegura que el código escrito hoy será válido en el futuro, aun cuando los protocolos cambien o sean reemplazados. Por consiguiente, WCF se ha diseñado para el presente y el futuro.
Consulte también
Referencia
Conceptos
Conceptos básicos de Windows Communication Foundation
Arquitectura de Windows Communication Foundation
Guía de la documentación
Otros recursos
Instrucciones y procedimientos recomendados
Tutorial de introducción
Programación básica de WCF
Windows Communication Foundation Samples