Thanks for visiting my blog! See more about me here: About Me
ASP.NET Core 3 seems to be taking a similar tact to version 1 as it is adding a lot of functionality and phasing it in with different previews. While a lot of the articles seem to be focusing on the non-ASP.NET features (e.g. WPF, WinForms, etc.), I thought it would be nice to let those of you who are ASP.NET devs know what is in Preview 6 just for you.
It feels a lot like the ASP.NET MVC/API side is being treated as mature and stable as there is are not a lot of surface changes. Microsoft does seem to be doubling down on Razor Pages and Blazor. It feels like they want .NET Core to be a good fit for different styles and backgrounds of developer. This release is no different.
Let’s take a look at the details:
Blazor
- @attribute: Let’s you add attributes usage in your Razor files (more common in .razor components than in .cshtml files)
- @code: Equivalent to @functions feature. Only supported in .razor file components. Used to add code blocks.
- @key: Used to help Blazor optimize handling lists of components so that it knows a key to know what to replace or where to insert new objects in a Blazor view.
- Blazor attributes have been standardized to a format of @directive(-suffix(:name))(=value)
- Blazor templates now support Authentication and Authorization
JSON Support
By default, all ASP.NET Core projects will use System.Text.Json by default. You can still opt into JSON.NET by using:
services.AddMvc()
.AddNewtonsoftJson();
Security Changes
Preview 6 now supports Certificate and Kerberos authentiation and authorization. For example:
services.AddAuthentication(
CertificateAuthenticationDefaults.AuthenticationScheme)
.AddCertificate();
This opens ASP.NET Core to more security requirements. I’m excited to see this.
SignalR
By opting into the new client-side @aspnet/signalr@next you’ll be able to add auto reconnection via opting into it in your SignalR projects:
const connection = new signalR.HubConnectionBuilder()
.withUrl("/chatHub")
.withAutomaticReconnect()
.build();
This will reconnect at 2, 10 and 30 second intervals. You can customize these timings too.
gRPC
gRPC now has a completely managed client. So if you’re building .NET end-to-end via a gRPC endpoint, you can now do this much easier with both a managed client and a client factory. I see gRPC as a good replacement for WCF’s non-http services. If you haven’t looked at gRPC yet, it’s an interesting technology if you’re not expecting a variety of clients. SignalR is built via gRPC under the covers. And yes, gRPC is an open spec, not a Microsoft invention. See an overview at https://grpc.io/docs/guides/.