Beispiel für eine ASP .NET-Architektur
Musterdomänengesteuertes Design DDD
01 - Präsentation
Die Benutzeroberflächenschicht
Grundlegende API:
- Controller „Sample“ wird für DI und Sample der CacheManager-Klasse verwendet.
- Der Controller „SampleAlt“ wird verwendet, um die Verwendung von „services“ > „repository“ > „UoW“ > „EF“ zu demonstrieren.
02 – Domäne
Die Datenverwaltungsschicht
Verwenden Sie das „Modul“-Konzept: Dienstschnittstellen mit ihrer Implementierung (Modul: Aggregate/Dienste [DDD])
DTO: Datenübertragungsobjekt (Beispiel: MyApp.Domain.DTO.SampleDataDTO).
Das Spezifikationsmuster (bald).
„Select Builder“: Dank LINQ können Sie einen benutzerdefinierten Ausdruck für die direkte Rückgabe eines DTO erstellen (Beispiel: MyApp.Domain.SampleModule.Aggregates.SampleDataSelectBuilder).
03 - Daten
Die Datenzugriffsschicht
- Verwenden Sie EntityFramework (EF) mit DbSet/Annotations, um eine SQL/Tabelle mit einer Klasse/einem Objekt zu verknüpfen (Beispiel: MyApp.Domain.SampleModule.Aggregates.SampleData).
- Das Unit Of Work (UnitOfWork / UoW)-Muster fügt Transaktionen zur Lösung von Parallelitätsproblemen hinzu (MyApp.Data.UnitOfWorkContext).
- Das Repository-Muster fügt eine Ebene zwischen DbSet (Rückgabe von IQueryable) mit UoW und den in der Ebene „Domäne“ verwendeten Daten hinzu. Eine abfragbare Manipulation ist sinnvoll, ein Repository gibt ein Enumerable oder eine Entity zurück. (MyApp.Data.Core.Repository && MyApp.Domain.Core.IRepository)
04 - Infrastruktur
Die App-Verwaltungsebene
- CrossCutting: Eine Ebene kann in allen anderen verwendet werden.
- Die Umkehrung der Kontrolle.
- Abhängigkeitsinjektion (DI) und LifeTimeManager.