Usar MicroORM para leer la capa en CQRS

cqrs dapper massive

Pregunta

Amigos, estoy considerando usar un microORM como Dapper.net para el componente de acceso de lectura de una aplicación CQRS (Asp.Net MVC), con Entity Framework utilizado para manipular el dominio.

Esta es la luz CQRS, no estoy usando fuentes de eventos, etc. He visto mencionar varias veces que el modelo de solo lectura en CQRS debe ser ligero / simple como sea posible consultando la capa de datos, es posible usar algo como ADO.net. Eso implica SQL potencialmente difícil Consultar cadenas en nuestro código o en algún archivo XML. ¿Cómo debo ir sobre la justificación de este enfoque donde tenemos que mantener las asignaciones de dominio en un lado y las declaraciones SQL en otro?

¿Alguien ha usado MicroORM en una solución CQRS de esta manera? Gracias Mick

Respuesta aceptada

Sí, definitivamente puedes usar Dapper, PetaPoco, Massive, Simple.Data o cualquier otro micro ORM que desees. En el pasado, hemos usado NHibernate para resolver el problema, pero era un 10,000 lbs. Gorila comparado con lo que necesitábamos.

Una cosa que realmente nos gustó de Simple.Data y Petapoco en nuestra evaluación de esas bibliotecas fue que cada una de ellas podía adaptar sus consultas a diferentes motores de base de datos (incluyendo Mongo) con ajustes mínimos necesarios, mientras que Dapper era básicamente un gran grupo de cadenas de SQL- -fue "escrito a máquina". No me malinterpretes, Dapper es genial y es muy, muy rápido y funcionará genial. Simplemente evalúa tus requisitos funcionales y no funcionales antes de comprometerte.

A continuación, se detalla el número relativo de descargas que utilizan NuGet para cada uno de los ORM principales (a partir del 1/1/2012). Para nosotros, tener una buena comunidad con muchas descargas siempre es una necesidad para ayudar a resolver los problemas cuando surgen:

  • 5568 Simple.Data
  • 4990 Petapoco
  • 4913 Dapper
  • 2203 masivo
  • 1152 OrmLite

Por último, una cosa que puede querer investigar es su razonamiento detrás de SQL para sus modelos de lectura. Si su dominio está publicando eventos (independientemente de la fuente del evento), y está escribiendo en modelos de vista simple, plana / no relacional, es posible que pueda salirse con la suya con algo tan simple como los archivos JSON que se envían al navegador. el navegador luego interpreta y utiliza para poblar sus plantillas HTML. Hay todo tipo de opciones disponibles, solo necesita determinar qué funciona mejor en su escenario.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow