03 · Architektur
Eine Anwendung, vier Schichten.
Plattformbeschreibung
Plattformarchitektur
NOVERA ist eine einzige ASP.NET Core 8-Anwendung auf Basis von Razor Pages, die als eine einzige Assembly ausgeliefert wird, und sie ist unter der Oberfläche einfach gehalten. Rund 320 C#- und Razor-Dateien enthalten etwa 182.000 Zeilen Anwendungscode, gestützt auf 82 Dienste und rund 22.000 Zeilen Stylesheet.
Zwei Entscheidungen prägen alles Weitere.
- Das Projekt enthält genau eine Paketreferenz, und es darf kein neues Paket hinzugefügt werden.
- Es gibt nirgendwo in der Solution einen objektrelationalen Mapper, ein Frontend-Framework oder einen Build-Schritt.
Datenzugriff. Sämtliches SQL ist handgeschrieben, in wörtlichen interpolierten Zeichenfolgen (verbatim interpolated strings) mit durchgängig typisierten, gebundenen Parametern. Die eine Paketreferenz besteht wegen der SQL-Clientbibliothek, die sie mitbringt; das Projekt verwendet keinen Mapper.
- Vorteil: Jede Anweisung, die das System absetzt, kann gelesen, erklärt und optimiert werden. Das ist bei einem zwanzig Jahre alten Hauptbuch mit ungewöhnlichen Konventionen sehr wichtig.
- Preis: Die Korrektheit beruht auf Disziplin statt auf einem Framework, weshalb es die im Abschnitt Engineering beschriebene Gate-Suite gibt.
Frontend. Reines HTML und CSS mit rund einem Dutzend kleiner Vanilla-JavaScript-Module und ohne Bundler.
- Ein Token-Stylesheet definiert Farbpalette, Abstände und Radien; das Anwendungs-Stylesheet baut darauf auf; eine dritte Datei enthält die Breakpoints und färbt nie etwas um.
- Einundzwanzig gemeinsame Razor-Partials dienen als wiederverwendbare Steuerelemente (Pager, Flip-Karte, Drill-Panel, Dokumentbetrachter, Feldeditor, Mandanten-Chip, Rich-Text-Editor und weitere), sodass eine Regel an einer Stelle festgelegt und überall übernommen wird.
- Das Erscheinungsbild ist eine Identität in dunklem Marineblau und Gold mit selbst gehosteter Typografie, Mobile-first über fünf benannte Bildschirmbereiche angelegt, mit jeweils nur einer sichtbaren Navigationsfläche und Touch-Zielen von achtundvierzig Pixeln.
Sprachen und Hintergrundarbeit. Die Oberfläche spricht fünf Sprachen, mit 3.196 Schlüsseln, die sich als ein einziges Bundle gemeinsam bewegen; in der Datenbank gehaltene Namen werden über einen zwischengespeicherten Übersetzer übersetzt, statt neu erfasst zu werden. Vier Hintergrunddienste laufen innerhalb der Anwendung: Erinnerungen, Benachrichtigungen, E-Mail-Triage und der Rechnungs-Scout.
Die Sicherheit folgt derselben konservativen Linie:
- cookiebasierte Authentifizierung, wobei der Mandant als Claims mitgeführt wird;
- mit PBKDF2-SHA256 und 210.000 Iterationen gehashte Passwörter;
- ratenbegrenzte Anmeldung und Sitzungen, die nach zwei Stunden ablaufen;
- jedes Geheimnis in einer Systemumgebungsvariablen, niemals in einer vom Webserver ausgelieferten Datei;
- Bereinigung von nicht vertrauenswürdigem HTML überall, wo es gerendert wird;
- per Regel schreibgeschützte SQL-Diagnosen gegen produktive Kataloge.