

Czy nadszedł już czas, aby odsunąć Angulara do przeszłości i jednomyślnie przejść na Blazora? A może Blazor, jako następca Razor, boryka się z tymi samymi problemami, co jego poprzednik? W świetle niedawnej okazji, która pojawiła się w naszej firmie, aby rozpocząć projekt od zera, wykorzystując Blazora, ten artykuł ma na celu zbadanie wniosków zdobytych podczas tego procesu.
Ponadto, podejmiemy próbę uchwycenia obecnego stanu tego frameworka i porównamy jego zalety i wady do już wspomnianego Angulara. Czy nadszedł już czas, aby rozważyć zmianę głównego frameworka front-endowego w naszej firmie? A może nawet w Twojej?
Blazor to innowacyjny i potężny framework webowy, który wzbudza duże zainteresowanie w świecie tworzenia stron internetowych. Ale czym dokładnie jest i dlaczego powinieneś się nim zainteresować?
Blazor to framework stworzony przez Microsoft, który umożliwia tworzenie interaktywnych i dynamicznych aplikacji internetowych za pomocą języka C# i platformy .NET, zamiast tradycyjnych technologii webowych, takich jak JavaScript. To, co wyróżnia Blazora, to jego zdolność do uruchamiania kodu C# bezpośrednio w przeglądarce za pomocą WebAssembly lub na serwerze, co daje ci elastyczność wyboru modelu hostowania najlepiej odpowiadającego twojemu projektowi.
Dlaczego więc warto rozważyć prace w Blazorze?
W istocie, Blazor to przełom w tworzeniu aplikacji internetowych, oferujący nowe spojrzenie na sposób ich budowania. Bez względu na to, czy jesteś doświadczonym programistą .NET, czy chcesz poszerzyć swoje umiejętności, eksplorowanie Blazora to wartościowe przedsięwzięcie, które może otworzyć fascynujące możliwości w Twojej podróży rozwoju webowego.
Zanim zanurkujemy w świat Blazora, pozwól mi przedstawić moje doświadczenie i tło. Podchodzę do tego jako programista pełnego stosu technologicznego, skupiając się głównie na .NET i mając wcześniejsze doświadczenie z Angularzem, oraz krótki kontakt z Razor.
Moje pierwsze spotkanie z tą technologią rozpoczęło się od poszukiwania i uczestnictwa w odpowiednim kursie na platformie Pluralsight. Pozwoliło mi to uzyskać wstępne zrozumienie podstaw i koncepcji pisania kodu frontendowego w tym frameworku, bez zagłębiania się w suchą dokumentację.
Szybko stało się jasne, że Blazor i Angular miały dość wiele wspólnego, co znacznie ułatwiło mi pracę nad moim pierwszym projektem, wykorzystując tę technologię. Plan był prosty: stworzyć projekt podstawowej usługi internetowej z standardowymi funkcjami, takimi jak rejestracja, logowanie, tłumaczenia i wiele innych.
Celem tego projektu było poznanie podstaw, tworząc jednocześnie coś, co w przyszłości mogłoby służyć jako fundament dla bardziej spersonalizowanych i skomplikowanych przedsięwzięć. W ten sposób mogłem budować na bazie pracy wyłożonej przez ten początkowy projekt, rozwijając bardziej dostosowane i złożone aplikacje w przyszłości. Nadszedł więc czas, aby rozpocząć tworzenie architektury. Pierwszą kluczową decyzją, jaką musiałem podjąć, było to, jak chciałem hostować moją aplikację, ponieważ Blazor oferuje trzy różne metody: Server, WebAssembly i Hybrid. Każde podejście ma swoje własne zalety i wady, dlatego ważne jest wybranie tego, które najlepiej pasuje do konkretnych wymagań projektu.
Server Hosting:
Zalety:
Wady:
WebAssembly Hosting:
Zalety:
Wady:
Hybrid Hosting:
Zalety:
Wady:
Podsumowując, wybór hostingu dla twojej aplikacji Blazor powinien być kierowany potrzebami projektu. Hostowanie na serwerze wyróżnia się w komunikacji w czasie rzeczywistym, ale może napotykać na wyzwania związane ze skalowalnością. Hostowanie WebAssembly oferuje wykonywanie po stronie klienta i możliwości offline, ale może mieć dłuższy czas początkowego ładowania. Hostowanie hybrydowe zapewnia elastyczność, ale wymaga starannego planowania architektury. Zrozumienie kompromisów i dostosowanie wyboru do celów projektu stanowi klucz do udanej implementacji aplikacji Blazor.
Po kilku krótkich konsultacjach podjąłem decyzję, aby hostować Blazor (serwer) na froncie w ramach API .NetCore. Ten wybór niesie ze sobą kilka wyraźnych zalet, jak wcześniej opisano, i upraszcza zarządzanie projektem, konsolidując wszystko w jednym rozwiązaniu hostowanym na jednym usłudze Azure App Service.
Faza tworzenia architektury przebiegła gładko. Szybko złożyłem front-end, korzystając z przyjaznego dla użytkownika kreatora, a skonfigurowanie połączenia między front-endem a API, aby zapewnić płynne wyświetlanie po uruchomieniu projektu API, było dziecinnie proste i wymagało tylko kilku dodatkowych linii kodu tu i ówdzie.
Ta bezproblemowa integracja ilustruje łatwość i efektywność pracy z tą architekturą, przygotowując grunt pod kolejne fazy rozwoju z pewnością i ekscytacją.
Mając gotowy projekt, czas zagłębić się w podejście Blazor do definiowania widoków. Moim zdaniem to podejście znajduje równowagę między Razor a Angular. Mamy część HTML (.razor), w której definiujemy wygląd strony, używając zwykłego HTML lub, jak w moim przypadku, wykorzystując zewnętrzną bibliotekę komponentów (Radzen). Ta część pozwala również na pisanie logiki, ale moim zdaniem może to nie być najwygodniejsze ani czytelne podejście. Alternatywą jest przeniesienie logiki do osobnego pliku (.radzen.cs), gdzie możemy wygodnie pisać kod C#, więc właśnie to zrobiłem.
Chociaż nigdy wcześniej nie pisałem w Blazorze, szybko odnalazłem się w tym frameworku. Dwa proste pola wejściowe, przycisk i wstrzyknięty serwis do żądań API, i część front-endu logowania była gotowa. To właśnie to lubię najbardziej w tej technologii. Mając pojęcie, jak coś zrobić w Angularze, bardzo łatwo jest to zrobić także tutaj.
Dalej wszystko poszło sprawnie - szybko skonfigurowałem responsywne menu dla łatwej nawigacji między stronami, zaimplementowałem rejestrację użytkownika z obsługą zasad (korzystając z Microsoft.AspNetCore.Authorization), oraz oczywiście zarządzanie tokenami JWT (JSON Web Tokens). Znalazłem wielką pomoc w wbudowanym ILocalStorageService (Blazored.LocalStorage), który działa bardzo podobnie do lokalnego składowania w Angularze.
Jedynym głównym wyzwaniem, z którym się zetknąłem, było wdrożenie obsługi wielojęzyczności interfejsu. Chciałem, aby był on dynamiczny i możliwy do edycji bezpośrednio w aplikacji, co oznaczało, że standardowe rozwiązania oparte na plikach zasobów w API nie spełniały moich wymagań. Tutaj, niestety, napotkałem główną wadę Blazora - to stosunkowo nowa technologia. Kiedy chcesz zrobić coś nietypowego, istnieje dobra szansa, że nie ma tysięcy pytań na Stack Overflow dotyczących dokładnie tego, czego chcesz osiągnąć, i musisz samodzielnie to rozwiązać. Pod tym względem dojrzałość Angulara i szerokie wsparcie społeczności rzeczywiście przemawiają na jego korzyść.
Ostatecznie musiałem zbudować funkcjonalność wielojęzyczną od podstaw, podobną do Angularowego ngx-translate, tworząc dynamicznie pliki JSON z tłumaczeniami na podstawie danych z bazy danych.
Setting aside smaller functionalities like user,language and translation management, that's where my journey with Blazor came to an end.
What are my conclusions? Well, Blazor is certainly an intriguing technology, and with time and an increasing user base, it will become more accessible, especially if you already have experience with Angular or Razor.
Tutaj chciałbym przedstawić kilka zalet i wad obu technologii.
Blazor:
Zalety:
Wady:
Angular:
Zalety:
Wady:
Podsumowując, zarówno Blazor, jak i Angular mają swoje mocne i słabe strony. Wybór między nimi zależy od konkretnych wymagań projektu, umiejętności zespołu i preferencji programistycznych.
Podsumowując, Blazor i Angular to dwa potężne frameworki do tworzenia stron internetowych, z których każdy ma swój własny zestaw zalet i wad. Blazor, dzięki integracji z .NET, oferuje znajomość programistów .NET, architekturę opartą na komponentach i elastyczność uruchamiania kodu na serwerze lub w przeglądarce. Z drugiej strony, Angular może pochwalić się dojrzałym ekosystemem, solidnymi funkcjami, silną obsługą TypeScript i skalowalnością dla dużych aplikacji.
Wybór między Blazor i Angular ostatecznie zależy od konkretnych wymagań projektu i znajomości technologii przez zespół. Niezależnie od tego, czy zdecydujesz się na innowacyjność Blazor, czy na ugruntowane możliwości Angular, oba frameworki mają potencjał, aby pomóc Ci tworzyć wyjątkowe aplikacje internetowe.
Ponieważ krajobraz tworzenia stron internetowych wciąż ewoluuje, bycie na bieżąco z tymi frameworkami jest niezbędne do podejmowania świadomych decyzji, które będą kształtować przyszłość twoich projektów.
Blazor to framework firmy Microsoft, który umożliwia programistom tworzenie interaktywnych aplikacji internetowych w języku C# i .NET zamiast JavaScript. Przyciąga uwagę, ponieważ pozwala zespołom .NET używać jednego języka w backendzie i frontendzie, co upraszcza przepływ pracy, ogranicza konieczność przełączania się między kontekstami i przyspiesza proces tworzenia oprogramowania. Dla firm, które już zainwestowały w technologie Microsoft, jest to naturalne rozszerzenie ich stosu technologicznego.
Blazor płynnie integruje się z ekosystemem .NET i jest łatwiejszy do opanowania dla programistów znających język C#, ale jest to wciąż młoda technologia, która ma mniej bibliotek i zasobów społecznościowych. Z drugiej strony Angular ma dojrzały ekosystem, obszerną dokumentację i silne wsparcie dla tworzenia złożonych aplikacji na dużą skalę, choć wymaga opanowania języka TypeScript i wiąże się z większym nakładem pracy związanym z nauką.
Aplikacje Blazor mogą działać na serwerze, w przeglądarce za pośrednictwem WebAssembly lub w modelu hybrydowym. Hosting serwerowy zapewnia szybkie uruchamianie, ale w dużym stopniu zależy od stałego połączenia z serwerem. WebAssembly umożliwia korzystanie z aplikacji w trybie offline i wykonywanie jej po stronie klienta, ale ładuje się wolniej. Model hybrydowy łączy obie te opcje i umożliwia tworzenie aplikacji wieloplatformowych, ale zwiększa złożoność procesu programowania.
Głównym wyzwaniem jest to, że Blazor jest wciąż stosunkowo nowym rozwiązaniem. W porównaniu z Angularem ma mniej gotowych rozwiązań i mniejsze wsparcie społeczności, co często oznacza więcej czasu poświęconego na samodzielne rozwiązywanie problemów. Problemem może być również wydajność w WebAssembly, która wiąże się z dłuższym czasem początkowego ładowania.
Blazor doskonale sprawdza się w zespołach, które mają już duże doświadczenie w pracy z platformą .NET i językiem C#. Pozwala im pozostać w ramach jednego stosu technologicznego, unikając konieczności nauki JavaScript lub TypeScript. Jest to szczególnie przydatne dla firm korzystających z narzędzi Microsoft i pragnących ujednolicić proces tworzenia oprogramowania backendowego i frontendowego.
Komentarze
Good comparison. I’m favoring Blazor for my next project.