Blazor i Wasze opinie o nim

0

Cześć wszystkim,
Jakiś czas temu dowiedziałem się o Blazor. A już się miałem uczyć JavaScript do swojego stack'a ASP.NET. Używał ktoś tego?
Będę wdzięczny również za polecenie nowoczesnego hostingu Windows, ale żeby nie płacić za dużo. 😁

Pozdrawiam, Dawid.

1

Liznąłem JS, jQuery i Angulara i po zrobieniu jednego krótkiego projekciku w Blazorze nie chcę wracać do niczego java script podobnego.

2

Moim zdaniem Blazor ma szanse zaistnieć u ludzi, którzy już żyją w środowisku .NET. Obawiam się, że ktoś kto korzysta z frameworków JS nie przejdzie na Blazor. Sam robiłem już 3 podejścia i jakoś ciężko mi przejść z Angulara. Mam 4 średniej wielkości projekty w JS (Angular) i jeden mógłbym dla testów przepisać na Blazor, wtedy bym miał solidniejsze zdanie. Z tego co pamiętam to i tak trzeba gdzieś wcisnąć JS, samym Blazorem nie da się w pełni ogarnąć całego projektu 🤔

2

Parę uwag ode mnie do wersji WebAssemby:

Plusy

  • front-end w c# (JS to mniej niż 5% całości kodu jaki napiszesz)
  • obliczenia po stronie klienta
  • szybkie budowanie widoków
  • coraz większa społeczność
  • szybko rozwijany, mniej więcej co miesiąc kolejna wersja preview

Minusy:

  • Jeden wątek do dyspozycji
  • po stronie klienta c# jest intrepetowany do WebAssembly więc wydajność jest kilkanaście-kilkadziesiąt razy mniejsza niż po stronie serwera
  • bardziej złożone kontrolki trzeba pisać samemu ale to się zmienia
  • serializacja/deserializacja w komunikacji z serwerem - w standardzie JSON ale można łatwo zmienić np. na Protobufa
  • jest AoT, który kompiluje c# do wasm ale trwa to bardzo długo i pliki robią się bardzo duże
5

Używam Blazor już od jakiegoś czasu, zarówno prywatnie jak i komercyjnie. Dla kogoś na co dzień operującego w .Net czy po prostu lubiącego C# to zdecydowanie fajna opcja. Oczywiście to nadal bardzo świeża technologia, ma swoje problemy ale zdecydowanie da się w tym działać i czerpać z tego przyjemność. Możliwość pisania warstwy UI w oparciu o HTML i C#, z wykorzystaniem po stronie klienta ekosystemu .Net to super sprawa.

Jednoczenie nie użył bym na dzień dzisiejszy Blazor'a do aplikacji webowych mających działać jak najszybciej już na starcie czy ważyć bardzo mało, a to dla tego że ściągnięcie plików runtime .Net jak i uruchomienie tego zajmuje krótką chwilę. Z tym że to ma znaczenie tylko tam gdzie naprawdę nie możemy sobie pozwolić na żadne spowolnienie (mowa o ułamku sekundy, może sekunda). W większości aplikacji- a szczególnie w aplikacjach biznesowych- to nie ma znaczenia.

1

Blazora dla ludzi z c# jest wart przynajmniej solidnego zainteresowania i ososbistego przetestowania.
Niestety trzeba pisać te CSSy i htmle (nie lubię, bardzo).

0

Dziękuję wszystkim za odpowiedzi. Jeszcze taka sytuacja. Przeglądałem przed chwilą tutorial dot. Blazor i widziałem jak w bloku @code w pliku .razor pojawiały się operacje na bazie danych (np. _context.Products.Add(...);). Jeśli aplikacja Blazor jest po stronie klienta, to chyba nie jest to bezpieczne rozwiązanie? Jak najprościej i bezpiecznie rozwiązać operacje na bazie w Blazor oprócz architektury Client/Server? Będę wdzięczny za pomoc.

3

@AdamWox: oczywiscie ze to moze byc widac jesli cos takiego jest wyslane do przegladarki.

@Dawid Farbaniec zapewne patrzyles na przyklad korzystajacy z Blazor w modelu hostingu server-side. Wtedy kod aplikacji wykonuje sie po stronie serwera (to co jest w sekcji @code { } nie jest wysylane do przegladarki) a eventy takie jak klikniecie przycisku sa wysylane za pomoca polaczenia SignalR do serwera- tam odpowiedni kod sie wykonuje.

Musisz sobie odpowiedziec czy chcesz aby Twoja aplikacja byla oparta o model server side czy WASM- w tym drugim przypadku masz do czynienia z ta "wlasciwa" aplikacja SPA w przegladarce. W tym przypadku nie rozni sie to niczym od innych frameworkow SPA- jakiekolwiek modyfikacje czy odczyt danych musza byc wysylane po HTTP do odpowiednich endpointow. W kodzie UI pod zadnym pozorem nie nalezy trzymac niczego co odpowiadalo by za komunikacje z baza danych, uwierzytelnianie uzytkownika itp.

Tutaj wiecej info na ten temat

1

Tu masz mego małego bloga na temat Blazora https://4programmers.net/Profile/75634/Microblog. Jednak mnie interesuje tylko i wyłączenie wersja server-side

3

@Aventus: to był ten tutorial https://medium.com/streamwriter/saving-basic-data-in-blazor-8b0ea82d1e1e. Rzeczywiście to jest Blazor Server App, zatem kod nie jest client side. Niepotrzebnie spanikowałem. 😄

0

snarky

wystarczy przeczytać 1 stronę (5 minutes to read) dokumentacji Blazora i wszystkie 150 problemów poruszonych w tym wątku nagle by się rozjaśniły

Introduction to ASP.NET Core Blazor

aż zacytuje

Blazor WebAssembly

Blazor WebAssembly is a single-page app (SPA) framework for building interactive client-side web apps with .NET. Blazor WebAssembly uses open web standards without plugins or recompiling code into other languages. Blazor WebAssembly works in all modern web browsers, including mobile browsers.

Running .NET code inside web browsers is made possible by WebAssembly (abbreviated wasm). WebAssembly is a compact bytecode format optimized for fast download and maximum execution speed. WebAssembly is an open web standard and supported in web browsers without plugins.

WebAssembly code can access the full functionality of the browser via JavaScript, called JavaScript interoperability, often shortened to JavaScript interop or JS interop. .NET code executed via WebAssembly in the browser runs in the browser's JavaScript sandbox with the protections that the sandbox provides against malicious actions on the client machine.

screenshot-20210716164351.png

Blazor Server

Blazor decouples component rendering logic from how UI updates are applied. Blazor Server provides support for hosting Razor components on the server in an ASP.NET Core app. UI updates are handled over a SignalR connection.

The runtime stays on the server and handles:

Executing the app's C# code.
Sending UI events from the browser to the server.
Applying UI updates to the rendered component that are sent back by the server.

screenshot-20210716164400.png

JavaScript interop

For apps that require third-party JavaScript libraries and access to browser APIs, components interoperate with JavaScript. Components are capable of using any library or API that JavaScript is able to use. C# code can call into JavaScript code, and JavaScript code can call into C# code.

0

Dla ciekawskich co można zrobić co nie itp. albo co już zostało przepisane na blazor macie tutaj fajną stronkę.

Więc jak ktoś ogarnia trochę tematy to potrafi sobie z klocków poskładać już jakąś całą funkcjonującą apkę/stronę.

https://awesomeopensource.com/projects/blazor

I jeszcze drugi fajny link:

https://github.com/AdrienTorris/awesome-blazor

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