Co Blazor oznacza dla twórców aplikacji i firm?
Teraz, mając pewną wiedzę na temat tego, czym jest Blazor z poprzednich artykułów: część I i część II, możemy przyjrzeć się, co to oznacza zarówno dla firm, jak i programistów.
Wyjaśnijmy jedną rzecz od początku. Blazor nie został wprowadzony w celu zastąpienia wszystkich innych frameworków internetowych. Jak każda konkurencja na rynku, nowi gracze zmuszają wszystkich do rozwoju i postępu technologicznego. To dobra rzecz. Rozmowa nie dotyczy więc tego, który framework jest najlepszy, ale raczej tego, który jest najlepszy dla danego środowiska i rozwiązania danego problemu. Ja, jako że jestem sobą, mogę jednak opowiedzieć się za Blazorem.
Wszystko zależy od perspektywy
Podejmując jakąkolwiek decyzję dotyczącą kwestii technicznych związanych z tworzeniem oprogramowania, zawsze należy rozważyć wady i zalety kolejnego kroku. W zależności od tego, na jakim etapie życia jesteś, wybory te mogą być drastycznie różne, nawet jeśli sprowadzają się do tego samego problemu. Różne potrzeby, różne perspektywy.
Nie inaczej jest w zwinnym środowisku rozwoju oprogramowania. Ludzie biznesu i programiści dążą do tego samego celu, ale często nie widzą się w oczy. Jeden jest empiryczny, drugi - techniczny. Wszystko sprowadza się do zrozumienia obu perspektyw.
Nawiasem mówiąc, niedawno mój kumpel Sebastian opublikował artykuł "Jak współpracować z programistami? Wskazówki biznesowe z życia wzięte, które usprawnią współpracę" na naszym blogu. Podkreśla on wyzwania i środki zaradcze we współpracy między firmami a programistami. Są to praktyczne punkty, które mogą poprawić przepływ pracy, więc nie zapomnij tego sprawdzić.
Teraz przychodzimy, ze skalą plusów i plusów (tak, to prawda) rozwoju Blazor już przygotowaną dla Ciebie. Jak zwykle, wszystko sprowadza się do perspektywy. Potraktuj je jako wskazówki i dostosuj do swoich przypadków użycia.
Z perspektywy biznesowej
Czas, w którym .NET był optymalny i dostępny tylko w backend minął. Blazor pozwala każdemu programiście .NET stać się kompleksowym dostawcą produktów. Ta szeroko rozpowszechniona integracja oznacza szybki wzrost nie tylko nowej technologii, ale także jakości produktów, które może ona wspierać.
Możliwość napisania całej aplikacji w jednym stosie kodu znacznie zmniejsza jej złożoność. Dotyczy to nie tylko samej bazy kodu, ale także wymaganej infrastruktury. To z kolei obniża koszty utrzymania i wdrażania. Dzięki krótszemu cyklowi rozwoju zespoły szybciej osiągają etapy aplikacji. Oznacza to bardziej wydajne i przewidywalne dostawy projektów, dzięki czemu Ty jako firma możesz skupić się na potrzebach klienta, a nie na niedotrzymanym terminie.
Bez względu na to, czy masz już zespół programistów .NET, czy chcesz go zlecić na zewnątrz, wybór Blazor dla Twojego rozwiązania pozytywnie wpłynie na ich wydajność. Tarcia komunikacyjne będą ograniczone, ponieważ zarówno zespoły backendowe, jak i frontendowe posługują się tym samym językiem kodowania i przestrzegają wspólnych zasad. Integracja między tymi częściami powinna być niemal bezproblemowa.
I tu jest punkt do zawarcia umowy. Blazor jest czymś więcej niż frameworkiem webowym. Jego komponenty (podstawowa jednostka programistyczna) są całkowicie niezależne od środowiska hostingowego. Oznacza to, że można przejść od posiadania tylko aplikacji internetowej do oferowania natywnej wersji mobilnej lub nawet rozwiązania IoT w dowolnym momencie. Co więcej - we wszystkich tych środowiskach aplikacja będzie wyglądać i zachowywać się tak samo, zapewniając takie same wrażenia wszystkim użytkownikom, niezależnie od platformy.
Należy jednak pamiętać, że Blazor jest dość młodą technologią. Nawet przy szybko rosnącej społeczności i szerokiej adopcji, wyzwaniem jest znalezienie ekspertów, którzy mogą wesprzeć twoją wizję i dostarczyć produkt dobrej jakości. Bezwstydnie podłączę tutaj #Inspeeriteam. Dlaczego nie przeanalizujemy twojego problemu i wspólnie nie znajdziemy drogi do jego rozwiązania? Zwłaszcza z Blazor.
Z perspektywy programisty (.NET)
Gdziekolwiek szukasz informacji o Blazorze, pierwszą rzeczą, o której się wspomina, jest to, że jest to lekarstwo na TypeScript lub JavaScript. I w większości przypadków jest to prawda. Możesz napisać kod C# obok kodu HTML i uczynić go interaktywnym. W innych przypadkach można prawdopodobnie znaleźć i dostosować istniejące rozszerzenia IJSRuntime na GitHub i nadal unikać bezpośredniej pracy z plikami skryptów.
Co więcej, głównym założeniem Blazora jest komponentyzacja. Komponenty to po prostu klasy na sterydach, gdzie sterydami są znaczniki HTML i CSS. Klasy te można przenieść do dowolnego rozwiązania, w którym są potrzebne. Kiedy w końcu zbudujesz swoją bibliotekę, sprowadzi się to do implementacji logiki backendu i stworzenia układanki z komponentów, które już posiadasz.
W jaki sposób odbywa się interaktywność? Oczywiście w najprostszy sposób. Ilekroć symbol @ jest używany w znacznikach HTML, nie jest to już znacznik, ale kod C#. Dzięki temu użycie parametru @bind wiąże wartość elementu UI z typem danych C#. Co więcej, @bind:event pozwala określić, kiedy dokładnie to powiązanie powinno nastąpić. OnClick? OnChange? OnFocus? To wszystko wewnątrz komponentu.
Jak zatem działa komunikacja między różnymi komponentami? Cóż, to zależy od złożoności twojego rozwiązania. Po wyjęciu z pudełka powinieneś po prostu użyć typu parametru o nazwie EventCallback. Umożliwia on delegowanie zachowania do metody przekazanej z komponentu nadrzędnego. W przypadku bardziej złożonych aplikacji portalowych zdecydowanie zalecam implementację wzorca piasty i szprychy, aby uniknąć ścisłego sprzężenia.
Jeśli chodzi o obsługę błędów, zawsze może to być wyzwanie. W .NET 6 komponent został upieczony w samym Blazor, aby rozwiązać to za Ciebie (tak, jeśli rzeczy mają sens, jest on dostępny dla wszystkich). ErrorBoundry nie tylko nasłuchuje wyjątków, ale także przechwytuje je, gdy zostaną rzucone i wyświetla przyjazny dla użytkownika alert, zamiast powodować awarię całej aplikacji. Alerty te są również w pełni konfigurowalne.
Wreszcie - co z testowalnością? Po pierwsze - testowanie kodu ma ogromną wartość, więc powinieneś to wdrożyć. Po drugie - framework testów jednostkowych został zbudowany specjalnie dla Blazor - nazywa się bUnit. Nie wymaga on budowania całego kontekstu aplikacji podczas uruchamiania testów. Działa w trybie testów jednostkowych, jest równie szybki, ale znacznie bardziej sprofilowany do obsługi testowania komponentów.
Prawdopodobnie będziemy mieli osobny artykuł lub kilka, tylko na temat testowania aplikacji Blazor. Jako zwiastun wspomnę jednak, że wprowadza asercję MarkupMatches(). To sprawdza poprawność znaczników wygenerowanych przez komponent - prosta koncepcja. Szalone jest to, że nie dba o klasy CSS ani kolejność znaczników HTML. Tak długo, jak oczekiwane zachowanie i wygląd są spełnione, test przejdzie prawie jak sprawdzenie kontekstu znaczników, a nie porównanie wartości.
Podsumujmy
Jeśli jako firma nadal wahasz się, czy skorzystać z całej tej rzeczy Blazor, gorąco zachęcam do poinformowania nas o tym. Mamy doświadczenie we wdrażaniu klientów w ten pomysł i, co najważniejsze, w dostarczaniu wiarygodnych wyników.
Jeśli jako programista wciąż wahasz się, czy wypróbować frontend development, gorąco polecam, abyś spróbował. Wiele się przy tym nauczysz. Zwiększysz swoją wartość. A na koniec może ci się to nawet spodobać.
Jeśli jako czytelnik bloga chcesz dowiedzieć się więcej o Blazor, jesteś we właściwym miejscu. Nie odchodź. Impreza dopiero się zaczyna.
Przygotuj się na szczegóły techniczne!
Począwszy od następnego postu, będziemy skakać do niektórych technicznych spraw Blazor. Wiem, że zajęło to trochę czasu, ale najpierw potrzebowaliśmy tego wprowadzenia. Ostatnio doceniłem, że podejmowanie dobrych decyzji dotyczących architektury na początku sprawia, że reszta procesu rozwoju jest łatwiejsza. Znalazłem się również w otoczeniu specjalistów od architektury.
Mając to na uwadze, rozpoczniemy część techniczną z punktu widzenia architekta:
- najlepsze praktyki w zakresie strukturyzacji rozwiązań Blazor
- zasady, których należy przestrzegać podczas tworzenia aplikacji Blazor
- utrzymywanie czystej bazy kodu i refaktoryzacja komponentów
Bądź na bieżąco! Bądź na bieżąco! Do zobaczenia wkrótce!