Microsoft recently announced ASP.NET Core 2.2 is available.
The main theme for this ASP.NET Core release was to improve developer productivity and platform functionality with regard to building Web/HTTP APIs. As usual, we made some performance improvements as well. We’ve posted about these features as part of the preview releases and you as such you can read about them by following the links below:
- Better integration with popular Open API (Swagger) libraries including design-time checks with code analyzers
- Introduction of Endpoint Routing with up to 20% improved routing performance in MVC
- Improved URL generation with the LinkGenerator class & support for route Parameter Transformers
- New Health Checks API for application health monitoring
- Up to 400% improved throughput on IIS due to in-process hosting support
- Up to 15% improved MVC model validation performance
- Problem Details (RFC 7807) support in MVC for detailed API error results
- Preview of HTTP/2 server support in ASP.NET Core
- Template updates for Bootstrap 4 and Angular 6
- Java client for ASP.NET Core SignalR
- Up to 60% improved HTTP Client performance on Linux and 20% on Windows
Open API Analyzers & Conventions
Open API (alternatively known as Swagger) is a language-agnostic specification for describing REST APIs. The Open API ecosystem has tools that
Endpoint Routing in 2.2
They’re making a big investment in routing starting in 2.2 to make it interoperate more seamlessly with middleware. For 2.2 this will start with us making a few changes to the routing
Added a new service
Health Checks integration with BeatPulse
They’re happy to announce that the
BeatPulse is a community driven project that was created to provide health checking mechanisms for systems, networking and a wide variety of services that are common within the enterprise, e.g. SqlServer, MySql,Postgress, Redis, Kafka and many more . When Microsoft announced ASP.NET Core Health Checks for the 2.2 roadmap, the BeatPulse team ported all the existing liveness packages and features to work with the new Microsoft Health Checks abstractions at the repository AspNetCore.Diagnostics.HealthChecks. Apart from all the health checking packages, the BeatPulse team also incorporates other features like pulse tracking (Application Insights and Prometheus), failure notifications and a UI interface were we can configure different monitored systems and have a global view of health status. This UI is available as a Docker image published in Docker Hub.
ASP.NET Core Module Improvements
They’ve introduced a new module (
aspNetCoreModuleV2) for hosting ASP.NET Core application in IIS in 2.2.0-preview1. This new module adds the ability to host your .NET Core application within the IIS worker process and avoids the additional cost of reverse-proxying your requests over to a separate
Validation Performance Improvements
In 2.2.0-preview3, we’re adding a feature that allows MVC to short-circuit validation if it can determine that a given model graph would not require any validation. This results in significant improvements when validating models that cannot or do not have any associated validators. This includes objects such as collections of primitives (
Dictionary<string, string> etc), or complex object graphs without many validators.
The ASP.NET Core Module also features enhanced diagnostics logs that configurable via the new handler settings or environment variables that expose a higher fidelity of diagnostic information.
HTTP/2 is a major revision of the HTTP protocol. Some of the notable features of HTTP/2 are support for header compression and fully multiplexed streams over the same connection. While HTTP/2 preserves HTTP’s semantics (HTTP headers, methods, etc) it is a breaking change from HTTP/1.x on how this data is framed and sent over the wire.
As a consequence of this change in framing, servers and clients need to negotiate the protocol version used. While it is possible to have prior knowledge between the server and the client on the protocol, all major browsers support ALPN as the only way to establish
They’ve cleaned up the Bootstrap 4 project template work that we started in Preview 1. They’ve also added support to the default Identity UI for using both Bootstrap 3 & 4. For compatibility with existing
Java Client for SignalR
In ASP.NET Core 2.2 they are introducing a Java Client for SignalR. The first preview of this new client is available now. This client supports connecting to an ASP.NET Core SignalR Server from Java code, including Android apps.
The HubConnection is initialized the same way, with the
HTTP Client Performance Improvements
Some significant performance improvements have been made to SocketsHttpHandler by improving the connection pool locking contention. For applications making many outgoing HTTP requests, such as some Microservices architectures, throughput should be significantly improved. Our internal benchmarks show that under load HttpClient throughput has improved by 60% on Linux and 20% on Windows. At the same time the 90th percentile latency was cut down by two on Linux. See Github #32568 for the actual code change that made this improvement.
Best ASP.NET Core 2.2 Hosting Recommendation
|Host 1 Site||Host Unlimited Site||Host 5 Sites|
|1 GB Disk Space||Unlimited Disk Space||1 GB Disk Space|
|10 GB Bandwidth||Unlimited Bandwidth||20 GB Bandwidth|
|Dedicated Application Pool||Dedicated Application Pool||Dedicated Application Pool|
|Support UTF-8 Domains||Support UTF-8 Domains||Support UTF-8 Domains|
|30-Days Money Back||30-Days Money Back||30-Days Money Back|
|Latest ASP.NET||Latest ASP.NET||Latest ASP.NET|
|Plesk Control Panel||Plesk Control Panel||Plesk Control Panel|
|Windows 2008/2012||Windows 2008/2012||Windows 2008/2012|
|SQL Server 2008/2012/2014||SQL Server 2008/2012/2014||SQL Server 2008/2012/2014|
|Latest MySql version||Latest MySql version||Latest MySql version|