Blazor (.NET for Web Experiment) Hits 0.9.0

Microsoft's experimental Blazor project for C#-based .NET Web development (as an alternative to JavaScript) has reached version 0.9.0 on its possible journey to becoming generally available for production use.

But for now, Microsoft's most recent FAQ documentation states:

Blazor is an experimental project because there are still lots of questions to answer about its viability and appeal. The purposes of this initial experimental phase is to work through the any outstanding technical issues, to gauge interest and to listen to feedback. While we are optimistic about Blazor's future, at this time Blazor is not a committed product and should be considered pre-alpha.

While the viability remains in question, the appeal is obvious: ditch the reliance on the troublesome, sprawling JavaScript ecosystem for browser-based Web development by using WebAssembly -- yet another experimental project -- to provide a low-level assembly-like language that higher-order languages can compile to for better performance.

In the Blazor scheme, the Mono .NET runtime gets compiled to WebAssembly, with the browser-based side of things working like this:

  • C# code files and Razor files are compiled into .NET assemblies.
  • The assemblies and the .NET runtime are downloaded to the browser.
  • Blazor bootstraps the .NET runtime and configures the runtime to load the assemblies for the app. Document Object Model (DOM) manipulation and browser API calls are handled by the Blazor runtime via JavaScript interop.

However, when the client-side effort of Blazor encountered problems, the server-side project was dubbed Razor Components and moved to ASP.NET Core.

That Razor Components project received many updates in the just-released .NET Core 3.0 Preview 3, which includes ASP.NET Core.

Thus, Microsoft did little more than point to the ASP.NET Core updates in announcing Blazor 0.9.0.

"This release updates Blazor with the Razor Components improvements in .NET," a March 7 post says.

Those improvements, listed a day earlier in a post announcing ASP.NET Core 3.0 Preview 3, include:

  • Single project template: The Razor Components project template is now a single project instead of two projects in the same solution.
  • New .razor extension: To clarify which Razor files should be compiled as Razor Components, Microsoft introduced a new file extension: .razor.
  • Endpoint routing integration: Razor Components are now integrated into ASP.NET Core's new Endpoint Routing system.
  • Prerendering: The Razor Components project template now does server-side prerendering by default, so when a user navigates to an application, the server will perform an initial render of Razor Components and deliver the result to their browser as plain static HTML. Then, the browser will reconnect to the server via SignalR and switch the Razor Components into a fully interactive mode.
  • Razor Components in Razor Class Libraries: Developers can now add Razor Components to Razor Class Libraries and reference them from ASP.NET Core projects using Razor Components.
  • Improved event handling: The new EventCallback and EventCallback<> types make defining component callbacks much more straightforward.
  • Forms and validation: This preview release adds built-in components and infrastructure for handling forms and validation.

Microsoft pointed to lists of new features and bug fixes for Blazor 0.9.0 on GitHub for more detailed information.

About the Author

David Ramel is an editor and writer for Converge360.

comments powered by Disqus


Subscribe on YouTube