Une application web où les psychothérapeutes spécialisés dans leur domaine peuvent répondre aux questions qui leur sont posées sur cette plateforme.
J'ai utilisé :
Bâtiment architectural
Le projet se compose de deux couches. Couche de persistance, associée à la base de données, et couche principale, qui n'est pas associée à la base de données
Contrôleur => Noyau <= Persistance
On peut parler d'un diagramme de dépendances comme celui-ci. La couche principale contient des classes d'interface. La persistance contient les classes dans lesquelles je définis ces interfaces. Du côté du Controller, j'ai utilisé la classe UnitOfWork pour réduire la dépendance du Controller DBContext . Cependant, bien que le contrôleur soit une couche de haut niveau , il était étroitement couplé à UnitOfWork, une couche de bas niveau . J'ai utilisé la classe IUnitOfWork pour cela. IUnitOfWork définit une classe complètement abstraite qui contient des IRepository. Ensuite, j'ai rendu la classe UnitOfWork dépendante de la classe IUnitOfWork . De même, j'ai créé une dépendance entre la couche Controller et IUnitOfWork .
Contrôleur => IUnitOfWork <= UnitOfWork
Désormais, la couche de haut niveau du contrôleur dépend d'une classe abstraite. De même, dans UnitOfWork, qui est une classe de bas niveau et détaillée, Abstrack est devenu dépendant d'une classe. En fait, ce que j'ai fait, c'est rendre la couche centrale complètement indépendante. La testabilité de l'application a augmenté. De plus, la Core Layer a une structure indépendante du Framework ORM. La modification à apporter dans UnitOfWork n’affectera pas la couche IUnitOfWork.
D'un autre côté, dans l'application, la dépendance DbContext persistait dans la couche UnitOfWork . Cela a indirectement provoqué le problème étroitement couplé Controller - DbContext . J'ai utilisé un framework d'injection de dépendances pour résoudre ce problème. (Ninject 3.2.1.0)