In Lektion 4.10.1 haben Sie das Repository kladde-stile angelegt, die Wiedervorlage in Anwendungsfälle und Testfälle zerlegt und den
Messbogen festgelegt. Jetzt kommt die erste Fassung, und sie ist die, die Sie am häufigsten in fremdem Code antreffen werden: drei Schichten,
Präsentation, Geschäftslogik, Datenzugriff.
Sie bauen sie so, wie sie in vielen Projekten wirklich aussieht, nicht in ihrer besten denkbaren Form. Das ist Absicht. Nur so sehen Sie den
typischen Verfall, gegen den die Stile der nächsten Lektionen erfunden wurden, und nur so ist der Vergleich ehrlich. Am Ende steht Fassung A
mit den Tags a-vorher und a-nachher in kladde-stile, und die Spalte A des Messbogens ist gefüllt.
Drei Schichten
Microsofts Leitfaden „Common web application architectures“ (unter Weiterlesen) beschreibt die verbreitetste Ordnung so: Die Oberfläche (UI) spricht nur mit der Geschäftslogik (BLL), die Geschäftslogik ruft den Datenzugriff (DAL), und die Oberfläche greift nie selbst auf die Daten zu, auch nicht auf Umwegen. Jede Schicht hat damit eine bekannte Aufgabe. Für die Wiedervorlage sind das drei Projekte:
| Projekt | Schicht | Inhalt | verweist auf |
|---|---|---|---|
FollowUps.Web |
Präsentation | Program.cs, die Endpunkte, Anfrage- und Antworttypen |
FollowUps.Business |
FollowUps.Business |
Geschäftslogik | FollowUpService mit den Regeln, Fehlercodes, Result, der Typ für die Liste |
FollowUps.Data |
FollowUps.Data |
Datenzugriff | FollowUpEntity, FollowUpsDbContext, FollowUpRepository |
EF Core mit SQLite |
a-schichten/
Schichten.slnx
src/
FollowUps.Web/ Program.cs, FollowUpEndpoints.cs
FollowUps.Business/ FollowUpService.cs, FollowUpErrors.cs, Result.cs, DueFollowUp.cs, BusinessRegistration.cs
FollowUps.Data/ FollowUpEntity.cs, FollowUpsDbContext.cs, FollowUpRepository.cs, DataRegistration.cs
tests/
FollowUps.Business.Tests/
FollowUps.Web.Tests/
Derselbe Leitfaden nennt den Preis gleich mit: Die Abhängigkeiten beim Kompilieren laufen von oben nach unten. Die Geschäftslogik, meist der wichtigste Code der Anwendung, hängt damit an den Einzelheiten des Datenzugriffs und oft am Dasein einer Datenbank, und ihr Test braucht häufig eine Testdatenbank. Behalten Sie den Satz im Kopf; Sie werden ihn in dieser Lektion messen.