03 · Architektúra
Jedna aplikácia, štyri vrstvy.
Opis platformy
Architektúra platformy
NOVERA je jedna aplikácia ASP.NET Core 8 postavená na Razor Pages, nasadzovaná ako jedno zostavenie (assembly), a vo svojom základe je jednoduchá. Približne 320 súborov C# a Razor obsahuje asi 182 000 riadkov aplikačného kódu, ktorý podporuje 82 služieb a zhruba 22 000 riadkov štýlov.
Dve voľby určujú všetko ostatné.
- Projekt obsahuje práve jeden odkaz na balík a žiadny nový balík nemožno pridať.
- V celom riešení nie je žiadny objektovo-relačný mapovač, žiadny front-endový framework ani žiadny krok zostavenia.
Prístup k dátam. Všetko SQL je písané ručne, v doslovných interpolovaných reťazcoch s typovými, viazanými parametrami vo všetkých prípadoch. Jediný odkaz na balík existuje kvôli klientskej knižnici SQL, ktorú prináša; projekt nepoužíva žiadny mapovač.
- Výhoda: každý príkaz, ktorý systém vykoná, sa dá prečítať, vysvetliť a vyladiť. Pri dvadsať rokov starej hlavnej knihe s nezvyčajnými konvenciami je to veľmi dôležité.
- Cena: správnosť stojí na disciplíne namiesto frameworku, a preto existuje sada kontrolných brán opísaná v časti Vývoj.
Front-end. Čisté HTML a CSS s asi tuctom malých modulov v čistom JavaScripte a bez bundlera.
- Súbor tokenových štýlov definuje paletu, rozostupy a zaoblenia; aplikačný súbor štýlov na ňom stavia; tretí súbor obsahuje body zlomu a nikdy nič neprefarbuje.
- Dvadsaťjeden zdieľaných čiastkových zobrazení (partials) Razor slúži ako opakovane použiteľné ovládacie prvky (stránkovanie, otočná karta, panel s detailom, prehliadač dokumentov, editor polí, štítok subjektu, editor formátovaného textu a ďalšie), takže pravidlo sa nastaví na jednom mieste a všade sa zdedí.
- Vzhľad tvorí tmavomodrá a zlatá identita s typografiou hostovanou na vlastnom serveri, rozvrhnutá mobile-first do piatich pomenovaných pásiem obrazovky, s jedným navigačným prvkom viditeľným naraz a dotykovými cieľmi s veľkosťou štyridsaťosem pixelov.
Jazyky a práca na pozadí. Rozhranie hovorí piatimi jazykmi s 3 196 kľúčmi, ktoré sa menia spoločne ako jeden balík; názvy uložené v databáze sa prekladajú prostredníctvom prekladača s vyrovnávacou pamäťou namiesto opätovného zadávania kľúčov. V aplikácii bežia štyri služby na pozadí: pripomienky, notifikácie, triedenie e-mailov a vyhľadávač faktúr.
Bezpečnosť sleduje rovnakú konzervatívnu líniu:
- autentifikácia založená na cookies, pričom subjekt sa prenáša ako nároky (claims);
- heslá hašované algoritmom PBKDF2-SHA256 s 210 000 iteráciami;
- prihlasovanie s obmedzenou frekvenciou a relácie, ktoré vypršia po dvoch hodinách;
- každé tajomstvo v systémovej premennej prostredia, nikdy v súbore poskytovanom webovým serverom;
- nedôveryhodné HTML sanitizované všade, kde sa vykresľuje;
- všetka diagnostika SQL spúšťaná nad produkčnými katalógmi je podľa pravidla iba na čítanie.