¿Qué es Windows Communication Foundation?
Windows Communication Foundation (WCF) es un marco para crear aplicaciones orientadas a servicios. Con WCF, es posible enviar datos como mensajes asincrónicos de un punto de conexión de servicio a otro. Un extremo de servicio puede formar parte de un servicio disponible continuamente hospedado por IIS, o puede ser un servicio hospedado en una aplicación. Un extremo puede ser un cliente de un servicio que solicita datos de un extremo de servicio. Los mensajes pueden ser tan simples como un carácter o una palabra que se envía como XML, o tan complejos como una secuencia de datos binarios. A continuación se indican unos cuantos escenarios de ejemplo:
Un servicio seguro para procesar transacciones comerciales.
Un servicio que proporciona datos actualizados a otras personas, como un informe sobre tráfico u otro servicio de supervisión.
Un servicio de chat que permite a dos personas comunicarse o intercambiar datos en tiempo real.
Una aplicación de panel que sondea los datos de uno o varios servicios y los muestra en una presentación lógica.
Exponer un flujo de trabajo implementado utilizando Windows Workflow Foundation como un servicio WCF.
Si bien era posible crear tales aplicaciones antes de que existiera WCF, con WCF el desarrollo de puntos de conexión resulta más sencillo que nunca. En resumen, WCF se ha diseñado para ofrecer un enfoque manejable para la creación de servicios web y clientes de servicios web.
gRPC como alternativa a WCF
gRPC es un marco RPC moderno que es una alternativa popular a WCF. gRPC se basa en HTTP/2, que proporciona una serie de ventajas sobre WCF, entre las que se incluyen:
- Rendimiento: gRPC es mucho más eficaz que WCF, especialmente para las conexiones de larga duración.
- Escalabilidad: gRPC está diseñado para escalar a un gran número de clientes y servidores.
- Seguridad: gRPC admite una variedad de mecanismos de seguridad, como TLS y autenticación.
- Multiplataforma: gRPC es independiente de la plataforma y se puede usar con una variedad de lenguajes de programación.
Para obtener más información sobre el desarrollo o la migración de aplicaciones WCF a gRPC, consulte:
- ¿Por qué se recomienda gRPC para los desarrolladores de WCF?
- Comparación de WCF con gRPC
- Introducción a gRPC para desarrolladores de WCF
Características de WCF
WCF incluye el conjunto de características siguiente. Para obtener más información, vea Detalles de las características de WCF.
Orientación a servicios
Una de las consecuencias del uso de los estándares de WS es que WCF le permite crear aplicaciones orientadas a servicios. SOA, la arquitectura orientada a servicios es el uso de servicios web para enviar y recibir datos. Los servicios tienen la ventaja general de estar débilmente acoplados entre una aplicación y otra en lugar de incluidos en el código. Una relación de acoplamiento débil implica que cualquier cliente creado en cualquier plataforma puede conectar con cualquier servicio siempre y cuando se cumplan los contratos esenciales.
Interoperabilidad
WCF implementa estándares del sector modernos para la interoperabilidad de los servicios web. Para obtener más información sobre los estándares admitidos, consulte Interoperabilidad e integración.
Varios patrones de mensajes
Los mensajes se intercambian mediante uno de los distintos patrones. El más común es el de solicitud/respuesta, en que un extremo solicita datos de otro extremo. y el otro extremo responde. Existen otros patrones, como un mensaje unidireccional, en que un único extremo envía un mensaje sin esperar ninguna respuesta. Un patrón más complejo es el patrón de intercambio dúplex donde dos extremos establecen una conexión y envían datos hacia delante y hacia atrás, similar a un programa de mensajería instantánea. Para obtener más información sobre cómo implementar distintos patrones de intercambio de mensajes con WCF, consulte Contratos.
Metadatos de servicios
WCF admite la publicación de metadatos de servicios con los formatos especificados en los estándares de la industria, como WSDL, Esquema XML y WS-Policy. Estos metadatos pueden utilizarse para generar y configurar clientes de forma automática para el acceso a los servicios de WCF. Los metadatos se pueden publicar sobre HTTP y HTTPS, o utilizando el estándar Intercambio de metadatos de servicios web. Para obtener más información, vea Metadatos.
Contratos de datos
Dado que WCF se compila con NET Framework, también incluye métodos con código sencillo para proporcionar los contratos que quiere aplicar. Uno de los tipos de contrato universales es el contrato de datos. Básicamente, mientras se escribe el código del servicio usando Visual C# o Visual Basic, la forma más sencilla de controlar los datos consiste en crear clases que representan una entidad de datos con propiedades que pertenecen a la misma. WCF incluye un completo sistema para trabajar con datos de esta manera fácil. Cuando se han creado las clases que representan los datos, el servicio genera automáticamente los metadatos que permiten a los clientes ajustarse a los tipos de datos que se han diseñado. Para obtener más información, consulte Utilización de contratos de datos.
Seguridad
Es posible cifrar los mensajes para proteger la privacidad, así como obligar a los usuarios a que se autentiquen antes de permitirles recibir mensajes. La seguridad puede implementarse utilizando estándares conocidos como SSL o WS-SecureConversation. Para obtener más información, consulte Seguridad.
Varios transportes y codificaciones
Los mensajes pueden enviarse con cualquiera de los protocolos y codificaciones integrados. La combinación más frecuente de protocolo y codificación consiste en enviar mensajes SOAP codificados de texto con el Protocolo de transferencia de hipertexto (HTTP) para su uso en la World Wide Web. WCF también le permite enviar mensajes sobre TCP, canalizaciones con nombre o MSMQ. Estos mensajes pueden codificarse como texto o utilizando un formato binario optimizado. Los datos binarios pueden enviarse de manera eficaz utilizando el estándar MTOM. Si ninguno de los transportes o codificaciones proporcionados satisface sus necesidades, puede crear uno personalizado. Para obtener más información sobre los transportes y las codificaciones compatibles con WCF, consulte Transportes.
Mensajes confiables y en cola
WCF admite el intercambio de mensajes confiable mediante sesiones confiables implementadas a través de mensajes de confianza de WS y con MSMQ. Para obtener más información sobre la compatibilidad con mensajería confiable y en cola en WCF, consulte Colas y sesiones de confianza.
Mensajes duraderos
Un mensaje duradero es aquel que nunca se pierde debido a una interrupción de la comunicación. Los mensajes que forman parte de un patrón de mensajes duraderos siempre se guardan en una base de datos. Si se produce una interrupción, la base de datos le permite reanudar el intercambio de mensajes cuando se restablezca la conexión. También puede crear un mensaje duradero mediante Windows Workflow Foundation (WF). Para obtener más información, vea Servicios de flujo de trabajo.
Transactions
WCF también admite las transacciones que usan uno de los tres modelos de transacción: las transacciones WS-Atomic, las API del espacio de nombres System.Transactions y el Coordinador de transacciones distribuidas de Microsoft. Para obtener más información sobre la compatibilidad con las transacciones en WCF, consulte Transacciones.
Compatibilidad con AJAX y REST
REST es un ejemplo de una tecnología de la Web 2.0 en evolución. WCF se puede configurar para procesar datos XML "sin formato" que no se encapsulan en una envoltura SOAP. WCF también se puede extender para admitir formatos XML concretos, como ATOM (un estándar popular de RSS), e incluso formatos no XML, como la notación de objetos JavaScript (JSON).
Extensibilidad
La arquitectura de WCF tiene varios puntos de extensibilidad. Si se necesita una función adicional, existen una serie de puntos de entrada que le permiten personalizar el comportamiento de un servicio. Para obtener más información sobre los puntos de extensibilidad disponibles, vea Extensión de WCF.
Integración de WCF con otras tecnologías de Microsoft
WCF es una plataforma flexible. Debido a esta flexibilidad extrema, WCF también se usa en varios productos más de Microsoft. Si comprende los fundamentos de WCF, tendrá una ventaja inmediata si también usa cualquiera de estos productos.
La primera tecnología en adaptarse a WCF fue Windows Workflow Foundation (WF). Los flujos de trabajo simplifican el desarrollo de aplicaciones al encapsular los pasos del flujo de trabajo como "actividades". En la primera versión de Windows Workflow Foundation, un desarrollador tenía que crear un host para el flujo de trabajo. La siguiente versión de Windows Workflow Foundation se integró con WCF. Esto permitió que cualquier flujo de trabajo se pudiera hospedar fácilmente en un servicio WCF. Para ello, se elige automáticamente el tipo de proyecto WF/WCF en Visual Studio 2012 o versiones posteriores.
Microsoft BizTalk Server R2 también utiliza WCF como tecnología de comunicaciones. BizTalk está diseñado para recibir y transformar datos de un formato normalizado en otro. Los mensajes deben entregarse en su cuadro de mensajes central, donde es posible transformar el mensaje utilizando una asignación estricta o mediante una de las características de BizTalk, como su motor de flujo de trabajo. BizTalk ahora puede utilizar el adaptador de línea de negocio (LOB) de WCF para entregar mensajes en el cuadro de mensajes.
Las características de hospedaje del servidor de aplicaciones AppFabric de Windows Server se han diseñado específicamente para implementar y administrar aplicaciones que usan WCF para la comunicación. Las características de hospedaje incluyen sofisticadas opciones de configuración y herramientas diseñadas específicamente para las aplicaciones habilitadas para WCF.