Blog >
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.
Comments
Good comparison. I’m favoring Blazor for my next project.