Обновите свою игру веб-разработки с помощью HTTP/3 в .Net 6

Обновите свою игру веб-разработки с помощью HTTP/3 в .Net 6

11 марта 2023 г.

HTTP/3 — это последняя версия протокола HTTP, предназначенная для повышения производительности и безопасности веб-приложений. HTTP/3, построенный на основе протокола QUIC, обеспечивает более быструю и безопасную связь между клиентом и сервером.

Цели обучения

  • Как включить HTTP/3 в .NET 6
  • Как это может повысить производительность веб-приложения?

Начало работы

Шаг 1. Установка необходимых пакетов

Первым шагом является установка необходимых пакетов для включения HTTP/3 в приложении .NET 6.

С помощью консоли диспетчера пакетов с помощью следующей команды:

Install-Package Microsoft.AspNetCore.Server.Kestrel.Transport.Experimental.Quic

Шаг 2. Настройка Kestrel для использования QUIC

Следующий шаг — настроить Kestrel, веб-сервер, входящий в состав .NET 6, для использования QUIC.

Это можно сделать, изменив файл конфигурации приложения.

var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureKestrel((context, options) =>
{
    options.Listen(IPAddress.Any, 5001, listenOptions =>
    {
#pragma warning disable CA2252 // This API requires opting into preview features
        listenOptions.Protocols = HttpProtocols.Http3;
#pragma warning restore CA2252 // This API requires opting into preview features
        listenOptions.UseHttps();
    });
});

builder.Services.AddControllers();

var app = builder.Build();

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

Приведенный выше код настраивает Kestrel для прослушивания порта 5001 с использованием протокола HTTP/3.

Шаг 3. Тестирование приложения

HttpClient был обновлен, чтобы включить поддержку HTTP/3, но его необходимо настроить с помощью флага времени выполнения. Включите следующее в файл .csproj, чтобы разрешить HTTP/3

<ItemGroup>
  <RuntimeHostConfigurationOption Include="System.Net.SocketsHttpHandler.Http3Support" Value="true" />
</ItemGroup>

В качестве версии запроса необходимо указать HTTP/3:

// See https://aka.ms/new-console-template for more information
using System.Net;

var client = new HttpClient();
client.DefaultRequestVersion = HttpVersion.Version30;
client.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionExact;

var resp = await client.GetAsync("https://localhost:5001/");
var body = await resp.Content.ReadAsStringAsync();

Обратная совместимость

HTTP/3 основан на протоколе QUIC, который широко поддерживается только некоторыми устройствами и сетями.

Поэтому важно иметь обратную совместимость с предыдущими версиями протокола HTTP, такими как HTTP/2 и HTTP/1.1, и гарантировать, что веб-приложения могут по-прежнему быть доступны пользователям, использующим старые браузеры, операционные системы или сети, которые не поддерживают поддержка HTTP/3.

Это можно сделать, изменив файл конфигурации приложения следующим образом.

builder.WebHost.ConfigureKestrel((context, options) =>
{
    options.Listen(IPAddress.Any, 5001, listenOptions =>
    {
#pragma warning disable CA2252 // This API requires opting into preview features
        listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;
#pragma warning restore CA2252 // This API requires opting into preview features
        listenOptions.UseHttps();
    });
});

Кроме того, обратная совместимость гарантирует, что более широкая аудитория может получить доступ к веб-приложениям, включая пользователей со старыми устройствами и сетями. Это расширяет охват веб-приложений и обеспечивает лучший пользовательский интерфейс для пользователей с ограниченным доступом к новым технологиям.

Заключение

Итак, включение HTTP/3 в вашем приложении .NET 6 — это простой процесс, который может значительно повысить производительность и безопасность вашего веб-приложения. Использование HTTP/3 обеспечивает более удобный пользовательский интерфейс для ваших клиентов за счет более быстрого времени загрузки, меньшей задержки и повышенной надежности.

Ссылки

Поддержка HTTP/3 в .NET6


Также опубликовано здесь .


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE