Razor Components (Server-Side Blazor) Refined in ASP.NET Core Preview

ASP.NET Core's Razor Components -- aka server-side Blazor -- received a lot of attention in the just-released NET Core 3.0 Preview 3 as Microsoft continues to mature its initiative to run C# code in the browser instead of just JavaScript.

Or, as Microsoft said in an announcement yesterday, Razor Components, introduced in an earlier preview, provide "a new way to build interactive client-side Web UI with ASP.NET Core."

While the experimental Blazor project started off as more of a full-stack approach with client-side and server-side components, the client-side effort ran into problems in getting C# to play nice on the Web with WebAssembly, yet another experimental project that facilitates the development of Web apps with C# and other higher-level languages.

As the client-side team continues to work on those problems, the server-side effort was dubbed Razor Components and moved to be an integral part of ASP.NET Core.

In the new Preview 3, Razor Components received many improvements, described by Microsoft as:

  • 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.

Regarding the ability to add Razor Components to Razor Class Libraries and reference them from ASP.NET Core projects using Razor Components, Microsoft added one caveat: "Note that Razor Class Libraries are not compatible with Blazor apps in this release. Also, Razor Class Libraries do not yet support static assets. To create components in a library that can be shared with Blazor and Razor Components apps you still need to use a Blazor Class Library. This is something we expect to address in a future update."

Features other than Razor Components also received their share of improvements, including:

  • Runtime compilation
  • Worker Service template
  • gRPC template
  • Angular template updated to Angular 7
  • Authentication for Single Page Applications
  • SignalR integration with endpoint routing
  • SignalR Java client support for long polling

All of the above are explained in detail in the release notes.

In announcing .NET Core 3.0 Preview 3, Microsoft announced that .NET Core 3.0 would not be shipping with Visual Studio 2019 when it's released on April 2. Rather, it will ship in the second half of the year, with the exact date to announced during Microsoft's Build conference in early May.

About the Author

David Ramel is an editor and writer for Converge360.

comments powered by Disqus


  • VS Code Now Has Apple Silicon Builds for Native Mac Development

    Goodbye Rosetta, hello M1. Visual Studio Code has been updated with new builds that let it run natively on machines with Apple Silicon (M1), the company's own ARM64 chips.

  • Visual Studio 2019 for Mac v8.9 Ships with .NET 6 Preview 1 Support

    During its Ignite 2021 online event for IT pros and developers this week, Microsoft shipped Visual Studio 2019 for Mac v8.9, arriving with out-of-the-box support for .NET 6 Preview 1, which the company also released recently.

  • Analyst: TypeScript Now Firmly in Top 10 Echelon (Ruby, Not So Much)

    RedMonk analyst Stephen O'Grady believes TypeScript has achieved the rare feat of firmly ensconcing itself into the top 10 echelon of his ranking, now questioning how high it might go.

  • Black White Wave IMage

    Neural Regression Using PyTorch: Training

    The goal of a regression problem is to predict a single numeric value, for example, predicting the annual revenue of a new restaurant based on variables such as menu prices, number of tables, location and so on.

Upcoming Events