Windows Communication Foundation (WCF)

Es el framework para la creación de aplicaciones orientadas a servicios web y clientes de servicios web de Microsoft. Con WCF, es posible enviar datos como mensajes asíncronos de un servicio a otro. Los mensajes pueden ser tan simples como un carácter o una palabra enviados como XML, o tan complejos como un flujo de datos binarios.

Características de WCF

– Orientado a servicios: Permite crear aplicaciones orientadas a servicios basados en la arquitectura SOA, la arquitectura orientada a servicios para enviar y recibir datos.

– Interoperabilidad: WCF implementa los estándares modernos para la interoperabilidad e integración de servicios web.

– 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.

– Servicio de metadatos: WCF admite la publicación de metadatos 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.

– Contrato de datos: Dado que WCF se basa en .NET Framework, incluye métodos sencillos para crear los contratos que desea aplicar.

– 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.

– 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 utilizando el Protocolo de transferencia de hipertexto (HTTP) usado en Web. WCF también permite enviar mensajes sobre TCP.

– Mensajes: WCF admite intercambio de mensajes usando WS-Reliable y MSMQ.

– Mensaje persistente: Un mensaje persistente es aquel que nunca se pierde debido a una interrupción de la comunicación. Los mensajes persistentes 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.

– Transacciones: WCF también admite tres modelos de transacción: WS-AtomicTransaction, las API System.Transactions y el coordinador de transacciones distribuidas de Microsoft.

– Compatibilidad con AJAX y REST: WCF se puede configurar para procesar datos XML “plano”, también se puede extender para admitir formatos XML concretos, e incluso formatos no XML como notación de objetos JavaScript (JSON).

Conceptos básicos

– WS (Web Services): Tecnología que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Estas aplicaciones pueden estar desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos.

– XML (Extensible Markup Language): Formato estándar para el intercambio de datos.

– SOAP (Simple Object Access Protocol) y XML-RPC (XML Remote Procedure Call): Protocolo que define como dos objetos en diferentes procesos pueden comunicarse para el intercambio de datos XML.

– WSDL (Web Services Description Language): Es el lenguaje de la interfaz pública para los servicios Web. Es una descripción basada en XML de los requisitos funcionales necesarios para establecer una comunicación con los servicios Web donde se especifica la sintaxis y los mecanismos para el intercambio de mensajes.

– UDDI (Universal Description, Discovery and Integration): Protocolo para publicar la información de los servicios Web. Permite comprobar qué servicios web están disponibles.

– WS-Security (Web Service Security): Protocolo de seguridad aceptado como estándar por OASIS (Organization for the Advancement of Structured Information Standards). Garantiza la autenticación de los actores y la confidencialidad de los mensajes enviados.

Otros protocolos: Los datos en XML también pueden enviarse de una aplicación a otra mediante protocolos normales como HTTP (Hypertext Transfer Protocol), FTP(File Transfer Protocol), o SMTP(Simple Mail Transfer Protocol).

Ventajas de los servicios web

– Al utilizar una comunicación vía HTTP es fácilmente escalable, además de ser casi siempre permitido por los cortafuegos.

– Puede ser implementado utilizando cualquier lenguaje y ejecutado en cualquier plataforma.

– Es posible utilizarlo mediante usuario anónimo y mediante autentificación.

– Es posible transmitirlo mediante cualquier protocolo de transporte capaz de transmitir texto, típicamente HTTP o SMTP.

– Aportan interoperabilidad entre aplicaciones de software independientemente de sus propiedades o de las plataformas sobre las que se instalen.

– Los servicios Web fomentan los estándares y protocolos basados en texto, que hacen más fácil acceder a su contenido y entender su funcionamiento.

– Permiten que servicios y software de diferentes compañías ubicadas en diferentes lugares geográficos puedan ser combinados fácilmente para proveer servicios integrados.

Inconvenientes de los servicios web

– Depende del WSDL (Web Services Description Language).

– Al contrario que Java, PHP o Python ciertos lenguajes no ofrecen un apoyo adecuado para su uso ya sea a nivel de integración o de soporte IDE.

– Su rendimiento es bajo si se compara con otros modelos de computación distribuida. Es uno de los inconvenientes derivados de adoptar un formato basado en texto.

– Al apoyarse en HTTP, se pueden esquivar medidas de seguridad.

Creación del servicio WCF

1.- Crear un proyecto en Visual Studio de tipo WCF Service Application.

2.- Incluir el modelo de datos.

3.- Crear el DataContract (clase que contiene la estructura de datos en el mensaje de petición y respuesta) y los DataMembers(cada una de las propiedades de la clase incluidas en el modelo para el intercambio de datos).

4.- Incluir métodos en la clase que contiene el DataContract para el intercambio de datos entre las interfaces DTO (Data Transfer Object).

5.- Definir el ServiceContract(interfaz que contiene las operaciones que va a exponer al público el servicio web) y los OperationContract(cada uno de los métodos (operaciones) que realiza el servicio web). Al crear el proyecto este es creado por Visual Studio hay que refactorizarlo y ajustarlo a nuestra necesidad(IService1).

6.- Implementar el ServiceContract(Service1), este también es creado por Visual Studio, borramos el contenido verificamos que herede de la interfaz que hemos refactorizado e implementamos los métodos.

7.- Verificamos que funciona el WCF con el WCF Test Client.

8.- Obtenemos el WSDL y mantenemos el servicio corriendo.

Creación del cliente para el consumo del servicio WCF.

1.- En este ejemplo utilizamos una aplicación web de tipo MVC.

2.- Creamos una referencia al servicio web que acabamos de crear.

3.- Creamos un controlador y las acciones de acuerdo a lo que el servicio web nos ofrece.

4.- Creamos las respectivas vistas de cada acción.

5.- Finalmente comprobamos el funcionamiento.

GitHub: Descarga del servico WCF

GitHub: Descarga del Cliente WCF

Julio Cesar Ruperti Ortiz
Microsoft MCSD
Tajamar
2015 – 2016