PWA – Aplikacje desktopowe w dzisiejszych czasach nie mają za bardzo racji bytu i chyba nikogo do tego nie trzeba przekonywać. „Klasyczne” aplikacje Webowe, są trochę nie właściwe dla firm, które nie posiadają własnego IT (system kierowany do MŚP). Trudno sobie wyobrazić, że pani stojąca za ladą wystawiała paragon za pośrednictwem przeglądarki (klient czekający na taki paragon chyba by się rozmyślił i wyszedł ze sklepu bez swoich zakupów ;)). Odpowiedzią na to może tu być właśnie PWA.
RESTFull – To poniekąd konsekwencja PWA.
DDD – Pozwala skupić wysiłki na realizacji biznesu a nie na infrastrukturze systemu, jednocześnie dając możliwość (stosunkowo) szybkiego wprowadzania zmian i poprawek. Choć oczywiście nie jest to za darmo.
BDD – Trudno określić w sposób zero-jedynkowy wynik poszczególnych testów w systemie do ogólnego przeznaczenia, bo przecież nie wiemy jaki będzie biznes użytkownika systemu. Dlatego właśnie podejście BDD świetnie się tu sprawdzi. Pozwala określić poprawność funkcjonowania systemu w ramach danego scenariusza, w obrębie zdefiniowanych założeń i wywoływanych zdarzeń. Słynne: Give… When… Then….
Angular 5+ - Wybierając framework Front-Endu, miałem do dyspozycji tak naprawdę 3: Vue, React i Angular. Pozostałe frameworki są tak daleko w tyle (chociażby pod względem popularności), że nie ma sensu ich rozpatrywać. Dodatkowo, zależało mi, żeby był to framework wysokiego poziomu, w którym łatwo dałoby się zapanować nad kodem. Vue – za dobrze nie znam, więc odpuściłem sobie. Co prawda zyskuje mocno na popularności ale nie znam żadnego komercyjnego projektu (aplikacji biznesowej), gdzie Vue by się sprawdził. React – nie jest frameworkiem :), ponadto, miesza HTMLa z JavaScriptem, przez co użycie tych samych templatek HTMLowy wraz z inną logiką jest problematyczne (code reuse). Ponadto, do zaimplementowanie kompletnego rozwiązania bogatego UX (bo mówimy przecież o PWA) wymaga dodatkowych pluginów, utrzymywanych przez różne społeczności i różne problemy z tym związane. Angular – cóż innego mi pozostało ;). Kompletny framework dostarczany ze wszystkim co tylko możliwe, dzięki czemu nie potrzebujemy niczego więcej. Wszystkie odpowiedzialności są od siebie odseparowane (nie tylko logicznie ale również fizycznie – inny plik z HTMLem, inny plik z TypeScriptem, inny z CSSem). Całość składana w runtime z wykorzystaniem wstrzyknięć zależności, którymi możemy dowolnie manipulować. Oczywiście ma on swoje wady: wysoki próg wejścia, większa objętość kodu. Ale ma on również zaletę, z którą ciężko dyskutować: wymusza porządek w kodzie.
Angular Material – Skoro mowa o aplikacji PWA, to musi ona wyglądać jak desktopowa, stąd ukłon w stronę Material – chyba już wszyscy wiodący dostawcy systemów pogodzili się z ujednoliceniem ich interfejsów do jednego wyglądu. A jak Material i Angular, to Angular Material.
.NET Core – Jak każda aplikacja Internetowa, tak i ta musi być gdzieś hostowana. Trudno przewidzieć dzisiaj, jak będzie wyglądać rynek VPSów czy CloudApp (zwłaszcza pod względem cenowym) za lat kilka. Dlatego Back-End powinien być wykonany w sposób „przenoszalny”. .NET Core już dzisiaj może być uruchamiany na Windowsie, Lunxie, czy iOSie. Wiec jak najbardziej spełnia te wymagania. Oczywiście można by powiedzieć, że są też inne technologie, które to umożliwiają: Java, Node.js, itd.. Jednakże, mają też swoje wady, których wydaje się nie posiadać .NET Core. Java wymaga wirtualnej maszyny, więc ma większy narzut na zasoby (przynajmniej teoretycznie, bo to też zależy od przypadku użycia). Node.js, chyba jeszcze nie do końca dorósł, być odpowiedzialnym za Back-End w złożonym systemie biznesowym.
SQL Server – Skoro już idziemy w rozwiązania MS, to po całości. Działa na Windowsie, Linuxie, a więc wraz z serwisem Back-Endu możemy przenosić także jego bazę danych. Problemem może być tutaj jego cena, ale wersja Express wydaje się zaspokoić potrzeby systemu ;).
Oczywiście, to jest tylko propozycja systemu i jego stacku. Jaki kształt ostatecznie będzie miał system, zależy od jego twórców i siły ich argumentów, a nie od pobożnych życzeń jednej osoby. Na wynik, zawsze pracuje zespół!