Taking it from the top. Blazor is a framework used to build interactive web applications with HTML, CSS and C#. It also allows developers to build rich web applications with Razor Components that use the Razor syntax and C# code for your application.
Blazor provides the flexibility to host those components on a server (with Blazor Server) or on a client machine (with Blazor WebAssembly).
Blazor WebAssembly
- components in the browser using a WebAssembly based .NET Runtime
- Handles UI updates on the client-side completely
- Uses open web standard for WebAssembly to run the code - no plugins or transpilation required
- Can use programming language of choice on server
- Best for high fidelity, instant update applications like games or drawing apps
- Requires modern browsers (of which all support WebAssembly) to run
- Still in preview and under active development
Blazor Server
- components in the browser using a WebAssembly based .NET Runtime
- Hosts UI components on the server
- Allows you to take full advantage of .NET Core on the server
- Uses SignalR to push UI updates for specific components
- Has the full performance and security that comes with .NET Core
- Can continue to use familiar ASP.NET Core technologies on the server, side by side
- Works best when you know the client can maintain a connection to the server
- Ideal for use on low powered client devices, since components do most of their work on the server
- Generally available with the release of .NET Core 3.0