Verwenden des gRPC-Clients mit .NET Standard 2.0
Hinweis
Dies ist nicht die neueste Version dieses Artikels. Die aktuelle Version finden Sie in der .NET 9-Version dieses Artikels.
Warnung
Diese Version von ASP.NET Core wird nicht mehr unterstützt. Weitere Informationen finden Sie in der Supportrichtlinie für .NET und .NET Core. Informationen zum aktuellen Release finden Sie in der .NET 8-Version dieses Artikels.
Wichtig
Diese Informationen beziehen sich auf ein Vorabversionsprodukt, das vor der kommerziellen Freigabe möglicherweise noch wesentlichen Änderungen unterliegt. Microsoft gibt keine Garantie, weder ausdrücklich noch impliziert, hinsichtlich der hier bereitgestellten Informationen.
Die aktuelle Version finden Sie in der .NET 9-Version dieses Artikels.
In diesem Artikel wird erläutert, wie Sie den .NET gRPC-Client mit .NET-Implementierungen verwenden, die .NET Standard 2.0 unterstützen.
.NET-Implementierungen
Die folgenden .NET-Implementierungen (oder höher) unterstützen GrpC.net.Client, weisen jedoch keine vollständige Unterstützung für HTTP/2 auf:
- .NET Core 2.1
- .NET Framework 4.6.1
- Mono 5.4
- Xamarin.iOS 10.14
- Xamarin.Android 8.0
- Universelle Windows-Plattform 10.0.16299
- Unity 2018.1
Der .NET gRPC-Client kann mit einigen zusätzlichen Konfigurationen Dienste aus diesen .NET-Implementierungen aufrufen.
HttpHandler-Konfiguration
Ein HTTP-Anbieter muss mithilfe von GrpcChannelOptions.HttpHandler
konfiguriert werden. Wenn kein Handler konfiguriert wird, wird ein Fehler ausgelöst:
System.PlatformNotSupportedException
: gRPC erfordert eine zusätzliche Konfiguration, um RPC-Aufrufe für .NET-Implementierungen erfolgreich durchführen zu können, die keine Unterstützung für gRPC über HTTP/2 haben. Ein HTTP-Anbieter muss mithilfe vonGrpcChannelOptions.HttpHandler
konfiguriert werden. Der konfigurierte HTTP-Anbieter muss entweder HTTP/2 unterstützen oder für die Verwendung von gRPC-Web konfiguriert sein.
.NET-Implementierungen, die HTTP/2 nicht unterstützen (z. B. UWP, Xamarin und Unity) können gRPC-Web als Alternative verwenden.
var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
{
HttpHandler = new GrpcWebHandler(new HttpClientHandler())
});
var client = new Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(new HelloRequest { Name = ".NET" });
Clients können auch mit der gRPC-Clientfactory erstellt werden. Ein HTTP-Anbieter wird mithilfe der ConfigurePrimaryHttpMessageHandler-Erweiterungsmethode konfiguriert.
builder.Services
.AddGrpcClient<Greet.GreeterClient>(options =>
{
options.Address = new Uri("https://localhost:5001");
})
.ConfigurePrimaryHttpMessageHandler(
() => new GrpcWebHandler(new HttpClientHandler()));
Weitere Informationen finden Sie unter Konfigurieren von gRPC-Web mit dem .NET gRPC-Client.
Wichtig
gRPC-Web setzt die Unterstützung durch Client und Server voraus. gRPC-Web kann schnell von einem ASP.NET Core gRPC-Server konfiguriert werden. Andere gRPC-Serverimplementierungen erfordern einen Proxy zur Unterstützung von gRPC-Web.
.NET Framework
.NET Framework bietet eingeschränkte Unterstützung für gRPC über HTTP/2. Um gRPC über HTTP/2 unter .NET Framework zu aktivieren, konfigurieren Sie den Kanal für die Verwendung von WinHttpHandler.
Anforderungen und Einschränkungen für die Verwendung von WinHttpHandler
:
- Windows 11 oder höher, Windows Server 2019 oder höher.
- gRPC-Client wird unter Windows 11 oder höher vollständig unterstützt.
- Der gRPC-Client wird unter Windows Server 2019 und Windows Server 2022 teilweise unterstützt. Unäre und serverstreamende gRPC-Methoden werden unterstützt. Client- und bidirektionale Streamingmethoden werden nicht unterstützt.
- Ein Verweis auf
System.Net.Http.WinHttpHandler
, Version 6.0.1 oder höher. - Konfigurieren Sie
WinHttpHandler
für den Kanal mithilfe vonGrpcChannelOptions.HttpHandler
. - .NET Framework 4.6.1 oder höher
- Nur gRPC-Aufrufe über TLS werden unterstützt.
var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
{
HttpHandler = new WinHttpHandler()
});
var client = new Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(new HelloRequest { Name = ".NET" });
gRPC-C#-Kernbibliothek
Als alternative Option zu .NET Framework und Xamarin bietet sich die Verwendung der gRPC-C#-Kernbibliothek für gRPC-Aufrufe an. Die gRPC-C#-Kernbibliothek:
- ist eine Drittanbieterbibliothek, die das Ausführen von gRPC-Aufrufen über HTTP/2 für .NET Framework und Xamarin unterstützt.
- wird von Microsoft nicht unterstützt.
- befindet sich im Wartungsmodus, wird als veraltet eingestuft und durch gRPC für .NET ersetzt.
- wird für neue Apps nicht empfohlen.