Xendor es un marco de .NET Core que se puede utilizar para crear un diseño simple y limpio al hacer cumplir la responsabilidad única y la separación de las preocupaciones. Sus características avanzadas son ideales para el diseño impulsado por el dominio (DDD), la segragación de responsabilidad de consultas de comandos (CQRS) y el abastecimiento de eventos. Xendor también tiene integraciones de RabbitMQ.
La segregación de responsabilidad de la cuidia de comandos es un patrón que nos dice que separemos las operaciones que mutan datos de las que lo consultan. Se deriva de la separación de consultas de comando (CQS) CQS establece que solo puede haber dos tipos de métodos en una clase: los que mutan el estado y devuelven vacío y los que devuelven el estado pero no lo cambian.
CQRS es un patrón en el que aplica? ¿El interior? de su servicio/aplicación y puede aplicarlo solo a la parte de su servicio.
En lugar de almacenar solo el estado actual de los datos en un dominio, use un almacén exclusivo para registrar la serie completa de acciones tomadas en esos datos. La tienda actúa como el sistema de registro y puede usarse para materializar los objetos de dominio. Esto puede simplificar las tareas en dominios complejos, evitando la necesidad de sincronizar el modelo de datos y el dominio comercial, al tiempo que mejora el rendimiento, la escalabilidad y la capacidad de respuesta. También puede proporcionar consistencia para los datos transaccionales y mantener los senderos de auditoría y el historial completos que pueden permitir acciones compensadoras.
La proyección es un concepto importante al tiempo de construir sistemas centrados en eventos. Al mismo tiempo, es extremadamente simple.
La proyección se trata de derivar el estado actual del flujo de eventos.
Por ejemplo, considere una situación, donde un servidor publica un flujo de eventos para todos los suscriptores. Estos eventos están relacionados con los registros de los usuarios y parecen:
Usuarios de usuarios
{
"userId" : 55 ,
"username" : " alemol " ,
"name" : " Alejandro " ,
"lastName" : " Moline "
}UserVerifiMail
{
"userId" : 55 ,
"email" : " [email protected] "
}De usuario
{
"userId" : 55 ,
"lastName" : " Molines "
}Podemos adjuntar un suscriptor para transmitir estos eventos para proyectar esta transmisión en un modelo de lectura persistente, utilizado para atender los detalles del usuario en una interfaz de usuario web. El modelo de lectura final podría parecer:
{
"userId" : 55 ,
"username" : " alemol " ,
"email" : " [email protected] " ,
"name" : " Alejandro " ,
"lastName" : " Molines "
}Si lo desea o está utilizando este proyecto, déle una estrella. ¡Gracias!
Siéntase libre de crear un problema en GitHub. ¡Contribuciones, las solicitudes de extracción son más que bienvenidas!
Xendor es Copyright © 2019 Alejandro Molines y otros contribuyentes bajo la licencia MIT.