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.