|
|
Opublikowano 2021-3-22 16:45:16
|
|
|
|

gRPC to wysokowydajny framework do zdalnych wywołań procedur (RPC), niezależny od języka.
Główne korzyści gRPC to:
Nowoczesny, wysokowydajny, lekki framework RPC. Tworzenie API oparte na kontrakcie, które domyślnie korzysta z protokołu, umożliwiających implementacje niezależne od języka. Narzędzia dostępne w wielu językach do generowania silnie typowanych serwerów i klientów. Obsługuje połączenia klient, serwer oraz dwukierunkowe streamingi. Ogranicz wykorzystanie sieci dzięki binarnej serializacji Protobuf.
Te korzyści sprawiają, że gRPC nadaje się do:
Lekkie mikroserwisy, gdzie efektywność jest kluczowa. Systemy wielogłoste, które wymagają wielu języków do rozwoju. Usługi peer-to-peer w czasie rzeczywistym, które muszą obsługiwać żądania lub odpowiedzi na strumienie.
Recenzja:
Podczas korzystania z Core 3.1 ASP.NET włączona jest usługa gRPC, a punkt końcowy HTTP/2 konfigurowany jest bez ochrony TLS, zobacz:Logowanie do linku jest widoczne.
Korzystając z konsoli .NET Core 3.1, próbowałem wywołać adres usługi HTTP gRPC z następującym błędem:
Wyjątek nieobsługiwany. Grpc.Core.RpcException: Status(StatusCode="Niedostępne", Detail="Błąd rozpoczynający wywołanie gRPC. HttpRequestException: Podczas wysyłania żądania wystąpił błąd. IOException: Odpowiedź zakończyła się przedwcześnie.", DebugException="System.Net.Http.HttpRequestException: Podczas wysyłania żądania wystąpił błąd. ---> System.IO.IOException: Odpowiedź zakończyła się przedwcześnie.
W zależności od wersji .NET używanej przez Twoją aplikację, istnieją dodatkowe wymagania dotyczące wywołania niebezpiecznej usługi gRPC:
.NET 5 lub nowsza wymaga wersji Grpc.Net.Client 2.32.0 lub nowszej. .NET Core 3.x wymaga dodatkowej konfiguracji. Aplikacja musi ustawić przełącznik System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport na true:
Ustawienia klienta są następujące:
Tylko .NET Core 3.x wymaga przełącznika System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport. W .NET 5 nie jest wymagana dodatkowa konfiguracja, ani ten wymóg nie jest。
Logowanie do linku jest widoczne.
|
Poprzedni:.NET/C# Testowanie wydajności odbicia, emitowania, ekspresjiNastępny:Późne relacje nowych osób
|