Mostrando las entradas con la etiqueta Indigo. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Indigo. Mostrar todas las entradas

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
Leer más...

Qué es .NET 3.0 y qué no es

viernes, 26 de enero de 2007

Con la reciente liberación de la versión final de .NET 3.0, son frecuentes las preguntas acerca de qué es, qué incluye, y otras dudas como "cuál es su compatibilidad con la versión 2.0".

Para clarificar el panorama, presento algunas de mis conclusiones sobre el tema agrupadas en dos afirmaciones:

.NET 3.0 es un avance importantísimo en la plataforma .NET

.NET 3.0 no es una nueva version del runtime .NET, no, no no

.NET 3.0 es un avance importantísimo en la plataforma .NET

Después de mucha investigación, feedback de los desarrolladores, y participación de la comunidad, Microsoft completó e hizo público el paquete de nuevas tecnologías que, luego de pasar por diversos alias durante su gestación (WinFx, Indigo, Avalon, Workflow Foundation, etc) finalmente salió a la luz con el nombre .NET 3.0.

Este conjunto de tecnologías lleva a una nueva dimensión las aplicaciones en código manejado (.NET) al abrir posibilidades inéditas en la experiencia de usuario, comunicación entre aplicaciones, automatización de procesos de negocios, y otros avances. Estas nuevas funcionalidades se distribuyen entre los componentes centrales de .NET 3.0:

  • Windows Presentation Foundation (ex "Avalon")
  • Windows Communication Foundation (ex "Indigo")
  • Windows Workflow Foundation
  • Windows CardSpace

Físicamente (en términos binarios) estas funcionalidades están contenidas en varios assemblies (.dll) que se adicionan a los de .NET 2.0 luego de un proceso de instalación del runtime 3.0.

Para una una idea más completa del alcance de estas tecnologías visite el portal de .NET 3.0 para desarrolladores en http://www.netfx3.com/.

.NET 3.0 no es una nueva version del runtime .NET, no, no, no


Algunos elementos de la presentación comercial de .NET 3.0 llevan a entenderlo como "la versión del runtime .NET que sucede a la versión 2.0". Esta confusión en parte se origina por:

  • el nombre del producto. En la sucesión lógica de .NET 1.0, .NET 1.1, .NET 2.0 que eran versiones sucesivas del entorno de ejecución de .NET con su propia version de bibliotecas de clases, etc., es fácil caer en el error de pensar que .NET 3.0 es una nueva versión del tipo de las anteriores.
  • la carpeta de instalación. Dentro de la carpeta Windows\Microsoft.NET\Framework, la versión 3.0 aparece como una nueva subcarpeta a la par de la v2.0.50727

Sin embargo, un análisis más cuidadoso de la implementación de .NET 3.0 pone de manifiesto que este conjunto de nuevas funcionalidades se montan sobre el mismo runtime de .NET 2.0:

  • si en una aplicación nueva realizada con .NET 3.0 (por ejemplo un aplicación de Windows Presentation Foundation) se pregunta para cualquier clase del sistema el numero de version del runtime, se obtiene el valor "2.0.50727"
  • la carpeta v3.0 que se crea en Microsoft.NET\Microsoft sólo contiene los assemblies adicionados y requiere la carpeta v2.0.50727 para funcionar (de hecho la instalación del runtime "3.0" instala ambas) .

Este hecho despeja muchas de las dudas respecto a la coexistencia de aplicaciones 3.0 y 2.0: la compatibilidad es completa porque se trata de la misma versión del runtime.




Leer más...