miércoles, 15 de mayo de 2013

{ WCF [ Windows Comunication Fundation ] } - Contextualización

Hasta la aparición de WCF, cuando uno se proponía realizar una aplicación distribuida, se le presentaban numerosas opciones: DCOM, .NET Remoting, Servicios Web o incluso sockets nativos; .Net Remoting por ejemplo, permitía realizar aplicaciones distribuidas donde se podía llamar remotamente a objetos, y en cambio los servicios web estaban más enfocados a arquitectura orientada a servicios.

El problema de disponer de tantas tecnologías es que cada sistema se implementaba de una forma más acomodada a los requerimientos. Esto significa un gran problema de comunicación a la hora de intentar poner a interactuar un sistema con otro debido a que hablan en idiomas distintos. Para poner un ejemplo, supongamos una agencia de viajes que se alimenta de múltiples proveedores de servicios aéreos, hoteleros y alquiler de autos, para de esta forma ofrecerle a sus clientes la mejor opción; siempre y cuando todos los servicios que consume la agencia de viajes trabajen con el mismo sistema que en este caso es .Net Remoting, podrá comunicarse con cada uno de ellos sin ninguna trascendencia. Sin embargo, el problema surge cuando aparece en el escenario un nuevo proveedor de servicio de viajes aéreos que ofrece unas condiciones muy favorables. La agencia de viajes tiene un gran interés de comunicarse con este proveedor. Pero para ello, debe adaptar su sistema para poder comunicarse con su nuevo proveedor, que ofrece su API mediante servicios web. El sistema de comunicación original esta enfocado hacia una interacción mediante .Net Remoting. Cambiarlo para utilizar servicios web no es tarea fácil. De hecho es un cambio muy sustancial que requiere rediseñar aspectos de la arquitectura del sistema y si el día de mañana aparece otra entidad que requiere utilizar mensajería para las comunicaciones, de nuevo hay que adaptar el diseño. Todo esto requiere de un coste enorme de desarrollo y mantenimiento para la empresa.

Cuando diseñamos un sistema distribuido o cualquier aplicación que requiera una comunicación, necesariamente adaptamos esa comunicación con el diseño del sistema, limitando la extensibilidad y versatilidad del sistema. Lo que pretende WCF (Windows Comunication Fundation) es justamente separar esto, permitiendo desvincular nuestro diseño de la cumunicación que pueda tener lugar. Así, un mismo sistema puede comunicarse mediante mensajería como podría con servicio web sin necesidad de cambiar el diseño. Por lo tanto nuestro esquema de capas quedaría como el siguiente.


Estos contenidos se publican bajo una licencia de Creative Commons Licencia Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 Colombia de Creative Commons

1 comentario: