lineblur
blog
Blazor
facebooklinkedintwitterShare

Czy Blazor zrobi rewolucję w frameworkach typu SPA?

Kiedy podchodzimy do tworzenia aplikacji – nie ważne czy jest to mały projekt, czy też bardziej rozbudowany – zdajemy sobie sprawę, że musimy zaangażować do tego większą liczbę osób: dwa zespoły developerów, z których jedni zajmują się frontendem, a drudzy backendem. Oczywiście możemy zaangażować full stack developerów, którzy znają obie technologie, jednak doświadczenie pokazuje nam, że nowe produkty wymagają dwóch zespołów. Do tego dochodzi jeszcze kwestia stosowanych kilku osobnych technologii – bo w końcu oba systemy trzeba zgrać ze sobą. Nietrudno domyślić się, że im więcej ludzi jest w projekcie, tym trudniej choćby o komunikację i znalezienie porozumienia co do drogi, którą pójdziemy przy rozwijaniu naszej aplikacji. 

Microsoft proponuje nam swoją odpowiedź na powyższe wyzwania: Blazor. Jest to dość nowa technologia MS rozwijana od 2018 roku. Już w fazie eksperymentalnej wzbudził niemałe zainteresowanie – w końcu pozwala tworzyć frontend z wykorzystaniem C#/.NET, zamiast mniej lubianego w niektórych kręgach JavaScript/TypeScript.

Droga do Blazora

Jeżeli pracowaliście z rozwiązaniami MS, to na pewnym etapie musieliście spotkać się z WebFormsami (które obecnie nie są już wspierane) lub mieliście do czynienia z dalej popularnym MVC. Nie da się ukryć, że technologie jak ta przysparzają bolączek – głównie po stronie frontendu – więc zaczęto szukać rozwiązań, które pozwoliłyby je wyeliminować. Mocniej skupiono się na JavaScript/TypeScript – popularność tego języka otworzyła przed nami wiele nowych drzwi, za którymi mogliśmy znaleźć możliwości znacznie rozszerzające i ułatwiające interakcje z użytkownikiem. Znamy takie SPA (Single Page Application) jak Angular lub React, które bardzo często są pierwszym wyborem podczas tworzenia systemu z wykorzystaniem frontendu. Microsoft wprowadzając Blazor również chce na tym skorzystać i ugryźć swój kawałek tortu – osobiście uważam, że ma duży potencjał by to zrobić.

Technologie z uniwersum backendu przedostały się do świata frontendu

No dobrze, ale czym dokładnie jest Blazor? Przede wszystkim jest to platforma do tworzenia interaktywnego internetowego interfejsu użytkownika po stronie klienta, za pomocą platformy .NET. Pozwala na rozwijanie aplikacji w C# zamiast JavaScript – przez co na pewno znajdzie sobie nowych fanów. Daje nam możliwość renderowania interfejsu użytkownika jako kodu HTML i CSS w celu obsługi szerokiej gamy przeglądarek. Tutaj wtrącę, że Blazor jest frameworkiem bazującym na WebAssembly, Server oraz Hybrid. Każdy z nas może wybrać odpowiednią dla siebie wersję, ale to WebAssembly jest najbliższe SPA. I to właśnie ono umożliwia wykonywanie kodu .NET po stronie przeglądarki i tworzenie aplikacji w C#. Na ten moment (maj 2022) standard ten wspierają wszystkie popularne przeglądarki.

Lista przeglądarek wspierających standard WASM

Nowe rozwiązanie od Microsoftu pozwala również na łatwą integrację z nowoczesnymi platformami hostingowymi, takimi jak Platforma Docker, ale również na tworzenie hybrydowych aplikacji klasycznych i mobilnych.

Blazor odpowiedzią na potrzebę optymalizacji

Z osób, które znam i które zajmują się backendem, większość nie lubi zaglądać na front. Style HTML to czarna magia, która poprzez działanie w często nielogiczny sposób, powoduje frustrację – a oliwy do ognia dolewa jeszcze aspekt TypeScript lub JavaScript.  

Gif z serialu Family Guy

Już widzimy, że aby stworzyć nawet mały, ciekawy projekt, potrzebne są dwie osoby albo jeden wybitny full stack. W tym ostatnim przypadku sytuacja również nie wygląda kolorowo, kiedy pomyślimy, że jedna osoba zobligowana jest do nadążania za dynamicznie rozwijającymi się technologiami, czy symultanicznego stosowania różnych narzędzi i języków – zarówno ze strony backendu, jak i frontendu. 

Blazor - Frontend, Backend czy Full stack

I tutaj pojawia się Microsoft przynosząc ze sobą Blazor jako remedium. Idea tego rozwiązania jest bardzo podobna do MVC – mamy mieszankę kodu HTML z C# (bardzo podobnie wygląda to w Angualrze) i wszystko dzieje się w myśl aplikacji SPA.

Sam zacząłem mocniej interesować się Blazorem i muszę powiedzieć: jestem pozytywnie zaskoczony! Wiedza z obszaru TypeScripta bardzo pomogła mi wdrożyć się w tę technologię i lepiej ją poznać. Osobiście nie czuję się frontem (patrz gif powyżej), ale przy wykorzystaniu gotowych szablonów można stworzyć już naprawdę rozbudowane rzeczy. Dobrym przykładem jest MudBlazor, który choć jest jeszcze dość młody, rozwija się bardzo prężnie (co pokazuje GitHub) i bardzo dobrze rokuje.

Młoda technologia, która zawojuje świat

Blazor posiada niedoskonałości, zresztą jak każda nowa (i stara) technologia, ale w jego przypadku nie są one przeszkodą do tego, aby zacząć tworzyć systemy klasy enterprise. Tym, co głównie przekonuje mnie do tego frameworku jest fakt, że nie potrzebuje on dwóch osobnych technologii do rozwijania aplikacji – a co za tym idzie, dwóch zespołów deweloperów. Niesie to za sobą korzyści nie tylko budżetowe, ale również to, że w Blazora może wdrożyć się każdy, kto ma pojęcie o C#. Co jeszcze? Poza pisaniem kodu w języku C# zamiast w JavaScript, dodatkowym atutem jest na pewno możliwość korzystania z rozbudowanych bibliotek.

Oczywiście z racji tego, że rozwiązanie to jest stosunkowo nowe, musimy pamiętać o jednej ważnej rzeczy: projekty opensource nie są jeszcze tak rozwinięte jak NPM – dlatego środowisko JavaScript jest takie wspaniałe i zawojowało frontendem. Składa się na to niski próg wejścia oraz gigantyczne grono developerów, które tworzy niesamowitą ilość bibliotek dla całego ekosystemu Node.JS. I w tym miejscu warto również podkreślić: projekty opensource są rozwijane niezwykle dynamicznie, czego przykładem jest właśnie MudBlazor.

Na koniec zachęcam Was do spojrzenia na GitHub, który prezentuje szeroki wachlarz przykładów zastosowania tej technologii.