Udi Dahan, uno de los destacados arquitectos SOA de la comunidad .NET, y autor de uno de los Service Bus Open Source más famosos y utilizados, NServiceBus ha anunciado las novedades que traerá éste en su proxima versión, la 3.0.
NServiceBus 1.0 apareció en Junio del 2006 como resultado a las necesidades que Udi Dahan estaba encontrando como consultor después de una amplia y dilatada experiencia en el arquitecturas SOA distribuidas. NServiceBus se alinea con muchos de los principios básicos de SOA (Service-Oriented Architecture) y EDA (Event-Driven Architecture), desde la autonomía o el bajo acoplamiento de los componentes hasta el Diseño Dirigido a Dominio o Domain-Driven Design (DDD).
Sin embargo NServiceBus no es la panacea de las arquitecturas distribuidas y mucho menos una solución out-of-the-box. Para utilizar NServiceBus con éxito es imprescindible conocer algunos de los principios de la arquitectura de sistemas distribuidos. Es un error empezar a lidiar con NServiceBus de una forma agnóstica a dichos principios; dicho de otra forma NServiceBus puede facilitarte la vida enormemente si te es familiar muchos de los patrones de mensajería de la computación distribuida.
Entre estos principio se encuentran Store & Forward Messaging, Request / Response & One Way Messaging, Publish / Subscribe y Command Query Separation. Prometo hablar largo y tendido sobre estos principios en GenBetaDev, sus características, sus pros, sus contras y especialmente del principio acuñado por Bertrand Meyer, Command Query Separation, y su relación con CQRS (Command Query Responsability Segregation) dónde precisamente Udi Dahan, junto a Greg Young, son las máximas referencias de este tipo de arquitectura que actualmente esta en auge en la comunidad .NET.
Respecto a la nueva versión de NServiceBus, la 3.0, decir que es el mayor salto cualitativo, en cuanto a nuevas características, desde su aparición en el 2006. Entran a escena otros destacados miembros de la comunidad así como un nuevo motor de almacenamiento para NServiceBus.
Novedades de NServiceBus 3.0
Entre las nuevas y esperadas características se encuentra la optimización del los procesos auxiliares como el Timeout Manager, el Distributor y el Gateway para que no sea necesario su ejecución fuera de nuestro proceso de ejecución facilitándonos el trabajo enormemente. El Distributor es típicamente utlizado para la distribución de la carga de mensajes entre AC’s (Componentes Autonomos) y el Gateway para la comunicación entre sistemas a través del protocolo http.
Timeout Manager es el gestor de Sagas, esto es, mensajes transaccionales de larga duración. En este punto, Jonathan Oliver, apoyándose en el nuevo soporte de motor de almacenamiento que ofrecerá nServiceBus y del cual hablaremos a continuación, ha optimizado lo que para muchos era el gran talón de aquiles de éste producto.
Otra característica importante es que nServiceBus ha llegado a un acuerdo con Oren Eini, más conocido como Ayende, y fundador de proyectos como Rhino Mocks o NHibernate Query Analyzer, para poder utilizar RavenDB como motor de almacenamiento sin coste asociado. Hay que recordar que aunque RavenDB es un proyecto Open Source, únicamente puede utilizarse gratuitamente si el proyecto que lo utiliza es también Open Source. Esta novedad es especialmente útil en el sistema de almacenamiento de subscriptores (Subscriptors Storage) y en la persistencia de sagas (Saga Persistence) y como hemos visto en el caso del Timeout Manager, además también será importante en otros aspectos y componentes de nServiceBus.
Aparece una nueva característica llamada DataBus , desarrollada por Andreas Öhlund y cuyo cometido es el de lidiar con la limitación del tamaño del mensaje existente en las colas de transporte, 4Mb con MSMQ o 8Kb en Azure, utilizando el nuevo motor de almacenamiento de nServiceBus, RavenDB.
Yves Goeleven, MVP en Windows Azure, ha colaborado escribiendo una serie de post recogidos en su blog de cómo y de qué forma integrar nServiceBus en proyectos Windows Azure abstrayendo gran parte de la complejidad subyacente existente.
Por último, también aportará novedades en cuanto a la integración con Visual Studio para la generación de archivos de código y/o configuración. Las fechas claves son: versión Alfa a finales de Abril; Beta en Julio y Release Candidate en Septiembre. Permaneceremos con los ojos bien abiertos en cuanto empiecen a aparecer los primero binarios.
Fuente | Mensaje de Udi Dahan en el NServiceBus Group
Sitio Oficial | NServiceBus