Which is why they're shipping server side Blazor [0], which is all the stupid parts of Blazor with none of the benefits.
Don't get me wrong, the idea of running .Net in WASM is very appealing to me... but server side Blazor is a daft idea, and it's a mistake.
Here's the model:
- Your component view state is rendered on the server.
- A delta is sent to the front-end.
- The frontend updates the DOM in the browser.
- Any DOM event is sent to the server.
- repeat.
Seems ok?
However, the problems here to understand are:
1) Every UI interaction, from mouse focus, to mouse drag, to click to button down, is sent down the wire to the server to be processed. For high latency situations, this will feel terrible.
2) Every client shares the same server cluster. As such, it scales badly; your application may perform well with 10 users, but for 100 users, you have 10x as much server work happening. Not business logic... UI logic. Will it scale? No one knows, but the money is on 'no'. The server scale-out demands will scale with people viewing the website; effectively this means the UI will lag out under load when the server is busy, the exact opposite of modern SPA applications and apps that remain superficially responsive under server load, and compounding issues generated from (1).
3) As many of the examples show, server side Blazor shows how you can execute arbitrary code on the server as part of your components (eg. fetch DB records). However, no vague consideration has been given to the authentication model for this. In fact, the stated high level goal is that razor components will 'with one click' work seamlessly on both WASM-mono and razor-components; ie. They are are naive of user roles and permission groups on the server, and expect to interact with an arbitrary backend 'service' with its own permission roles. (But that isnt what the examples show).
These are not trivial problems, they are, unfortunately, insurmountable architectural issues with server-side Blazor.
...and the work around is a compromise. ie. You use javascript.
Which... kind of makes it rather pointless.
This is being shipped early for business reasons, not technical reasons.
They should just wait for the WASM target to be ready; this will be a disaster, in my opinion.
[0] - https://blogs.msdn.microsoft.com/webdev/2018/10/02/blazor-0-...