lunes, diciembre 04, 2006

Una API para comunicar a todos

Windows Communication Foundation (WCF) es una interesante plataforma de integración. Consolida varias de las tecnologías disponibles en Windows de MOM (Message Oriented Middleware) en una sola API.

En el proyecto Mono existe el subproyecto Olive cuyo objetivo es conseguir una implementación de las API's de WinFX/.NET3 entre las que se incluyen WCF. Sin embargo considerando la no dependencia de plataforma inherente a Mono, se ha dejado fuera el soporte a MSMQ. La razón es obvia: no existe fuera de Windows.

Sin embargo, el soporte de colas (queueing) es uno de los factores que consiguen soportar grandes volumenes de transacciones en ambientes empresariales. En lo particular creo que MSMQ ha sido desgraciadamente desaprovechado y prácticamente ignorado por varios arquitectos. Con WCF, se presenta de nuevo como una herramienta más a nuestro alcance y creo que también debe formar parte de Olive pero ¿cómo resolver la ausencia de MSMQ en otras plataformas?

De inicio pienso en ActiveMQ. Un proyecto Apache que también ha sido utilizado en algunos proyectos ESB Open Source. Una ventaja que recientemente ví es que funciona (al menos en la doc) en Windows y en Unixes. Igual y se puede pensar en IBM WSMQ que tiene el mismo soporte multiplataforma. La idea es entonces, construir una implementación abstracta de queueing para WCF y construir implementaciones especificas para diferentes productos. Y después integrar esto en Mono de manera que se complete el alcance de Olive.

Existe un pequeño inconveniente. Estoy en el proceso de aprender WCF :D. Esto implica que paso mucho tiempo en Windows para estar consultando la documentación en línea. Si bien también está disponible en MSDN, estoy limitado por la disponibilidad de una conexión a internet. El punto final es que voy a trabajar más tiempo en Windows y de ahí se deriva otro pequeño reto, la facilidad de compilar Mono en Windows.

La documentación que existe hace referencia a cygwin como "plataforma" para construir Mono en Windows. En el sitio de Paul Johnson existe una detallada guía para preparar el ambiente ya que requiere una combinación muy específica de versiones de las herramientas de construcción que realmente no he conseguido armar.

Pero bueno, los puntos a conseguir son los siguientes:

- Aprender WCF, particularmente los puntos de soporte a queueing.
- Aprender ActiveMQ y su binding con .NET
- Descubrir o crear el API para una integración genérica de WCF con productos de queueing.
- Llevar este código a Mono.
- Aprender a configurar un ambiente para compilar Mono en Windows.

Voy a abrir otro backpackit para darle seguimiento a este asunto.

Finito.

No hay comentarios.: