En un proyecto de varios niveles, ¿dónde se deben definir las interfaces?

9

Tengo un proyecto de varios niveles compuesto por tres subproyectos, es decir, proyecto de acceso a datos, proyecto de lógica de negocios y proyecto de presentación, ¿dónde se deben definir las interfaces? Supongo que debería haber interfaces definidas tanto en el DAL como en el BLL. En el contexto de probar la capa de lógica de negocios utilizando datos de "prueba" basados ​​en la interfaz, parece que tal vez debería haber un proyecto separado con solo el interfaces?

¿Alguna mejor práctica o idea sobre cómo se debe organizar?

John S
fuente

Respuestas:

9

Un buen enfoque para esto es usar el patrón de escalera:

ingrese la descripción de la imagen aquí

Entonces, el DAL vive en un proyecto, sus interfaces en otro, el BLL en un tercero, sus interfaces en un cuarto y así sucesivamente.

La idea es que al probar, por ejemplo, la capa empresarial, simplemente haga referencia al proyecto de interfaces DAL, en lugar de arrastrar todo el DAL real y, por ejemplo, NHibernate al alcance solo para acceder a esas interfaces.

Hasta donde sé, este patrón es la creación de Gary McLean Hall en su libro, " Código adaptativo a través de C #: codificación ágil con patrones de diseño y principios SÓLIDOS "

David Arno
fuente