Die Wiedervorlage steht viermal in kladde-stile: in Schichten, in Clean Architecture, hexagonal mit einem zweiten Eingang und als Vertical Slices. Jede Fassung hat dieselbe Änderung bekommen, und jede ist mit demselben Werkzeug und denselben git-Befehlen gemessen. Diese Lektion legt die vier Spalten nebeneinander, zeigt für jeden Stil einen Architekturtest, der ihn im Build hält, und führt zu der Entscheidung, um die es in Modul 4.10 von Anfang an ging: nach welchem Stil die Kladde weiter gebaut wird.

Die Kladde bekommt aus dem ganzen Modul nur zwei Dinge: ein ADR mit dem Messvergleich und erweiterte Architekturtests. Beides entsteht in den Übungen. Die Vorlage für das ADR kennen Sie aus Lektion 4.1.3, den Architekturtest aus Lektion 4.3.6.

Die vier Messbögen nebeneinander

Alle Zahlen stammen aus tools/messen.cs und git diff --stat an den Tags <x>-vorher und <x>-nachher, so wie sie die Lektionen 4.10.2 bis 4.10.5 gemessen haben:

Messpunkt A Schichten B Clean C Hexagonal D Slices
Projekte, Projektverweise (Produktion) 3, 2 4, 4 4, 5 1, 0
Zeilen Produktion, vorher → nachher 179 → 194 243 → 255 205 → 217 164 → 175
Dateien, Typen Produktion 11, 16 15, 22 10, 15 9, 15
Zeilen Tests, vorher → nachher 184 → 221 205 → 246 201 → 242 152 → 184
Typen nur zum Abbilden 5 6 4 5
„wöchentlich“: Dateien Produktion (+/−) 4 (27/9) 5 (33/17) 3 (31/15) 4 (26/11)
„wöchentlich“: Dateien Tests (+/−) 2 (57/11) 3 (65/13) 3 (65/13) 2 (50/10)
Wo die Regel steht FollowUpService.CompleteAsync FollowUp.Complete FollowUp.Complete FollowUp.Complete
Billigster Test der Regel mit Datenbank ohne Host und Datenbank ohne Host und Datenbank ohne Host und Datenbank
Was der Kern kennt FollowUps.Data, EF Core mit SQLite nichts nichts der Ordner nichts, sein Projekt EF Core und ASP.NET Core

Dazu kommen zwei Messungen, die nur in einer Fassung vorkamen. Der zweite treibende Adapter in Fassung C hat 10 Dateien mit 236 Zeilen ergänzt und keine Datei der Mitte geändert. Und die Tests der Regel liefen in einzelnen Läufen unterschiedlich lange: Fassung A brauchte für ihre Tests mit SQLite knapp 4 Sekunden, B und C für die Tests des Modells gut 1,4 Sekunden, D gut 2 Sekunden, weil das Testprojekt das Webprojekt mitbaut. Zeiten schwanken von Lauf zu Lauf; die Reihenfolge blieb dieselbe.