De l'image, je vois que vous faites référence à l'ancienne architecture en couches, dans sa forme détendue (les couches supérieures ne peuvent dépendre que des couches inférieures, à tout niveau inférieur).
Je donnerai votre langue exemples agnostique pour chaque scénario:
1º - UI -> Application -> Domaine -> Infra
Tel est le scénario le plus courant: l'utilisateur soumet un formulaire pour créer une nouvelle entité du UI
; puis le UI
rassemble les données du formulaire et appelle un service Application
qui crée un nouvel objet entité (avec le nouvel opérateur ou en utilisant une fabrique), et le constructeur d'entité (qui réside dans la couche Domain
) initialise l'entité; puis le service Application
utilise les référentiels du Infrastructure
(par exemple un référentiel SQL) pour conserver l'entité nouvellement créée.
2º - UI -> Application -> Infra
Cela pourrait être le scénario lorsque les UI
vérifie si l'utilisateur a le droit d'accéder à une ressource en utilisant un service Application
qui a lu certains fichiers à partir du disque en utilisant Infrastructure
; la sécurité est une responsabilité de la couche Application
.
3º - UI -> Domaine
Le UI
appelle un service Domain
pour effectuer un calcul; par exemple, le calcul de la TVA sur certains prix du produit afin d'afficher à l'utilisateur
4º - UI -> Infra
Le UI
veulent montrer à l'utilisateur admin l'état de la connexion de base de données (qui est en la couche Infrastructure
)
Avez-vous besoin d'une réponse spécifique à C#? –
@WilsonSantos Il s'agit du motif Layered Architecture du livre DDD original. Il est moins populaire ces jours-ci. Pour des alternatives plus récentes, voir Architecture hexagonale et Architecture d'oignon. Les questions que vous posez n'ont probablement aucun sens dans un environnement DDD typique de 2017. – guillaume31
@ guillaume31 En pratique, l'architecture en couches avec DIP appliquée est à peu près la même que l'architecture hexagonale. Vous pouvez simplement remplacer «infrastructure» par «port & adaptateurs» et la mise en œuvre est la même, non? – plalx