My kemenworld…

To mock or not to mock…

Windows Communication Foundation Primer

Posted by kementeus en diciembre 18, 2007

Hace varias semanas tube el honor de participar en el MSDN Tour en la ciudad de Guatemala con el tema WCF Services. Según la definición común es la “nueva” infraestructura de comunicación entre aplicaciones distribuidas ofrecida en la .Net Framework 3.0 conocida antes como Indigo (si, ya se que este post esta algo atrasado). Alguien versado en .Net me dirá: “para qué otro sistema de intercomunicación en aplicaciones distribuidas?”, bien, en la misma pregunta esta la respuesta. Hagamos un poco de historia:

Recordemos cuando salió .Net y ASP.net, recuerdan a nuestros amigos ASMX? bien, ASMX en realidad es un subset de ASP.net (o sea, corre dentro de ASP.net) y es la implementación en .Net (anterior a la 3.0) de Webservices, esto involucra que nuestros ASMX se encargaban de generar el código WSDL y SOAP necesario para la intercomunicación de aplicaciones distribuidas a través de la web. Cuando ASMX sale aun muchos de los estándares estaban en proceso de drafts por lo que luego al ir saliendo nuevas versiones y nuevos estandares (como por ejemplo soporte para seguridad, autenticación y transferencia binaria) nacieron las conocidas WSE (Web Service Extension) que eran a su vez un subset de ASMX (o sea, estan basadas en ASMX y le agregan nuevas características). ASMX y WSE dependen directamente del ASP.net host process, por lo que requieren un webserver capaz de trabajar junto asp.net, estos casos son perfectos para aplicaciones distribuidas a través de webservices, pero webservices involucra “web” verdad? eso trae otro set de implicaciones directas como por ejemplo, “usar un webserver”.

Qué sucede si necesitas intercomunicar dos aplicaciones desktop? alguien dirá: “ahhh, entonces usa remoting”, y su respuesta no puede estar mas acertada. Net Remoting permite la intercomunicación entre aplicaciones usando un protocolo propio y esta limitada sólo a aplicaciones .Net, claro, eso toma en cuenta que las aplicaciones siempre estarán en .Net, que sucede con aplicaciones tipo legacy? alguien más dirá por ahí: “ahhh bueno para eso tenemos cosas como COM+”, y sí, COM+ es la solución en esos casos, podemos lograr que nuestra aplicación en .Net se comporte como un cliente/servidor COM+, pero esos son otros cinco pesos. Que sucede con transacciones y colas? bueno, ahi podríamos usar MSMQ.

Bien, hasta ahora involucraría que un buen programador de .Net para aplicaciones distribuídas debería conocer 5 tecnologías diferentes (ASMX, WSE, Net Remoting, COM+, MSMQ) y ahí aun no agregamos un par de cosas más, bueno, ese es la razón por la cual existe WCF, una sola framework para manejar intercomunicación entre procesos y aplicaciones.

Al igual que su predecesor ASMX/WSE, WCF sigue una filosofía fuertemente orientada a la arquitectura de servicios. Un servicio es un pedazo de código que permite interactuar con él através del intercambio de mensajes, los servicios exponen uno o mas “endpoints” a través de los cuales son enviados los mensajes. Un endpoint posee una dirección, un “binding” y una serie de “contracts”; la dirección indica a dónde enviar el mensaje, el binding cómo enviarlo y la contract lo que el mensaje contiene.

Entre las diferencias palpables entre ASMX/WSE y WCF se encuentra el soporte para protocolos. WCF posee una gama mucho más rica de protocolos y estándares soportados para el intercambio de mensajes. Otra gran característica de WCF es que si bien incorpora y usa la ASP.net Pipeline para el procesado de mensajes NO depende de ASP.net para su ejecución, en realidad es un proceso aparte aislado del ASP.net process, eso significa que podemos usar HTTP webservices entre aplicaciones sin tener que instalar IIS o un webserver en sí, claro, podemos usar cualquier otro protocolo através de TCP.

Los dejo en compañía de las diapositivas que usé para mi presentación, además de un corto link a un excelente artículo a la MSDN Magazine de Febrero 2006, creo que más clarito la revista no puede dejarlo (http://msdn.microsoft.com/msdnmag/issues/06/02/WindowsCommunicationFoundation/) además recomiendo un par de libros sobre WCF que me han ayudado mucho a explotar WCF. Saludos!

 

Learning WCF: A Hands-on Guide
by Michele Bustamante

Read more about this title…

Programming WCF Services (Programming)
by Juval Lowy

Read more about this title…

Pro WCF: Practical Microsoft SOA Implementation (Pro)
by Chris Peiris, Dennis Mulder, Amit Bahree, Aftab Chopra, Shawn Cicoria, Nishith Pathak

Read more about this title…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: