03 · Architektura
Jedna aplikacja, cztery warstwy.
Opis platformy
Architektura platformy
NOVERA to jedna aplikacja ASP.NET Core 8 zbudowana na Razor Pages, wdrażana jako pojedynczy zestaw (assembly), a jej wnętrze jest proste. Około 320 plików C# i Razor zawiera mniej więcej 182 000 wierszy kodu aplikacji, uzupełnionych przez 82 usługi i około 22 000 wierszy arkuszy stylów.
Dwa wybory kształtują wszystko inne.
- Projekt zawiera dokładnie jedno odwołanie do pakietu i nie wolno dodać żadnego nowego pakietu.
- W całym rozwiązaniu nie ma mapowania obiektowo-relacyjnego, frameworka front-endowego ani etapu budowania.
Dostęp do danych. Cały SQL jest pisany ręcznie, w dosłownych ciągach interpolowanych, z typowanymi, wiązanymi parametrami w każdym miejscu. Jedyne odwołanie do pakietu istnieje ze względu na dołączoną do niego bibliotekę klienta SQL; projekt nie używa mappera.
- Korzyść: każde polecenie wydawane przez system można przeczytać, wyjaśnić i dostroić. Ma to ogromne znaczenie wobec dwudziestoletniej księgi o nietypowych konwencjach.
- Koszt: poprawność opiera się na dyscyplinie zamiast na frameworku i dlatego istnieje zestaw bramek opisany w części Inżynieria.
Front-end. Zwykły HTML i CSS z kilkunastoma niewielkimi modułami w czystym JavaScripcie, bez bundlera.
- Arkusz tokenów definiuje paletę barw, odstępy i promienie zaokrągleń; arkusz stylów aplikacji jest na nim zbudowany; trzeci plik zawiera punkty przełamania i nigdy niczego nie przekolorowuje.
- Dwadzieścia jeden wspólnych częściowych widoków Razor pełni rolę kontrolek wielokrotnego użytku (stronicowanie, karta odwracana, panel szczegółów, przeglądarka dokumentów, edytor pól, znacznik podmiotu, edytor tekstu sformatowanego i inne), dzięki czemu reguła jest ustalona w jednym miejscu i dziedziczona wszędzie.
- Szata graficzna opiera się na ciemnym granacie i złocie z krojami pisma hostowanymi na własnym serwerze, a układ jest projektowany od urządzeń mobilnych w górę w pięciu nazwanych przedziałach szerokości ekranu, z jedną powierzchnią nawigacji widoczną w danym momencie i polami dotyku o wielkości czterdziestu ośmiu pikseli.
Języki i praca w tle. Interfejs jest dostępny w pięciu językach, z 3196 kluczami zmieniającymi się razem jako jeden pakiet; nazwy przechowywane w bazie danych są tłumaczone przez tłumacza z pamięcią podręczną zamiast ponownego wprowadzania. Wewnątrz aplikacji działają cztery usługi w tle: przypomnienia, powiadomienia, segregacja poczty e-mail oraz wyszukiwanie faktur.
Bezpieczeństwo podąża tą samą zachowawczą linią:
- uwierzytelnianie oparte na plikach cookie, z podmiotem przenoszonym w oświadczeniach (claims);
- hasła przechowywane jako skróty PBKDF2-SHA256 obliczane przy 210 000 iteracji;
- logowanie z ograniczeniem częstotliwości i sesje wygasające po dwóch godzinach;
- każdy sekret w systemowej zmiennej środowiskowej, nigdy w pliku udostępnianym przez serwer WWW;
- niezaufany HTML oczyszczany wszędzie, gdzie jest renderowany;
- cała diagnostyka SQL uruchamiana na katalogach produkcyjnych z zasady wyłącznie do odczytu.