Using HTTP3 in Asp.net core
Tags: webdev, aspnetcore
Published: 2023-04-07 06:39:18

---
title: Using HTTP3 in Asp.net core
published: true
tags: Webdevelopment,ASPNetCore
canonical_url: https://blog.bajonczak.com/using-http3-in-asp-net-core/
---

 ![Using HTTP3 in Asp.net core](https://images.unsplash.com/photo-1600695268275-1a6468700bd5?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxMTc3M3wwfDF8c2VhcmNofDd8fGhvbWVwYWdlfGVufDB8fHx8MTY3OTIxNDgwMQ&ixlib=rb-4.0.3&q=80&w=2000)

HTTP/3 is the latest iteration of the Hypertext Transfer Protocol (HTTP) protocol that powers the World Wide Web. This new version of HTTP, also known as "QUIC" (Quick UDP Internet Connections), brings many improvements over its predecessor, HTTP/2. In this article, we'll explore what HTTP/3 is and how it can be used with ASP.NET Core. We'll also discuss some of the pros and cons of using HTTP/3.

#What is HTTP3?

HTTP/3 is the third major version of the HTTP protocol, and it is designed to address some of the limitations of previous versions. The most significant change in HTTP/3 is the use of a new transport protocol called QUIC. Unlike TCP, which is used in HTTP/1 and HTTP/2, QUIC is designed to run over the User Datagram Protocol (UDP). This allows for faster and more reliable connections, especially in situations where network conditions are less than ideal.

HTTP/3 also includes other changes, such ,as the elimination of header compression and the use of a new congestion control mechanism. These changes are intended to reduce latency and improve the overall performance of web applications.

#How to use HTTP/3 with ASP.NET Core

To use HTTP/3 with ASP.NET Core, you'll need to use a server that supports HTTP/3, such as Kestrel. For this you must only modify the startup.cs according to this example.
{% embed https://gist.github.com/SBajonczak/1cfffc5e97325780262cee945a5e51ca.js %}

This code sets up Kestrel to listen for HTTP/3 connections on port 443. It also configures the HTTPS redirection middleware to use port 443 as well. Easy eh?

#How to make a HTTP3 call in the Client

On the client, you must also adjust your code. Here's an example:

{% embed https://gist.github.com/SBajonczak/17c145f973aa34d8d65dd40b7259496d.js %}

It seems like a normal call to an API, but you will note that the protocol-setting is set to http3. This will tell the browser to use the http3 protocol, to make a call to the server.

#What are the Pros and Cons of HTTP/3

Let me eplain some Pros and Cons for using HTTP/3. First of all the benefits:

1. Faster connections: Because QUIC runs over UDP, it can establish connections faster and with less overhead than TCP-based protocols like HTTP/2.
2. Improved reliability: QUIC includes features like automatic retransmission and packet-level error correction, which can improve the reliability of connections in unstable network conditions.
3. Reduced latency: HTTP/3 eliminates the need for header compression, which can reduce latency by eliminating the need for the client and server to negotiate header compression settings.

Actually, there is some downside to using it:

1. Limited server support: While many major web servers now support HTTP/3, it is still not as widely supported as previous versions of the protocol.
2. Increased complexity: Because HTTP/3 is a new protocol, it can be more complex to implement and troubleshoot than previous versions.
3. Compatibility issues: Some older clients or firewalls may not be able to connect to servers that useUnfortunatelych could limit the reach of applications that use the protocol.

#Conclusion

HTTP/3 is a major improvement over previous versions of trecommendedotocol, and it has the potential to significantly improve the performance and reliability of web applications. It may improve your webapplication, because you get a faster connection. Unfortunally you must use a supporting webserver (for example kestrel) and the used browsers must support the HTTP/3 protocol. Actually it will recomendet, to add the feature but not setup only on this.

* * *

Did you like this article? Then maybe you can send me some [Ko-fi](https://ko-fi.com/abenteuerimkern)