Blazor i Wasze opinie o nim

Blazor i Wasze opinie o nim
Dawid Farbaniec
  • Rejestracja:około 8 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:::1
  • Postów:54
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.


BA
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 3 godziny
  • Postów:172
1

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

AdamWox
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Jastrzębie-Zdrój
  • Postów:2148
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 🤔

Ales
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 13 godzin
  • Postów:121
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
edytowany 3x, ostatnio: Ales
Zobacz pozostałe 9 komentarzy
Aventus
...czego ani w Blazor, ani React ani innym frameworku nie powinno się robić (modyfikować DOM) poza jakimiś skrajnymi przypadkami. W końcu od tego jest framework żeby sam za nas zmieniał DOM.
AdamWox
To "serio?" było w kwestii niedowierzania, a Niedoinformowanie było właśnie spowodowane tym, że tak ludzie mówili na temat Blazor. Aż mnie zaciekawiło czy dalbym radę przepisać apke. Może na urlopie coś popróbuje ✌️🤔
Aventus
@AdamWox: nie zrozumiałem, wybacz późno już ;) Spróbuj, może Ci się spodoba.
JP
@AdamWox: bo to ma konkurować z Angularami jako frameworkami A nie wyeliminować zupełnie JS.
AdamWox
@jacek.placek: no to źle zadałem to pierwsze pytanie 🙈 bo o to mi chodziło. Dla mnie JS to tylko jakiś framework. Na "czysto" mi kompletnie nie podchodzi
Aventus
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
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.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
JP
  • Rejestracja:ponad 7 lat
  • Ostatnio:3 miesiące
  • Postów:1065
1

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

Dawid Farbaniec
  • Rejestracja:około 8 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:::1
  • Postów:54
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.


AdamWox
Przecież po skompilowaniu tego nie widać. Chcesz mi powiedzieć, że ktoś jest w stanie w kodzie dopisać sobie linijkę z sql injection używając EF? 😂😱
Dawid Farbaniec
Ale plik binarny aplikacji Blazor jest po stronie klienta. Jakbym w *.exe stworzonym w C++ miał funkcję dodającą produkt do bazy to bez problemu mógłbym sobie ją wywołać z jakimi chcę parametrami. Chodzi mi o dostęp do kodu, nawet w formie skompilowanej.
AdamWox
I myślisz, że M$ zrobiłby tak głupiego bubla w swoim super wypasionym, najlepszym Blazorze?
Dawid Farbaniec
Nie wiem. To był przykład kodu jakiegoś blogera, nie z Visual Studio. Dlatego nie jestem pewien.
AdamWox
Wątpię w to żeby było możliwe to co podejrzewasz. Owszem, nowe technologie mają tendencje do bycia dziurawymi ale sql injection jest jednym z najważniejszych zagrożeń jakie występują w przypadku bezpieczeństwa oprogramowania. Microsoft czasem podejmuje głupie decyzje ale takiego błędu wolałbym żeby nie popełnił...
Aventus
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
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


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
edytowany 1x, ostatnio: Aventus
AdamWox
Widać sobie może być. To tak jak sobie mogę pooglądać kod strony, niczemu to nie służy. Pytanie brzmi czy tą informacje, tą widoczność można jakoś wykorzystać w nielegalny sposób. O ile faktycznie sekcja @code {} jest widoczna w podglądzie HTML czy w opcjach developerskich przeglądarki.
Aventus
@AdamWox: w kodzie f/e nie powinno sie zamieszczac niczego co moze nawet pomoc w potencjalnym ataku. To podstawy bezpieczenstwa. Jesli ktos umiescilby kod komunikacji z baza danych, to sila rzeczy udostepnil by connection string itp. To proszenie sie o katastrofe.
AdamWox
OP podał linijkę _context.Products.Add(...); z jakiegoś bloga, że w sekcji @code {}, czy to już jest zamieszczenie czegoś niebezpiecznego?
Aventus
Nie jeśli to jest Blazor Server, tak jeśli to jest WASM. Bo wtedy musisz mieć ten context w przeglądarce, a więc połączenie z bazą danych.
CW
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Postów:251
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

Dawid Farbaniec
  • Rejestracja:około 8 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:::1
  • Postów:54
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. 😄


WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:3 minuty
  • Postów:5105
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.

edytowany 4x, ostatnio: WeiXiao
Damian Korczowski
  • Rejestracja:około 5 lat
  • Ostatnio:3 dni
  • Postów:108
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

edytowany 1x, ostatnio: Damian Korczowski
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)