es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Excepciones de capas de infraestructura a capas de presentación en DDD.

Tengo una aplicación de escritorio que utiliza la Arquitectura Onion donde el usuario debería poder crear y editar archivos locales en el disco.

Tengo las siguientes capas: Presentación->Aplicación->Dominio -> Infrastructure ->

Quiero poder presentar problemas al trabajar con archivos al usuario para que este pueda tomar alguna acción, como elegir si sobrescribir un archivo si ya existe. Pero según entiendo de DDD, la capa de aplicación no debería tener conocimiento de los detalles de persistencia en la capa de Infraestructura. Mi idea era que una excepción (por ejemplo, FileExistsException) podría ser una parte del contrato de la interfaz en la capa de Aplicación y lanzada desde la implementación en la capa de Infraestructura, pero entonces la capa de Aplicación conocería el tipo de almacenamiento.

¿Esto está bien, ya que trabajar con archivos forma parte del ámbito de la Aplicación?

Mi pregunta se refiere principalmente al manejo de excepciones, pero veo que también podría haber otra información que compartir.

Actualización:

Para expandir un poco la pregunta y ser más específico, el usuario trabaja con modelos de datos que se guardan como un archivo JSON, por lo que tengo esos modelos de datos en el dominio y el concepto de Archivo solo se utiliza en la capa de infraestructura cuando se persiste/cambia el archivo.

Si, en el futuro, quisiera dar al usuario la opción de cambiar el almacenamiento desde el disco local a una base de datos donde recibirían tipos de excepciones completamente diferentes para manejar, ¿la información específica de la base de datos también se agregaría al dominio?

En otras palabras, ¿se pueden agregar detalles de implementación al dominio si es necesario para que el usuario interactúe con ellos, aunque no sean necesariamente parte del negocio real?

En mi mente, la forma en que el usuario almacena la información es un detalle de implementación y debería mantenerse fuera del dominio.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Según los principios del diseño basado en el dominio, la capa del dominio debe ser agnóstica al mecanismo de persistencia específico utilizado por la capa de Infraestructura. Sin embargo, en el caso de la manipulación de archivos, se puede argumentar que trabajar con archivos es una parte del alcance de la Aplicación y se puede incluir en la capa de Aplicación.

    Se podrían definir un conjunto de excepciones relacionadas con archivos en la capa de Aplicación, las cuales son lanzadas por la capa de Infraestructura cuando sea necesario. Esto permite que la capa de Aplicación maneje estas excepciones y presente la información apropiada al usuario.

    Con respecto a su pregunta acerca de cambiar el almacenamiento de un disco local a una base de datos, generalmente no se recomienda agregar detalles específicos de implementación al dominio. En lugar de ello, se podría definir un conjunto de excepciones genéricas relacionadas con la persistencia en la capa de Aplicación, las cuales se mapean a las excepciones específicas de implementación apropiadas en la capa de Infraestructura. De esta manera, la capa de Aplicación se mantiene agnóstica al mecanismo de persistencia específico utilizado por la aplicación.

Comments are closed.