Использование gRPC на поддерживаемых платформах .NET

Автор: Джеймс Ньютон-Кинг (James Newton-King)

В этой статье описаны требования и поддерживаемые платформы для использования gRPC с .NET. Для двух основных рабочих нагрузок gRPC действуют различные требования:

Форматы для передачи данных по сети

gRPC использует преимущества расширенных функций, предоставляемых HTTP/2. HTTP/2 поддерживается везде, но для gRPC доступен второй сетевой формат на основе HTTP/1.1:

  • application/grpc — обычное использование gRPC через HTTP/2.
  • application/grpc-web — gRPC-Web изменяет протокол gRPC, обеспечивая совместимость с HTTP/1.1. gRPC-Web можно применять в других сценариях. gRPC-Web могут использоваться браузерными приложениями и в сетях без полной поддержки HTTP/2. Две расширенные функции gRPC больше не поддерживаются: потоковая передача клиента и двунаправленная потоковая передача.

gRPC в .NET поддерживает оба формата для передачи данных по сети. По умолчанию применяется application/grpc. Чтобы выполнять вызовы gRPC-Web, нужно настроить gRPC-Web в клиенте и на сервере. Сведения о настройке gRPC-Web см. в статье gRPC-Web в приложениях ASP.NET Core gRPC.

Требования к серверу с ASP.NET Core gRPC

Для размещения служб gRPC с помощью ASP.NET Core требуется .NET Core 3.x или более поздней версии:

  • .NET 5 или более поздней версии
  • .NET Core 3

Службы ASP.NET Core gRPC можно размещать во всех операционных системах, поддерживаемых .NET Core:

  • Windows
  • Linux
  • macOS

Поддерживаемые серверы ASP.NET Core

Поддерживаются все встроенные серверы ASP.NET Core:

  • Kestrel
  • TestServer
  • IIS†
  • HTTP.sys†

†Требуется .NET 5 и Windows 11 сборки 22000 либо Windows Server 2022 сборки 20348 или более поздней версии.

Сведения о настройке серверов ASP.NET Core для запуска gRPC см. в статье Службы gRPC в ASP.NET Core.

Службы Azure;

для †gRPC требуется среда на основе Linux в службе приложение Azure. Сведения о развертывании Службы приложений Azure см. в статье Развертывание приложения gRPC .NET 6 в Службе приложений.

Требования к клиенту .NET gRPC

Пакет Grpc.Net.Client поддерживает вызовы gRPC по протоколу HTTP/2 в .NET Core 3 и .NET 5 или более поздней версии.

В .NET Framework поддержка вызовов gRPC по протоколу HTTP/2 ограничена. Другие версии .NET (такие как UWP, Xamarin и Unity) не имеют требуемой поддержки HTTP/2 и должны использовать gRPC-Web.

В следующей таблице перечислены реализации .NET и приведены сведения об их поддержке клиента gRPC:

Реализация .NET gRPC на основе HTTP/2 gRPC-Web
.NET 5 или более поздней версии ✔️ ✔️
.NET Core 3 ✔️ ✔️
.NET Core 2.1 ✔️
.NET Framework 4.6.1 ⚠️† ✔️
Blazor WebAssembly ✔️
Mono 5.4 ✔️
Xamarin.iOS 10.14 ✔️
Xamarin.Android 8.0; ✔️
универсальная платформа Windows 10.0.16299. ✔️
Unity 2018.1. ✔️

†платформа .NET Framework требуется настройка WinHttpHandler Windows 11 или более поздней версии, Windows Server 2019 или более поздней версии. Дополнительные сведения см. в разделе "Создание вызовов gRPC для платформа .NET Framework".

Для использования Grpc.Net.Client с gRPC-Web требуется дополнительная настройка. Дополнительные сведения см. по ссылке .

Внимание

Требуется, чтобы клиент и сервер поддерживали gRPC-Web. gRPC-Web можно быстро настроить на сервере ASP.NET Core gRPC. Для других реализаций сервера gRPC требуется прокси-сервер, чтобы обеспечить поддержку gRPC-Web.

Дополнительные ресурсы