Blazor - a new/old experiment
Monday, February 12, 2018 - Jamie Taylor
Blazor is the name of an experiment which Steve Sanderson has been running for eight months, namely: Can we run .NET in a web browser?
What is Blazor?
Essentially, Blazor uses WebAssembly to bootstrap a cut down Mono run time within the browser. It’s described in the official GitHub repository in the following way:
Blazor uses only the latest web standards. No plugins or transpilation needed. It runs in the browser on a real .NET runtime (Mono) implemented in WebAssembly that executes normal .NET assemblies. It works in older browsers too by falling back to an asm.js based .NET runtime.
This means that, essentially, we now have the ability to create front end code using C# and Razor alongside standard HTML.
For a more in depth look at what Blazor is and what it can do, I would recommend reading through the official FAQ.
A Short History - Just the Highlights
Blazor is based on an older open source project called DotNetAnywhere which was started in 2010, and abandoned shortly after the initial version of Blazor was shown off at NDC Oslo - although no commits had been made to the project since Jan 23, 2012.
The initial version of Blazor, which was still an experiment, was shown off at NDC Oslo in June of 2017. The video of Steve showing it off can be found here, it’s really worth watching for some of the technical details behind how Blazor works. The version of Blazor that Steve showed off during the NDC talk was not very old, as the initial commit for the GitHub repo was pushed on May 25th, 2017 implying that there was less than a month between its initial commit and the demo version at NDC.
After it was announced at NDC, Microsoft held an internal hackathon for enhancing and prototyping software applications using Blazor. This lead to a lot of bug fixes and additions to the code base, in an extremely short amount of time. This was shown during the ASPNET Community Standup call which took place on July 25th, 2017 - Damian Edwards (one of the hosts of the ASPNET Community Standup) was present for the length of the hackathon and was reporting live from the event as it progressed.
On Jan 6th, 2018 it was announced that Blazor had been added as an official ASP.NET project with it’s own repository under the official ASPNET collection of repositories. This means that Microsoft engineers are now actively working on Blazor full time, and that it could possibly ship with the next version of ASP.NET - assuming that it is ready by that time.
Blazor has evolved rapidly since it was first announced, just over eight months ago, however it is still not ready for production and is currently in an experimentation phase. This was pointed out in the announcement blog post, on a recent episode of DotNetRocks and on a recent episode of the ASPNET Community Standup.
A Live Demo
Microsoft have spun up a live demo application which runs Blazor available online. It looks a lot like the ASP.NET Core SPA templates, and that is intentional because Steve and his team work on the SPA services for ASP.NET Core.
If you head to this site with the browser tools open, you’ll see all of the Mono run time DLLs being loaded - which is why it takes a moment to initially render the page.
Will We Be Using Blazor?
We have never shied away from using new technology, which has led to us becoming leaders in the evolving tech space. As such we are beginning to experiment internally with Blazor, what it can do, and will watch it with interest as it develops over the coming months.
You'll remember that I wrote a little about Blazor …
For the past two years, the majority of Audacia's new web development projects have been built on a stack of:
- ASP.NET Core RESTful API
- An Angular UI running within an ASP.NET Core project.