Windows Communication Foundation
(WCF) es un marco de trabajo para la creación de aplicaciones orientadas a
servicios. Con WCF, es posible enviar datos como mensajes asincrónicos de
un extremo 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.
- Una aplicación de Silverlight para sondear un servicio en busca de
las fuentes de datos más recientes.
Si bien era posible crear tales
aplicaciones antes de que existiera WCF, con WCF el desarrollo de extremos
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.
WCF incluye el siguiente conjunto de
características
- Orientación a servicios
Como consecuencia del uso de los estándares de WS, 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 los estándares del sector modernos para la
interoperabilidad de servicios web.
- Varios modelos de mensajes
Los mensajes se intercambian mediante uno de los distintos modelos. 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 modelos, como
un mensaje unidireccional, en que un único extremo envía un mensaje sin esperar
ninguna respuesta. Un modelo más complejo es el modelo 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.
- Metadatos de servicios
WCF admite la publicación de metadatos de servicios utilizando los
formatos especificados en los estándares de la industria, como WSDL, Esquemas
XML y WS-Policy. Estos metadatos pueden utilizarse para generar y
configurar automáticamente clientes 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.
- Contratos de datos
Dado que WCF se basa en .NET Framework, también incluye métodos con
código sencillo para proporcionar los contratos que desea 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.
- 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.
- 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 utilizando
el Protocolo de transferencia de hipertexto (HTTP) usado en 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.
- Mensajes confiables y en cola
WCF admite intercambio de mensajes confiable usando sesiones confiables
implementadas sobre mensajería WS-Reliable y mediante MSMQ.
- 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
modelo 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 utilizando Windows Workflow Foundation (WF).
- Transacciones
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
Coordinador de transacciones distribuidas de Microsoft.
- 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 ajustan en
un sobre 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 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.
