News

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 at Converge 360.

comments powered by Disqus

Featured

  • Hands On: New VS Code Insiders Build Creates Web Page from Image in Seconds

    New Vision support with GitHub Copilot in the latest Visual Studio Code Insiders build takes a user-supplied mockup image and creates a web page from it in seconds, handling all the HTML and CSS.

  • Naive Bayes Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the naive Bayes regression technique, where the goal is to predict a single numeric value. Compared to other machine learning regression techniques, naive Bayes regression is usually less accurate, but is simple, easy to implement and customize, works on both large and small datasets, is highly interpretable, and doesn't require tuning any hyperparameters.

  • VS Code Copilot Previews New GPT-4o AI Code Completion Model

    The 4o upgrade includes additional training on more than 275,000 high-quality public repositories in over 30 popular programming languages, said Microsoft-owned GitHub, which created the original "AI pair programmer" years ago.

  • Microsoft's Rust Embrace Continues with Azure SDK Beta

    "Rust's strong type system and ownership model help prevent common programming errors such as null pointer dereferencing and buffer overflows, leading to more secure and stable code."

  • Xcode IDE from Microsoft Archrival Apple Gets Copilot AI

    Just after expanding the reach of its Copilot AI coding assistant to the open-source Eclipse IDE, Microsoft showcased how it's going even further, providing details about a preview version for the Xcode IDE from archrival Apple.

Subscribe on YouTube

Upcoming Training Events