Sesión en la dotNetSpain Conference

Microsoft dotNetSpain Conference

El próximo viernes 27 Febrero voy a estar en la dotNetSpain Conference hablando sobre Complex Event Processing, Inmutabilidad y Proyecciones con EventStore.

Aquí os dejo el detalle de la charla:

En esta sesión veremos cómo tomar decisiones a partir del procesamiento y correlación de eventos, la importancia de la inmutabilidad y aplicar proyecciones de datos desde .NET.
Almacenando nuestros datos como una serie de eventos inmutables en Event Store veremos cómo aplicar proyecciones capaces de reaccionar a eventos, procesarlos mediante CEP (Complex Event Processing) y generar nuevos eventos cuando ocurran combinaciones de ellos.
Veremos también como aplicar Temporal queries, algo que tiende a ser complejo en SQL por el número de subconsultas, y finalmente como generar índices de eventos. Todo esto desde las diferentes APIs de las que disponemos en .NET

Nos vemos ahí!!

Read More

Poor Man’s CQRS – BDD con MSpec

[El artículo forma parte de una serie de artículos: http://www.serrate.es/2011/11/22/poor-mans-cqrs/]

En el proyecto de Testing se ha utilizado Machine.Specifications (MSpec) para realizar Behavior Driven Development (BDD).

MSpec utiliza las cláusulas Establish/Because/It equivalente a Given/When/Then disponible en otros frameworks como SpecFlow.

La forma de uso seria la siguiente:

  • Establish: Se usa para establecer el estado inicial.
  • Because: Definimos la acción que vamos a testear.
  • It: Comprobamos que el resultado es el esperado.

(more…)

Read More

Poor Man’s CQRS – Domain Layer

[El artículo forma parte de una serie de artículos: http://www.serrate.es/2011/11/22/poor-mans-cqrs/]

Empezaremos detallando la parte principal de la aplicación: la capa de dominio. Aunque el ejemplo que nos ocupa consta simplemente de dos míseras clases, es importante que interioricemos algunos conceptos.

Diseñar un modelo de dominio es una tarea altamente compleja: definir las entidades que formaran parte de los agregados, el límite de éstos, qué entidad será el agregado raíz, distinguir value objects, etc. y, curiosamente, es la parte que menor relación tiene con CQRS.

Como siempre, la recomendación principal que puedo dar es la de leerse y empaparse del libro Domain-Driven Design de Eric Evans.

(more…)

Read More

Poor Man’s CQRS

[Url del proyecto: https://github.com/mserrate/PoorMansCQRS]

Muchas veces cuando se habla de Command-Query Responsibility Segregation (CQRS) empiezan a surgir conceptos tales como: Event Sourcing, 2-Phase Commit, Snapshots, mensajería asíncrona, eventual consistency y multitud más que hacen que mucha gente piense que CQRS es una arquitectura compleja y que solo se puede utilizar para desarrollar aplicaciones tipo Amazon, Twitter y Facebook (vamos, los proyectos que nos surgen cada día…).

Por el contrario, soy de la opinión de que el uso de este patrón nos permite implementar de forma exitosa una aplicación basada en Domain-Driven Design (DDD). Y es que no se entiende CQRS sin DDD.
Es decir, no hace falta implementar Amazon para utilizar DDD y CQRS pero tampoco vayamos a implementarlo en la web de la panadería de nuestro cuñado en Villaconejo del Monte. (more…)

Read More

CQRS: Evento en SecondNug

El próximo día 5 de mayo voy a estar con los chicos de SecondNug realizando un evento acerca de Command-Query Responsibility Segregation (CQRS) en el que hablaremos de:

  • Domain-Driven Design
  • Problemáticas en aplicaciones típicas n-layer
  • CQRS y conceptos: Commands, Events, Task based UI, etc.
  • Event Sourcing
  • Demo

Si queréis asistir sólo tenéis que registraros en el siguiente enlace:

Evento CQRS
¡Nos oímos en el evento!

Read More