c# design-patterns domain-driven-design onion-architecture

c# - Arquitectura de cebolla



design-patterns domain-driven-design (2)

Creo que todas las Referencias son correctas (configuradas según el diagrama donde una flecha significa ''tiene una referencia a'') pero alguna verificación sería buena.

1 Se ve bien, pero no estoy seguro de que sea una buena idea insertar la resolución de dependencia en el diagrama.

¿Qué debo poner en mi capa de resolución de dependencias? ¿Es aquí donde van los ayudantes? ¿Esto tiene una referencia a todos los otros proyectos?

2 Creo que las cosas de inyección de dependencia estarían aquí.

¿Cómo se comunican los servicios web y la interfaz de usuario con el DAL? (¿A través del núcleo? ¿Cómo?)

3 Es el núcleo según el diagrama de Palermo. En esencia, tendrá repositorios que hablan con DAL y modelos de dominio, y servicios (no servicios web) que se ocupan de repositorios y modelos de dominio. Y los servicios de UI / web se dirigirán principalmente a los servicios.

¿Qué debería ir a dónde? [Pregunta general que sé ...]

4 Nuevamente, creo que la respuesta está en el diagrama de Palermo. Pero en mi opinión, organizar proyectos puede ser diferente y trivial cuando hay una comprensión completa de la arquitectura.

La arquitectura de la cebolla se hizo evidente para mí una vez que entendí DDD y los patrones de diseño necesarios como MVC, inyección de dependencia, repositorio / servicio, ORM.

Estoy configurando una estructura de proyecto para una próxima aplicación interna que está probando la arquitectura de la cebolla propuesta por Palermo ( http://jeffreypalermo.com/blog/the-onion-architecture-part-3/ ).

He seguido sus directrices, sin embargo, necesito alguna verificación sobre la estructura del proyecto hasta el momento.

Ante los diagramas, las preguntas:

  1. Creo que todas las Referencias son correctas (configuradas según el diagrama donde una flecha significa ''tiene una referencia a'') pero alguna verificación sería buena.

  2. ¿Qué debo poner en mi capa de resolución de dependencias? ¿Es aquí donde van los ayudantes? ¿Esto tiene una referencia a todos los otros proyectos?

  3. ¿Cómo se comunican los servicios web y la interfaz de usuario con el DAL? (¿A través del núcleo? ¿Cómo?)

  4. ¿Qué debería ir a dónde? [Pregunta general que sé ...]

El diagrama conceptual simplificado es el siguiente (las carpetas representan espacios de nombres):


  1. Sí lo son, espera la Resolución de Dependencia. Estas dependencias deben ser al revés.
  2. Como el nombre (y las referencias corregidas) implica que su propósito es alojar algún tipo de solución de contenedor IoC. No es un lugar para clases de ayudantes, espere clases de ayudantes para propósitos de resolución.
  3. El núcleo define interfaces para DAL o servicios de dominio. DAL y WebServices implementan estas interfaces. Dentro de la interfaz de usuario, usaría las implementaciones de DAL o Servicio a través de las interfaces definidas. la implementación correcta se resolvería con la ayuda del componente Resolución de dependencia (consulte el concepto de "Inversión de control" o "Inyección de dependencia").
  4. Como se describe en 3. lo principal es que en Core se colocan las interfaces que se implementarán dentro de DAL y Servicios web. Y en Core implementarías tu modelo de negocio real. este modelo puede hacer uso del DAL y los servicios web a través de las interfaces definidas (con la ayuda del componente de resolución de dependencias).