Blazor w komercyjnych projektach

3

Ostatnio zastanawiałem się, jak wygląda obecnie Blazor w postaci produkcyjnej (nie na zasadzie pisania projektu do szuflady, ale takiego, którego rzeczywiście sporo użytkowników używa) i mam do Was takie pytania:
Czy używacie Blazora w swoich komercyjnych projektach w pracy? I jeżeli tak, to jak Wasze wrażenia? Jak wydajność? Jakie największe problemy do tej pory napotkaliście?

3

Zrobiłem kiedyś trzy podejścia (Win Forms, .NET Core API + Angular, .NET Core API + Blazor WASM) do stworzenia jednej aplikacji używanej obecnie komercyjnie, ale raczej małej i bardziej rozpatrywanej w kategoriach hobbystycznej i powiem, że do klepania biznesowych CRUDów Blazor jest moim zdaniem najprzyjemniejszy, a wersja server-side, gdzie pomija się jako takie RESTowe API to już w ogóle jest miód. Z minusów to przy używaniu MudBlazor czasami brakuje pewnych komponentów, ale to bardziej kwestia zaczęcia pisania własnych oraz pojawiają się problemy z wydajnością np. przy renderowaniu tabelki z dużą liczbą komponentów (chyba wina MudBlazor, bo jest to zgłoszone jako issue na githubie).

1

Rozwijam ciągle 2 projekty, w 2 różnych firmach oparte na Blazorze server-side. W jednej max 3-5 użytkowników jednocześnie, ale praca na większych wolumenach danych, postawiony na windowsie - działa płynnie. W drugiej firmie do 20-30 użytkowników jednocześnie, sporo drobnych funkcji, postawiony na linuxie i również bez problemu.
W zasadzie nie używam komponentów nie stworzonych przeze mnie - to jest jednocześnie plus i minus - trzeba dużo się narobić, ale za to nie mam problemów z dużymi tabelkami, o których pisał @baroo (hasło Virtualize).
Większych minusów nie zauważyłem, poza tą pracochłonnością przy tworzeniu wszystkich komponentów samemu.

2

Używam Blazor zarówno do drobniejszych projektów na własną rękę (ale nadal produkcyjnych), jak i u mnie w pracy. Co prawda ze względu na naturę mojej pracy nie piszę już w Blazor na co dzień, ale była to technologia którą wprowadziliśmy w nowym projekcie na krótko po wejściu produkcyjnej wersji Blazor WebAssembly. Ogólnie jest to bardzo fajna technologia która lubię, a i zespół pracujący w tym na co dzień sobie chwali i powtarza że warto by to wdrożyć w innych projektach.

Jak ze wszystkim tak i w tym przypadku są jakieś minusy. Z tych co dobrze pamiętam, to początkowo mieliśmy problemy z kompresją plików (i tu kolejny minus- cała aplikacja Blazor nadal będzie ważyć więcej od odpowiedników napisanych w innych technologiach, ale ta różnica z każdą wersją jest coraz mniejsza). Poza tym- coś całkowicie subiektywnego- to ze względu na stosunkową świeżość tej technologii jest mniej rekomendacji i praktyk powszechnie uznawanych w branży za dobre, łatwiej o napisanie chaotycznego kodu jeśli nie jest się ostrożnym itp. Co po części z tym związane, to sama obsługa stanu, odświeżania komponentów i eventów potrafi czasem doprowadzić do problemów. Albo stan się nie aktualizuje tam gdzie powinien i trzeba dojść do tego co jest nie tak, albo na odwrót- komponent renderuje się kilkukrotnie, spowalniając responsywność. Oczywiście w większości przypadków gdzie stosuje się "natywny" binding te problemy nie występują, ale w bardziej zaawansowanych przypadkach gdzie trzeba samemu wywołać odświeżenie stanu już nie jest tak kolorowo. A z własnego doświadczenia mogę powiedzieć że w Blazor jednak najłatwiej sobie samemu namieszać (w porównaniu z React, Vue czy Svelte).

Poza w/w minusami (i innymi o których zapomniałem), to nadal uważam że Blazor to świetna technologia i więcej ułatwia niż utrudnia. Uważam jednak że zdecydowanie lepiej iść w WASM, a server-side traktować jako ciekawostkę. Na pierwszy rzut oka server-side może wydawać się super, ale są w nim pewne niuanse które potrafią być bardzo problematyczne- np. sam fakt obsługi każdego eventu zdalnie poprzez websockets (i co za tym idzie stanowości sesji użytkownika), problemy z globalną obsługą błędów czy większa możliwość błędu ludzkiego i wprowadzenia luk bezpieczeństwa spowodowana zacierającą się linią między tym co wykonuje się po stronie klienta, a co po stronie serwera.

1 użytkowników online, w tym zalogowanych: 0, gości: 1