gRPC sur les plateformes prises en charge par .NET

Par James Newton-King

Cet article décrit la configuration requise et les plateformes prises en charge pour l’utilisation de gRPC avec .NET. Il existe différentes exigences pour les deux principales charges de travail gRPC :

Formats de câble

gRPC tire parti des fonctionnalités avancées disponibles dans HTTP/2. HTTP/2 n’est pas pris en charge partout, mais un deuxième format de câble utilisant HTTP/1.1 est disponible pour gRPC :

  • application/grpc - gRPC sur HTTP/2 est la façon dont gRPC est généralement utilisé.
  • application/grpc-web - gRPC-Web modifie le protocole gRPC pour qu’il soit compatible avec HTTP/1.1. gRPC-Web peut être utilisé dans plus d’endroits. gRPC-Web peut être utilisé par les applications de navigateur et dans les réseaux sans prise en charge complète de HTTP/2. Deux fonctionnalités gRPC avancées ne sont plus prises en charge : le streaming client et le streaming bidirectionnel.

gRPC sur .NET prend en charge les deux formats de câble. application/grpc est utilisé par défaut. gRPC-Web doit être configuré sur le client et le serveur pour que les appels gRPC-Web aboutissent. Pour plus d’informations sur la configuration de gRPC-Web, consultez gRPC-Web dans les applications gRPC ASP.NET Core.

Configuration requise du serveur gRPC ASP.NET Core

L’hébergement de services gRPC avec ASP.NET Core nécessite .NET Core 3.x ou version ultérieure.

  • .NET 5 ou version ultérieure
  • .NET Core 3

Les services gRPC ASP.NET Core peuvent être hébergés sur tous les systèmes d’exploitation pris en charge par .NET Core.

  • Windows
  • Linux
  • macOS

Serveurs ASP.NET Core pris en charge

Tous les serveurs ASP.NET Core intégrés sont pris en charge.

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

†Requiert .NET 5 et Windows 11 Build 22000 ou Windows Server 2022 Build 20348 ou version ultérieure.

Pour plus d’informations sur la configuration des serveurs ASP.NET Core pour exécuter gRPC, consultez Services gRPC avec ASP.NET Core.

Services Azure

†gRPC nécessite un environnement Linux sur Azure App Service. Pour plus d’informations sur le déploiement Azure App Service, consultez Comment déployer une application .NET 6 gRPC sur App Service.

Configuration requise pour le client .NET gRPC

Le package Grpc.Net.Client prend en charge les appels gRPC via HTTP/2 sur .NET Core 3 et .NET 5 ou version ultérieure.

Une prise en charge limitée est disponible pour gRPC sur HTTP/2 sur .NET Framework. D’autres versions de .NET telles qu’UWP, Xamarin et Unity n’ont pas de prise en charge HTTP/2 requise et doivent utiliser gRPC-Web à la place.

Le tableau suivant répertorie les implémentations .NET et leur prise en charge du client gRPC :

Implémentation de .NET gRPC sur HTTP/2 gRPC-Web
.NET 5 ou version ultérieure ✔️ ✔️
.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 ✔️
Plateforme Windows universelle 10.0.16299 ✔️
Unity 2018.1 ✔️

†.NET Framework nécessite la configuration de WinHttpHandler et Windows 11 ou version ultérieure, Windows Server 2019 ou version ultérieure. Pour plus d’informations, consultez Effectuer des appels gRPC sur .NET Framework.

L’utilisation de Grpc.Net.Client avec gRPC-Web nécessite une configuration supplémentaire. Pour plus d'informations :

Important

gRPC-Web nécessite que le client et le serveur le prennent en charge. gRPC-Web peut être rapidement configuré par un serveur ASP.NET Core gRPC. D’autres implémentations de serveur gRPC nécessitent un proxy pour prendre en charge gRPC-Web.

Ressources supplémentaires