Introducción a Indigo (WCF)

viernes, 23 de marzo de 2007


Qué es Indigo (o WCF)?


WCF, Windows Communication Foundation (se pronuncia Indigo), es la solución integral para sistemas distribuidos que forma parte de .NET 3.0, en particular para la implementación de arquitecturas SOA.

WCF permite describir, publicar, implementar y consumir servicios, no solo con la interoperabilidad de los Web Services entre plataformas servidor y cliente, sino también utilizando diferentes plataformas de transporte de forma transparente al resto de la arquitectura.

Una forma de introducir brevemente que nos "trae de nuevo" WCF es mediante estos 3 puntos:



1. Uno para todos y todos para uno

WCF Integra diversas plataformas de comunicación preexistentes para sistemas distribuidos bajo una capa de abstracción

Para la construcción de sistemas distribuidos Microsoft tenía ya distintas tecnologías cada una con sus ventajas y desventajas, Indigo pretende incorporar varias de ellas y "esconderlas" detrás de un modelo de servicio. Esto significa que podemos evitar (o posponer) la decisión clave de escoger el tipo de transporte al momento de diseñar la arquitectura de nuestra solución.

Las tecnologías de comunicación preexistentes que WCF engloba son:

- ASP.NET Web Services (incluyendo las WSE, Web Service Enhancements)
- Microsoft Message Queue
- Enterprise Services/COM+
- .NET Remoting

Una gran promesa de WCF es poder intercambiar, combinar (y extender, puntos 2 y 3) cualquiera de éstas tecnologías en nuestros servicios, dejando la posibilidad de aprovechar los puntos fuertes de cada una según sea apropiado en el entorno de nuestra aplicación. Esto significa también el ahorro de horas dedicadas al dominio de cada tecnología particular.



2. Extensibilidad

El comportamiento de los servicios WCF puede extenderse con distintos grados de granularidad

La principal muestra de extensibilidad se da en la posibilidad de definir "Behaviors" e "Inspectors"

Los Behaviors, como su nombre indica, permiten extender, según se desee, el comportamiento de un servicio, una operación que ofrece un servicio, o un Endpoint.

Endpoints

Un Endpoint representa un punto de acceso donde un servidor recibe clientes, se define mediante un terna "ABC":
  • Address, dirección (una url, un puerto TCP, etc)
  • Binding (Tcp, Http, Pipes, etc)
  • Contract (descripción del servicio, de las operaciones disponibles, tipos de datos, etc)

Así un servicio puede ser expuesto en múltiples Endpoints, un ejemplo típico sería el de un servicio disponible vía Web (un Endpoint con Binding Http, o wsHttp) y vía Intranet (usando un EndPoint con Binding TCP) simultáneamente.


Los Behaviors permiten "colgarse" de diferentes sucesos en la vida de un servicio (en el pipeline de WCF), en la invocación de una operación, o en el procesamiento de los mensajes entrantes y salientes. Muchas veces se usan los Behaviors para colgar un Inspector que realiza el verdadero trabajo.

Un ejemplo típico es la interfaz IParameterInspector, ésta declara los metodos "BeforeCall" y "AfterCall" que se invocarán antes y después de la ejecución de una Operación determinada, permitiendo en ese momento validar parámetros, o verificar la autorización de usuario cliente, crear un log de las operaciones invocadas, o simplemente debuguear.

Estas extensiones, tanto Behaviors como Inspectors pueden "engancharse" decorando con atributos la descripción del servicio, programáticamente, o en archivos de configuración. Esta opción triple para definir o configurar un servicio es característica en WCF, cada modo claramente es útil a distintos fines.




3. WS-*

Los servicios de WCF implementan las WS-*, agregando métodos de seguridad y enrutamiento de forma nativa

Estas extensiones (análogas a las WSE, de los Web Services ASP.NET) apuntan principalmente a la integridad y confidencialidad de los mensajes, direccionamiento, garantía de entrega y transaccionabilidad.

WS-Security, WS-Policy, WS-Trust, WS-Addressing, WS-SecureConversation, WS-ReliableMessaging, WS-AtomicTransaction, WS-Coordination

Esto significa un gran abanico de opciones de autenticación, encriptación, y enrutamiento de los mensajes.



Links para seguir leyendo:

  • Introduction to Building Windows Communication Foundation Services
http://msdn2.microsoft.com/en-us/library/aa480190.aspx
  • Windows Communication Foundation (Indigo) FAQ
http://msdn2.microsoft.com/en-us/windowsvista/aa905015.aspx
  • Windows Communication Foundation (netfx3)
http://wcf.netfx3.com/
  • Introducing Indigo: An Early Look
http://msdn2.microsoft.com/en-us/library/aa480188.aspx
  • WCF Extensibility: Behaviors and Inspectors
http://steve.emxsoftware.com/Indigo-WCF/WCF+Extensibility+Behaviors+and+Inspectors