Una aplicación web donde los psicoterapeutas especializados en su campo pueden resolver las dudas que se les formulan en esta plataforma.
Yo usé:
Edificio Arquitectónico
El proyecto consta de dos capas. Capa de persistencia, que está asociada con la base de datos, y capa central, que no está asociada con la base de datos.
Controlador => Núcleo <= Persistencia
Podemos hablar de un diagrama de dependencia como este. La capa central contiene clases de interfaz. La persistencia contiene las clases en las que defino estas interfaces. En el lado del Controlador, utilicé la clase UnitOfWork para reducir la dependencia del Controlador DBContext . Sin embargo, aunque el controlador era una capa de alto nivel , estaba estrechamente acoplado con UnitOfWork, una capa de bajo nivel . Usé la clase IUnitOfWork para esto. IUnitOfWork define una clase completamente abstracta que contiene IRepository. Luego hice que la clase UnitOfWork dependiera de la clase IUnitOfWork . Asimismo, creé una dependencia entre la capa Controlador e IUnitOfWork .
Controlador => IUnitOfWork <= UnidadDeTrabajo
Ahora la capa de alto nivel del Controlador depende de una clase abstracta. Del mismo modo, en UnitOfWork, que es una clase detallada y de bajo nivel, Abstrack se ha vuelto dependiente de una clase. En realidad, lo que hice fue hacer que la capa central fuera completamente independiente. La capacidad de prueba de la aplicación ha aumentado. Además, la capa central tiene una estructura independiente del marco ORM. El cambio que se realizará en UnitOfWork no afectará a la capa IUnitOfWork.
Por otro lado, en la aplicación, la dependencia de DbContext aún continuaba en la capa UnitOfWork . Esto causó indirectamente el problema de acoplamiento estrecho entre Controlador y DbContext . Utilicé un marco de inyección de dependencia para resolver esto. (Ninyectar 3.2.1.0)