Использование gRPC на поддерживаемых платформах .NET
Примечание.
Это не последняя версия этой статьи. В текущем выпуске см . версию .NET 8 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в статье о политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 8 этой статьи.
Внимание
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
В текущем выпуске см . версию .NET 8 этой статьи.
Автор: Джеймс Ньютон-Кинг (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
- Windows
- Linux
- macOS†
†macOS не поддерживает размещение приложений ASP.NET Core с использованием HTTPS.
Поддерживаемые серверы 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.
Дополнительные ресурсы
ASP.NET Core