Blazor Finally Complete as WebAssembly Joins Server-Side Component

It's been a long time coming, but .NET developers can now finally enjoy a full-stack, production-ready Blazor framework for creating web applications with C# instead of JavaScript. At Microsoft's big Build developer conference today, the company announced that Blazor WebAssembly 3.2 -- the client-side component -- is joining Blazor Server.

Blazor, part of the ASP.NET development platform for web apps, is an open source and cross-platform web UI framework for building single-page apps using .NET and C# instead of JavaScript, the traditional nearly ubiquitous go-to programming language for the web.

As Daniel Roth, principal program manager, ASP.NET, said in an announcement post today, Blazor components can be hosted in different ways, server-side with Blazor Server and now client-side with Blazor WebAssembly.

"In a Blazor Server app, the components run on the server using .NET Core. All UI interactions and updates are handled using a real-time WebSocket connection with the browser. Blazor Server apps are fast to load and simple to implement," he explained.

"Blazor WebAssembly is now the second supported way to host your Blazor components: client-side in the browser using a WebAssembly-based .NET runtime. Blazor WebAssembly includes a proper .NET runtime implemented in WebAssembly, a standardized bytecode for the web. This .NET runtime is downloaded with your Blazor WebAssembly app and enables running normal .NET code directly in the browser."

The server-side Blazor component was introduced some eight months ago with the release of .NET Core 3.0, but Blazor WebAssembly wasn't ready because of problems with using the new, then-experimental WebAssembly, a low-level assembly-like language with a compact binary format that provides C# (and other programming languages) with a compilation target for web projects.

At the time, Blazor expert Chris Sainty explained:

The simple fact is that the client-side model relies not only on WebAssembly but also the efforts of the Mono team and their WASM .NET runtime. While progress is being made extremely quickly it's not quite there yet. AOT is not an option, there is extremely limited debugging, performance needs to be improved, download sizes are too big, etc.

Work continued on the client-side Blazor, and a Blazor WebAssembly 3.2 release candidate debuted less than three weeks ago.

In announcing Blazor WebAssembly 3.2 today, Microsoft touted the benefits of the red-hot project that lets Microsoft-centric coders put their .NET skills to work in creating nimble in-browser web apps (with back-end server support) with C#.

"This added capability means developers can build client-side web apps that run completely in the browser with .NET," Microsoft said. "These compiled applications run faster and with less memory than JavaScript. Further, because .NET is running on WebAssembly, developers can reuse code and libraries from within the .NET ecosystem."

Roth further detailed features in Blazor WebAssembly:

Among the huge amount of developer content available at Build -- which this year has switched to an online-only event because of the COVID-19 pandemic -- there are a couple Blazor-themed presentations available that will be offered at different times on different days by different speakers, including:

  • Learn Studio Session: Build a WebAssembly app with Blazor & VS Code
  • Modern Web UI with Blazor WebAssembly

Because of the ability to change the Blazor renderer -- which started out targeting the web -- to other targets, Microsoft as noted above is eyeing several other use cases for Blazor, including Progressive Web Apps (PWAs), mobile, hybrid Electron-based apps, native desktop and more.

Blazor Targets
[Click on image for larger view.] Blazor Targets (source: Microsoft).

In fact, at Microsoft's Focus on Blazor event held earlier this year, Blazor guru Steve Sanderson detailed a way to use Blazor to create installable desktop apps that didn't rely on the two traditional choices:

  • PWA (lightweight, but no native code/OS access)
  • Electron (native code/OS access, but heavy to download and run)

This new alternative is an experimental project called WebWindow (on GitHub here and in a blog post here), which is lightweight to download and run but also lets developers write native code -- it's not subject to the browser sandbox and doesn't run on WebAssembly.

For here-and-now, though, the long-awaited production-ready release of Blazor furthers Microsoft's huge and complicated effort -- starting with the open source, cross-platform .NET Core subsuming the aging, Windows-only .NET Framework -- to unify everything .NET under the moniker .NET 5, coming in November.

.NET 5
[Click on image for larger view.] .NET 5 (source: Microsoft).

"Now that we have shipped Blazor WebAssembly, we are shifting our attention to .NET 5," Roth said. "Work has already started on making Blazor WebAssembly available with .NET 5, which we expect to complete for preview next month.

"We also have a number of Blazor features and improvements that we are investigating for the .NET 5 & 6 wave. You can see the list of core deliverables that we are considering in the Blazor Roadmap for .NET 5 issue on GitHub."

Microsoft said some of the ways .NET 5 will improve the .NET development scheme include:

  • Produce a single .NET runtime and framework that can be used everywhere and that has uniform runtime behaviors and developer experiences.
  • Expand the capabilities of .NET by taking the best of .NET Core, .NET Framework, Xamarin and Mono.
  • Build that product out of a single code-base that developers (Microsoft and the community) can work on and expand together and that improves all scenarios.

"We are also continuing to collaborate with our friends on the Xamarin team on experimental support for building native UI using Blazor through the Mobile Blazor Bindings project. This includes some early efforts to explore building hybrid UI for native apps, which we hope to share more about soon," Roth said.

About the Author

David Ramel is an editor and writer for Converge360.

comments powered by Disqus


  • Uno Platform Ports Windows Calculator to Linux

    Uno Platform has ported the famed Windows Calculator, open sourced last year, to Linux as part of a continuing "proof point" effort to demonstrate the reach of what it describes as the sole UI offering available to target Windows, WebAssembly, iOS, macOS, Android and Linux with single-codebase applications coded in C# and XAML.

  • ASP.NET Core OData 8 Preview Supports .NET 5, but with Breaking Changes

    ASP.NET Core OData, which debuted in July 2018, is out in a v8.0 preview that for the first time supports the upcoming .NET 5 milestone release.

  • VS Code Java Team Details 5 Best Dev Practices

    Microsoft's Visual Studio Code team for Java development added a new Coding Pack for Java installer and detailed best practices for setting up a development environment.

  • Binary Classification Using PyTorch: Defining a Network

    Dr. James McCaffrey of Microsoft Research tackles how to define a network in the second of a series of four articles that present a complete end-to-end production-quality example of binary classification using a PyTorch neural network, including a full Python code sample and data files.

  • Blazor Debugging Boosted in .NET 5 RC 2

    In highlighting updates to ASP.NET Core in the just-launched second and final Release Candidate of .NET 5, Microsoft pointed out better debugging for Blazor, the red-hot project that allows for C# coding of web projects.

Upcoming Events