Pregunta

Tenemos una aplicación que, junto con muchas cosas, hace algunos cambios a Active Directory (añadir / eliminar usuarios del grupo, el cambio en los valores de atributos de usuario, etc.).

Ahora estamos en el proceso de rediseño (de "spaghetti-código" en una solución más capas). Las funciones de administración de Active Directory es algo que nos gustaría para abstraer a cabo hasta cierto punto en la capa de dominio, pero al mismo tiempo, la mayoría de las funciones son muy dependientes de la tecnología.

¿Hay que poner toda código de acceso de Active Directory en la capa de acceso de datos, junto con nuestra base de datos de acceso, o ¿Está bien para crear una biblioteca de funciones de directorio activo y poner en esta biblioteca directamente del modelo de dominio? Eso hace que el objeto de dominio persistente conscientes y eso es probablemente una mala idea?

O debería todo el acceso Active Directory en lugar llevar a cabo en la capa de servicio en lugar y ni siquiera implicar la capa de dominio?

¿Fue útil?

Solución

Modelos de Dominio debe ser independiente de la tecnología , así que no poner el código del anuncio en el modelo de dominio.

En esencia se podría decir que el código de anuncios es más que otra forma de acceso a datos, por lo que le pertenece en el acceso a datos Capa (DAL). Sin embargo, no le pertenece, junto con su módulo de base de datos, ya que sería una violación de la principio único Responsabilidad . (SRP - se aplica a los módulos, así como tipos individuales)

En lugar de agrupar junto con el acceso a la base de datos, incorpora a su propia biblioteca. Conceptualmente, que pertenece en la misma capa, pero hace cosas diferentes, por lo que ahora tiene dos bibliotecas en la misma capa. Eso es absolutamente bien -. Puede tener tantas bibliotecas en cada capa como sea necesario

En el modelo de dominio, el tratamiento de la AD acceso (y el acceso DB) como abstracciones. Resumen Repositorios son el método por defecto. La biblioteca AD contendrá implementaciones del repositorio de AD, y la biblioteca DB contendrá implementaciones de los repositorios DB.

Esto encaja bien con de dominio-Driven diseño y el concepto de una anti-Corrupción de capa .

Puede utilizar Inyección de dependencias (DI) para cablear los depósitos de hormigón con su modelo de dominio.

Otros consejos

Creo que las cosas son de tecnología específica detalle de implementación, no debe ser puesto en modelo de dominio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top