Encontré DDD siendo natural si estoy trabajando en un tipo de aplicación operacional/transaccional. Sin embargo, siempre estoy sorprendido de una manera razonable para manejar el tipo de informe de funciones.¿Cómo maneja Domain Namen Design Reporting?
Los informes en los que estoy hablando no están obligados a informar generación, sino también funciones que realizan consultas comparativamente complicadas. (por ejemplo, dando el resumen de todos los pedidos que hizo un comerciante, o muestra el resumen de la cuenta para cuentas comerciales que tienen ciertas acciones, etc.). Pueden ser simplemente algunas consultas o funciones de apoyo que se utilizan junto con esas funciones operativas.
Para estas funciones, es bastante natural si podemos realizar join en SQL (o en cualquier lenguaje de consulta), obtener las columnas que nos interesen y devolver el conjunto de resultados del masaje. Sin embargo, parece que no funciona tan bien con DDD: necesitamos un repositorio especial adicional o tener un repositorio más relacionado existente que devuelva un "objeto de entidad/valor" especial (que es el conjunto de resultados especializado). Este tipo de "entidades" especiales no tiene ningún significado de dominio de hecho.
Si queremos hacer uso de la capa de dominio significativa, eso puede crear muchas búsquedas extra de diferentes repositorios, además de una gran cantidad de trabajo de agregación en el dominio o capa de servicio, que fácilmente causará degradación de rendimiento horrible.
También he pensado tener otra "ruta" para este tipo de función, que no pasa por la "ruta DDD", que tiene su propia forma de obtener los datos del informe de DB, compone los resultados para mostrar. Sin embargo, hará que la aplicación sea innecesariamente complicada, y lo que es peor, proporcionamos una ruta adicional para que los desarrolladores más acostumbrados al desarrollo tradicional orientado a bases de datos tiendan a utilizar esta ruta, incluso si no es apropiado.
Pensé que tal situación es bastante común (normalmente un gran sistema no contendrá funciones operativas sino de informes y consultas), ¿me gustaría saber cómo lo están tratando las personas?
Honestamente, es difícil decidir cuál es el correcto, pero usar CQRS parece más razonable (y esa es la respuesta más convincente que recibo de domaindrivendesign.org también) –