W tym samouczku pokazano, jak utworzyć klienta gRPC platformy .NET Core i serwera gRPC platformy ASP.NET Core. Na końcu będziesz mieć klienta gRPC, który komunikuje się z usługą gRPC Greeter.
W tym samouczku zostały wykonane następujące czynności:
- Utwórz serwer gRPC.
- Utwórz klienta gRPC.
- Przetestuj klienta gRPC za pomocą usługi gRPC Greeter.
Możesz postępować zgodnie z instrukcjami programu Visual Studio Code w systemach macOS, Linux lub Windows. Zmiany mogą być wymagane, jeśli używasz zintegrowanego środowiska projektowego (IDE) innego niż Visual Studio Code.
- Uruchom program Visual Studio 2022 i wybierz pozycję Nowy projekt.
-
W oknie dialogowym Tworzenie nowego projektu wyszukaj ciąg
gRPC
. Wybierz pozycję ASP.NET Core gRPC Service i wybierz przycisk Dalej.
-
W oknie dialogowym Konfigurowanie nowego projektu wprowadź wartość w polu
GrpcGreeter
projektu. Ważne jest, aby nazwać projekt GrpcGreeter , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
- Wybierz Dalej.
- W oknie dialogowym Dodatkowe informacje wybierz pozycję .NET 9.0 (obsługa terminów standardowych), a następnie wybierz pozycję Utwórz.
W tym samouczku założono znajomość programu VS Code. Aby uzyskać więcej informacji, zobacz Wprowadzenie do programu VS Code.
Wybierz pozycję Nowy terminal z menu Terminal , aby otworzyć zintegrowany terminal.
Przejdź do katalogu (cd
), który będzie zawierać projekt.
Uruchom następujące polecenia:
dotnet new grpc -o GrpcGreeter
code -r GrpcGreeter
Polecenie dotnet new
tworzy nową usługę gRPC w folderze GrpcGreeter .
Polecenie code
otwiera folder projektu GrpcGreeter w bieżącym wystąpieniu programu Visual Studio Code.
Program Visual Studio Code może wyświetlić okno dialogowe z pytaniem: Czy ufasz autorom plików w tym folderze?
- Jeśli ufasz wszystkim plikom w folderze nadrzędnym, wybierz pozycję Ufaj autorom wszystkich plików w folderze nadrzędnym.
- Wybierz pozycję Tak. Ufam autorom , ponieważ folder projektu zawiera pliki wygenerowane przez platformę .NET.
- Gdy program Visual Studio Code zażąda dodania zasobów do kompilowania i debugowania projektu, wybierz pozycję Tak. Jeśli program Visual Studio Code nie oferuje dodawania zasobów kompilacji i debugowania, wybierz pozycję Wyświetl>paletę poleceń i wpisz "
.NET
" w polu wyszukiwania. Z listy poleceń wybierz .NET: Generate Assets for Build and Debug
polecenie .
Program Visual Studio Code dodaje .vscode
folder z wygenerowanymi launch.json
plikami i tasks.json
.
Naciśnij Ctrl+F5, aby uruchomić bez debugera.
Program Visual Studio wyświetla następujące okno dialogowe, gdy projekt nie jest jeszcze skonfigurowany do używania protokołu SSL:
Wybierz pozycję Tak , jeśli ufasz certyfikatowi SSL usług IIS Express.
Zostanie wyświetlone następujące okno dialogowe:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio:
- Uruchamia Kestrel serwer.
- Uruchamia przeglądarkę.
- Przechodzi do adresu
http://localhost:port
, takiego jak http://localhost:7042
.
-
port: losowo przypisany numer portu dla aplikacji.
-
localhost
: Standardowa nazwa hosta komputera lokalnego. Host lokalny obsługuje tylko żądania internetowe z komputera lokalnego.
Ufaj certyfikatowi programistycznemu HTTPS, uruchamiając następujące polecenie:
dotnet dev-certs https --trust
Powyższe polecenie wymaga zestawu .NET 9 SDK lub nowszego w systemie Linux. W przypadku systemu Linux na platformie .NET 8.0.401 SDK i starszych wersjach zobacz dokumentację dystrybucji systemu Linux, aby ufać certyfikatowi.
Poprzednie polecenie wyświetla następujące okno dialogowe, pod warunkiem, że certyfikat nie był wcześniej zaufany:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać więcej informacji, zobacz sekcję Trust the ASP.NET Core HTTPS development certificate (Ufaj certyfikatowi programistycznemu ASP.NET Core HTTPS) artykułu Wymuszanie protokołu SSL .
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Dzienniki pokazują, że usługa nasłuchuje na https://localhost:<port>
, gdzie <port>
jest numer portu hosta lokalnego losowo przypisany podczas tworzenia i ustawiania projektu w .Properties/launchSettings.json
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Uwaga
Szablon gRPC jest skonfigurowany do używania protokołu Transport Layer Security (TLS). Klienci gRPC muszą używać protokołu HTTPS do wywoływania serwera. Numer portu hosta lokalnego usługi gRPC jest losowo przypisywany podczas tworzenia projektu i ustawiany w pliku Properties\launchSettings.json projektu usługi gRPC.
Sprawdzanie plików projektu
Pliki projektu GrpcGreeter :
-
Protos/greet.proto
: definiuje gRPC Greeter
i służy do generowania zasobów serwera gRPC. Aby uzyskać więcej informacji, zobacz Wprowadzenie do gRPC.
-
Services
folder: zawiera implementację Greeter
usługi.
-
appSettings.json
: zawiera dane konfiguracji, takie jak protokół używany przez Kestrelprogram . Aby uzyskać więcej informacji, zobacz Konfiguracja na platformie ASP.NET Core.
-
Program.cs
, który zawiera:
Tworzenie klienta gRPC w aplikacji konsolowej platformy .NET
- Otwórz drugie wystąpienie programu Visual Studio i wybierz pozycję Nowy projekt.
-
W oknie dialogowym Tworzenie nowego projektu wybierz pozycję Aplikacja konsolowa, a następnie wybierz pozycję Dalej.
- W polu tekstowym Nazwa projektu wprowadź ciąg GrpcGreeterClient i wybierz przycisk Dalej.
- W oknie dialogowym Dodatkowe informacje wybierz pozycję .NET 9.0 (obsługa terminów standardowych), a następnie wybierz pozycję Utwórz.
Otwórz zintegrowany terminal.
Zmień katalogi (cd
) na folder projektu.
Uruchom następujące polecenia:
dotnet new console -o GrpcGreeterClient
code -r GrpcGreeterClient
Program Visual Studio Code może wyświetlić okno dialogowe z pytaniem: Czy ufasz autorom plików w tym folderze?
- Jeśli ufasz wszystkim plikom w folderze nadrzędnym, wybierz pozycję Ufaj autorom wszystkich plików w folderze nadrzędnym.
- Wybierz pozycję Tak. Ufam autorom , ponieważ folder projektu zawiera pliki wygenerowane przez platformę .NET.
- Gdy program Visual Studio Code zażąda dodania zasobów do kompilowania i debugowania projektu, wybierz pozycję Tak. Jeśli program Visual Studio Code nie oferuje dodawania zasobów kompilacji i debugowania, wybierz pozycję Wyświetl>paletę poleceń i wpisz "
.NET
" w polu wyszukiwania. Z listy poleceń wybierz .NET: Generate Assets for Build and Debug
polecenie .
Program Visual Studio Code dodaje .vscode
folder z wygenerowanymi launch.json
plikami i tasks.json
.
Dodawanie wymaganych pakietów NuGet
Projekt klienta gRPC wymaga następujących pakietów NuGet:
Zainstaluj pakiety przy użyciu konsoli Menedżer pakietów (PMC) lub zarządzania pakietami NuGet.
Opcja PMC instalowania pakietów
W programie Visual Studio wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola
W oknie Menedżer pakietów Konsola uruchom polecenie cd GrpcGreeterClient
, aby zmienić katalogi na folder zawierający GrpcGreeterClient.csproj
pliki.
Uruchom następujące polecenia:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Opcja Zarządzaj pakietami NuGet w celu zainstalowania pakietów
- Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań> Zarządzaj pakietami NuGet.
- Wybierz kartę Przeglądaj.
- Wprowadź ciąg Grpc.Net.Client w polu wyszukiwania.
-
Wybierz pakiet Grpc.Net.Client z karty Przeglądaj i wybierz pozycję Zainstaluj.
- Powtórz dla
Google.Protobuf
i Grpc.Tools
.
Uruchom następujące polecenia ze zintegrowanego terminalu:
dotnet add GrpcGreeterClient.csproj package Grpc.Net.Client
dotnet add GrpcGreeterClient.csproj package Google.Protobuf
dotnet add GrpcGreeterClient.csproj package Grpc.Tools
Utwórz folder Protos w projekcie klienta gRPC.
Skopiuj plik Protos\greet.proto z usługi gRPC Greeter do folderu Protos w projekcie klienta gRPC.
Zaktualizuj przestrzeń nazw wewnątrz greet.proto
pliku do przestrzeni nazw projektu:
option csharp_namespace = "GrpcGreeterClient";
GrpcGreeterClient.csproj
Edytuj plik projektu:
Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj plik projektu.
GrpcGreeterClient.csproj
Wybierz plik.
Tworzenie klienta powitania
- Skompiluj projekt klienta, aby utworzyć typy w
GrpcGreeterClient
przestrzeni nazw.
Uwaga
Typy GrpcGreeterClient
są generowane automatycznie przez proces kompilacji. Pakiet narzędzi Grpc.Tools generuje następujące pliki na podstawie pliku greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: kod buforu protokołu, który wypełnia, serializuje i pobiera typy komunikatów żądania i odpowiedzi.
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: zawiera wygenerowane klasy klienta.
Aby uzyskać więcej informacji na temat zasobów języka C# generowanych automatycznie przez narzędzia Grpc.Tools, zobacz usługi gRPC z elementami C#: Wygenerowane zasoby języka C#.
Zaktualizuj plik klienta Program.cs
gRPC przy użyciu następującego kodu.
using Grpc.Net.Client;
using GrpcGreeterClient;
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
W poprzednim wyróżnionym kodzie zastąp 7042
numer portu localhost numerem HTTPS
portu określonym w Properties/launchSettings.json
projekcie GrpcGreeter
usługi.
Program.cs
zawiera punkt wejścia i logikę klienta gRPC.
Klient greeter jest tworzony przez:
- Utworzenie wystąpienia zawierającego
GrpcChannel
informacje dotyczące tworzenia połączenia z usługą gRPC.
- Za pomocą polecenia
GrpcChannel
, aby skonstruować klienta Greeter:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Klient Greeter wywołuje metodę asynchroniczną SayHello
. Zostanie wyświetlony wynik SayHello
wywołania:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Testowanie klienta gRPC za pomocą usługi gRPC Greeter
Zaktualizuj plik, appsettings.Development.json
dodając następujące wyróżnione wiersze:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- W projekcie usługi
GrpcGreeter
naciśnij Ctrl+F5
, aby uruchomić serwer bez debugera.
- W projekcie konsoli
GrpcGreeterClient
naciśnij Ctrl+F5
, aby uruchomić klienta bez debugera.
- Uruchom usługę Greeter.
- Uruchom klienta.
Klient wysyła powitanie do usługi z komunikatem zawierającym jego nazwę GreeterClient. Usługa wysyła komunikat "Hello GreeterClient" jako odpowiedź. Odpowiedź "Hello GreeterClient" jest wyświetlana w wierszu polecenia:
Greeting: Hello GreeterClient
Press any key to exit...
Usługa gRPC rejestruje szczegóły pomyślnego wywołania w dziennikach zapisanych w wierszu polecenia:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished HTTP/2 POST https://localhost:7042/greet.Greeter/SayHello - 200 - application/grpc 40.4615ms
Uwaga
Kod w tym artykule wymaga certyfikatu dewelopera ASP.NET Core HTTPS w celu zabezpieczenia usługi gRPC. Jeśli klient gRPC platformy .NET zakończy się niepowodzeniem z komunikatem The remote certificate is invalid according to the validation procedure.
lub The SSL connection could not be established.
, certyfikat dewelopera nie jest zaufany. Aby rozwiązać ten problem, zobacz Wywoływanie usługi gRPC z niezaufanym/nieprawidłowym certyfikatem.
W tym samouczku pokazano, jak utworzyć klienta gRPC platformy .NET Core i serwera gRPC platformy ASP.NET Core. Na końcu będziesz mieć klienta gRPC, który komunikuje się z usługą gRPC Greeter.
W tym samouczku zostały wykonane następujące czynności:
- Utwórz serwer gRPC.
- Utwórz klienta gRPC.
- Przetestuj klienta gRPC za pomocą usługi gRPC Greeter.
W przypadku funkcji programistycznych platformy ASP.NET Core, takich jak tworzenie projektu, w instrukcjach programu Visual Studio Code wykorzystywany jest interfejs wiersza polecenia platformy .NET. Można postępować według tych instrukcji w systemach macOS, Linux lub Windows oraz w przypadku każdego edytora kodu. Jeśli korzystasz z programu innego niż Visual Studio Code, konieczne mogą być drobne zmiany.
- Uruchom program Visual Studio 2022 i wybierz pozycję Nowy projekt.
-
W oknie dialogowym Tworzenie nowego projektu wyszukaj ciąg
gRPC
. Wybierz pozycję ASP.NET Core gRPC Service i wybierz przycisk Dalej.
-
W oknie dialogowym Konfigurowanie nowego projektu wprowadź wartość w polu
GrpcGreeter
projektu. Ważne jest, aby nazwać projekt GrpcGreeter , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
- Wybierz Dalej.
-
W oknie dialogowym Dodatkowe informacje wybierz pozycję .NET 8.0 (obsługa długoterminowa), a następnie wybierz pozycję Utwórz.
W tym samouczku założono znajomość programu VS Code. Aby uzyskać więcej informacji, zobacz Wprowadzenie do programu VS Code.
Wybierz pozycję Nowy terminal z menu Terminal , aby otworzyć zintegrowany terminal.
Przejdź do katalogu (cd
), który będzie zawierać projekt.
Uruchom następujące polecenia:
dotnet new grpc -o GrpcGreeter
code -r GrpcGreeter
Polecenie dotnet new
tworzy nową usługę gRPC w folderze GrpcGreeter .
Polecenie code
otwiera folder projektu GrpcGreeter w bieżącym wystąpieniu programu Visual Studio Code.
Program Visual Studio Code może wyświetlić okno dialogowe z pytaniem: Czy ufasz autorom plików w tym folderze?
- Jeśli ufasz wszystkim plikom w folderze nadrzędnym, wybierz pozycję Ufaj autorom wszystkich plików w folderze nadrzędnym.
- Wybierz pozycję Tak. Ufam autorom , ponieważ folder projektu zawiera pliki wygenerowane przez platformę .NET.
- Gdy program Visual Studio Code zażąda dodania zasobów do kompilowania i debugowania projektu, wybierz pozycję Tak. Jeśli program Visual Studio Code nie oferuje dodawania zasobów kompilacji i debugowania, wybierz pozycję Wyświetl>paletę poleceń i wpisz "
.NET
" w polu wyszukiwania. Z listy poleceń wybierz .NET: Generate Assets for Build and Debug
polecenie .
Program Visual Studio Code dodaje .vscode
folder z wygenerowanymi launch.json
plikami i tasks.json
.
- Uruchom program Visual Studio 2022 dla komputerów Mac i wybierz pozycję Plik>nowy projekt.
-
W oknie dialogowym Wybieranie szablonu dla nowego projektu wybierz pozycję >, a następnie wybierz pozycję Kontynuuj.
- Wybierz pozycję .NET 8.0 dla platformy docelowej i wybierz pozycję Kontynuuj.
- Nadaj projektowi nazwę GrpcGreeter. Ważne jest, aby nazwać projekt GrpcGreeter , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
- Wybierz Kontynuuj.
Naciśnij Ctrl+F5, aby uruchomić bez debugera.
Program Visual Studio wyświetla następujące okno dialogowe, gdy projekt nie jest jeszcze skonfigurowany do używania protokołu SSL:
Wybierz pozycję Tak , jeśli ufasz certyfikatowi SSL usług IIS Express.
Zostanie wyświetlone następujące okno dialogowe:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio:
- Uruchamia Kestrel serwer.
- Uruchamia przeglądarkę.
- Przechodzi do adresu
http://localhost:port
, takiego jak http://localhost:7042
.
-
port: losowo przypisany numer portu dla aplikacji.
-
localhost
: Standardowa nazwa hosta komputera lokalnego. Host lokalny obsługuje tylko żądania internetowe z komputera lokalnego.
Ufaj certyfikatowi programistycznemu HTTPS, uruchamiając następujące polecenie:
dotnet dev-certs https --trust
Powyższe polecenie wymaga zestawu .NET 9 SDK lub nowszego w systemie Linux. W przypadku systemu Linux na platformie .NET 8.0.401 SDK i starszych wersjach zobacz dokumentację dystrybucji systemu Linux, aby ufać certyfikatowi.
Poprzednie polecenie wyświetla następujące okno dialogowe, pod warunkiem, że certyfikat nie był wcześniej zaufany:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać więcej informacji, zobacz sekcję Trust the ASP.NET Core HTTPS development certificate (Ufaj certyfikatowi programistycznemu ASP.NET Core HTTPS) artykułu Wymuszanie protokołu SSL .
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Wybierz pozycję Debuguj>rozpocznij bez debugowania, aby uruchomić aplikację.
Visual Studio dla komputerów Mac:
- Uruchamia Kestrel serwer.
- Uruchamia przeglądarkę.
- Przechodzi do adresu
http://localhost:port
, takiego jak http://localhost:7042
.
-
port: losowo przypisany numer portu dla aplikacji.
-
localhost
: Standardowa nazwa hosta komputera lokalnego. Host lokalny obsługuje tylko żądania internetowe z komputera lokalnego.
Visual Studio dla komputerów Mac zostanie wyświetlone następujące okno podręczne:
Wybierz pozycję Zainstaluj i ufaj , jeśli ufasz certyfikatowi programistycznemu.
Zostanie wyświetlone następujące okno dialogowe:
Wprowadź hasło i wybierz pozycję Aktualizuj ustawienia
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać więcej informacji, zobacz Trust the ASP.NET Core HTTPS development certificate (Ufaj certyfikatowi programistycznemu ASP.NET Core HTTPS).
W programie Visual Studio naciśnij pozycję Opt-Cmd-Return , aby uruchomić bez debugera. Możesz też przejść do paska menu i przejść do pozycji Uruchom>uruchom bez debugowania.
Program Visual Studio uruchamia Kestrelprogram , uruchamia przeglądarkę i przechodzi do losowo przypisanego portu, takiego jak http://localhost:7042
.
Dzienniki pokazują, że usługa nasłuchuje na https://localhost:<port>
, gdzie <port>
jest numer portu hosta lokalnego losowo przypisany podczas tworzenia i ustawiania projektu w .Properties/launchSettings.json
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Uwaga
Szablon gRPC jest skonfigurowany do używania protokołu Transport Layer Security (TLS). Klienci gRPC muszą używać protokołu HTTPS do wywoływania serwera. Numer portu hosta lokalnego usługi gRPC jest losowo przypisywany podczas tworzenia projektu i ustawiany w pliku Properties\launchSettings.json projektu usługi gRPC.
Sprawdzanie plików projektu
Pliki projektu GrpcGreeter :
-
Protos/greet.proto
: definiuje gRPC Greeter
i służy do generowania zasobów serwera gRPC. Aby uzyskać więcej informacji, zobacz Wprowadzenie do gRPC.
-
Services
folder: zawiera implementację Greeter
usługi.
-
appSettings.json
: zawiera dane konfiguracji, takie jak protokół używany przez Kestrelprogram . Aby uzyskać więcej informacji, zobacz Konfiguracja na platformie ASP.NET Core.
-
Program.cs
, który zawiera:
Tworzenie klienta gRPC w aplikacji konsolowej platformy .NET
- Otwórz drugie wystąpienie programu Visual Studio i wybierz pozycję Nowy projekt.
-
W oknie dialogowym Tworzenie nowego projektu wybierz pozycję Aplikacja konsolowa, a następnie wybierz pozycję Dalej.
- W polu tekstowym Nazwa projektu wprowadź ciąg GrpcGreeterClient i wybierz przycisk Dalej.
-
W oknie dialogowym Dodatkowe informacje wybierz pozycję .NET 8.0 (obsługa długoterminowa), a następnie wybierz pozycję Utwórz.
Otwórz zintegrowany terminal.
Zmień katalogi (cd
) na folder projektu.
Uruchom następujące polecenia:
dotnet new console -o GrpcGreeterClient
code -r GrpcGreeterClient
Program Visual Studio Code może wyświetlić okno dialogowe z pytaniem: Czy ufasz autorom plików w tym folderze?
- Jeśli ufasz wszystkim plikom w folderze nadrzędnym, wybierz pozycję Ufaj autorom wszystkich plików w folderze nadrzędnym.
- Wybierz pozycję Tak. Ufam autorom , ponieważ folder projektu zawiera pliki wygenerowane przez platformę .NET.
- Gdy program Visual Studio Code zażąda dodania zasobów do kompilowania i debugowania projektu, wybierz pozycję Tak. Jeśli program Visual Studio Code nie oferuje dodawania zasobów kompilacji i debugowania, wybierz pozycję Wyświetl>paletę poleceń i wpisz "
.NET
" w polu wyszukiwania. Z listy poleceń wybierz .NET: Generate Assets for Build and Debug
polecenie .
Program Visual Studio Code dodaje .vscode
folder z wygenerowanymi launch.json
plikami i tasks.json
.
- W programie Visual Studio 2022 dla komputerów Mac wybierz pozycję Plik>>projekt....
-
W oknie dialogowym Wybieranie szablonu dla nowego projektu wybierz pozycję Aplikacja konsoli aplikacji internetowej i konsoli>>, a następnie wybierz pozycję Kontynuuj.
- Wybierz pozycję .NET 8.0 dla platformy docelowej, a następnie wybierz pozycję Kontynuuj.
- Nadaj projektowi nazwę GrpcGreeterClient. Ważne jest, aby nazwać projekt GrpcGreeterClient , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
- Wybierz Kontynuuj.
Dodawanie wymaganych pakietów NuGet
Projekt klienta gRPC wymaga następujących pakietów NuGet:
Zainstaluj pakiety przy użyciu konsoli Menedżer pakietów (PMC) lub zarządzania pakietami NuGet.
Opcja PMC instalowania pakietów
W programie Visual Studio wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola
W oknie Menedżer pakietów Konsola uruchom polecenie cd GrpcGreeterClient
, aby zmienić katalogi na folder zawierający GrpcGreeterClient.csproj
pliki.
Uruchom następujące polecenia:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Opcja Zarządzaj pakietami NuGet w celu zainstalowania pakietów
- Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań> Zarządzaj pakietami NuGet.
- Wybierz kartę Przeglądaj.
- Wprowadź ciąg Grpc.Net.Client w polu wyszukiwania.
-
Wybierz pakiet Grpc.Net.Client z karty Przeglądaj i wybierz pozycję Zainstaluj.
- Powtórz dla
Google.Protobuf
i Grpc.Tools
.
Uruchom następujące polecenia ze zintegrowanego terminalu:
dotnet add GrpcGreeterClient.csproj package Grpc.Net.Client
dotnet add GrpcGreeterClient.csproj package Google.Protobuf
dotnet add GrpcGreeterClient.csproj package Grpc.Tools
- Kliknij prawym przyciskiem myszy projekt GrpcGreeterClient w okienku rozwiązania i wybierz polecenie Zarządzaj pakietami NuGet.
- Wprowadź ciąg Grpc.Net.Client w polu wyszukiwania.
-
Wybierz pakiet Grpc.Net.Client w okienku wyników i wybierz pozycję Dodaj pakiet.
- W obszarze Wybieranie projektów wybierz przycisk OK.
-
Jeśli zostanie wyświetlone okno dialogowe Akceptacja licencji, wybierz pozycję Zaakceptuj, jeśli zgadzasz się na postanowienia licencyjne.
- Powtórz dla
Google.Protobuf
i Grpc.Tools
.
Utwórz folder Protos w projekcie klienta gRPC.
Skopiuj plik Protos\greet.proto z usługi gRPC Greeter do folderu Protos w projekcie klienta gRPC.
Zaktualizuj przestrzeń nazw wewnątrz greet.proto
pliku do przestrzeni nazw projektu:
option csharp_namespace = "GrpcGreeterClient";
GrpcGreeterClient.csproj
Edytuj plik projektu:
Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj plik projektu.
GrpcGreeterClient.csproj
Wybierz plik.
Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj plik projektu.
Tworzenie klienta powitania
- Skompiluj projekt klienta, aby utworzyć typy w
GrpcGreeterClient
przestrzeni nazw.
Uwaga
Typy GrpcGreeterClient
są generowane automatycznie przez proces kompilacji. Pakiet narzędzi Grpc.Tools generuje następujące pliki na podstawie pliku greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: kod buforu protokołu, który wypełnia, serializuje i pobiera typy komunikatów żądania i odpowiedzi.
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: zawiera wygenerowane klasy klienta.
Aby uzyskać więcej informacji na temat zasobów języka C# generowanych automatycznie przez narzędzia Grpc.Tools, zobacz usługi gRPC z elementami C#: Wygenerowane zasoby języka C#.
Zaktualizuj plik klienta Program.cs
gRPC przy użyciu następującego kodu.
using System.Threading.Tasks;
using Grpc.Net.Client;
using GrpcGreeterClient;
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
W poprzednim wyróżnionym kodzie zastąp 7042
numer portu localhost numerem HTTPS
portu określonym w Properties/launchSettings.json
projekcie GrpcGreeter
usługi.
Program.cs
zawiera punkt wejścia i logikę klienta gRPC.
Klient greeter jest tworzony przez:
- Utworzenie wystąpienia zawierającego
GrpcChannel
informacje dotyczące tworzenia połączenia z usługą gRPC.
- Za pomocą polecenia
GrpcChannel
, aby skonstruować klienta Greeter:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Klient Greeter wywołuje metodę asynchroniczną SayHello
. Zostanie wyświetlony wynik SayHello
wywołania:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Testowanie klienta gRPC za pomocą usługi gRPC Greeter
Zaktualizuj plik, appsettings.Development.json
dodając następujące wyróżnione wiersze:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- W usłudze Greeter naciśnij
Ctrl+F5
, aby uruchomić serwer bez debugera.
- W projekcie
GrpcGreeterClient
naciśnij Ctrl+F5
, aby uruchomić klienta bez debugera.
- Uruchom usługę Greeter.
- Uruchom klienta.
- Uruchom usługę Greeter.
- Uruchom klienta.
Klient wysyła powitanie do usługi z komunikatem zawierającym jego nazwę GreeterClient. Usługa wysyła komunikat "Hello GreeterClient" jako odpowiedź. Odpowiedź "Hello GreeterClient" jest wyświetlana w wierszu polecenia:
Greeting: Hello GreeterClient
Press any key to exit...
Usługa gRPC rejestruje szczegóły pomyślnego wywołania w dziennikach zapisanych w wierszu polecenia:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Uwaga
Kod w tym artykule wymaga certyfikatu dewelopera ASP.NET Core HTTPS w celu zabezpieczenia usługi gRPC. Jeśli klient gRPC platformy .NET zakończy się niepowodzeniem z komunikatem The remote certificate is invalid according to the validation procedure.
lub The SSL connection could not be established.
, certyfikat dewelopera nie jest zaufany. Aby rozwiązać ten problem, zobacz Wywoływanie usługi gRPC z niezaufanym/nieprawidłowym certyfikatem.
W tym samouczku pokazano, jak utworzyć klienta gRPC platformy .NET Core i serwera gRPC platformy ASP.NET Core. Na końcu będziesz mieć klienta gRPC, który komunikuje się z usługą gRPC Greeter.
W tym samouczku zostały wykonane następujące czynności:
- Utwórz serwer gRPC.
- Utwórz klienta gRPC.
- Przetestuj klienta gRPC za pomocą usługi gRPC Greeter.
W przypadku funkcji programistycznych platformy ASP.NET Core, takich jak tworzenie projektu, w instrukcjach programu Visual Studio Code wykorzystywany jest interfejs wiersza polecenia platformy .NET. Można postępować według tych instrukcji w systemach macOS, Linux lub Windows oraz w przypadku każdego edytora kodu. Jeśli korzystasz z programu innego niż Visual Studio Code, konieczne mogą być drobne zmiany.
- Uruchom program Visual Studio 2022 i wybierz pozycję Utwórz nowy projekt.
-
W oknie dialogowym Tworzenie nowego projektu wyszukaj ciąg
gRPC
. Wybierz pozycję ASP.NET Core gRPC Service i wybierz przycisk Dalej.
-
W oknie dialogowym Konfigurowanie nowego projektu wprowadź wartość w polu
GrpcGreeter
projektu. Ważne jest, aby nazwać projekt GrpcGreeter , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
- Wybierz Dalej.
-
W oknie dialogowym Dodatkowe informacje wybierz pozycję .NET 6.0 (obsługa długoterminowa), a następnie wybierz pozycję Utwórz.
W tym samouczku założono znajomość programu VS Code. Aby uzyskać więcej informacji, zobacz Wprowadzenie do programu VS Code.
Wybierz pozycję Nowy terminal z menu Terminal , aby otworzyć zintegrowany terminal.
Przejdź do katalogu (cd
), który będzie zawierać projekt.
Uruchom następujące polecenia:
dotnet new grpc -o GrpcGreeter
code -r GrpcGreeter
Polecenie dotnet new
tworzy nową usługę gRPC w folderze GrpcGreeter .
Polecenie code
otwiera folder projektu GrpcGreeter w bieżącym wystąpieniu programu Visual Studio Code.
Program Visual Studio Code może wyświetlić okno dialogowe z pytaniem: Czy ufasz autorom plików w tym folderze?
- Jeśli ufasz wszystkim plikom w folderze nadrzędnym, wybierz pozycję Ufaj autorom wszystkich plików w folderze nadrzędnym.
- Wybierz pozycję Tak. Ufam autorom , ponieważ folder projektu zawiera pliki wygenerowane przez platformę .NET.
- Gdy program Visual Studio Code zażąda dodania zasobów do kompilowania i debugowania projektu, wybierz pozycję Tak. Jeśli program Visual Studio Code nie oferuje dodawania zasobów kompilacji i debugowania, wybierz pozycję Wyświetl>paletę poleceń i wpisz "
.NET
" w polu wyszukiwania. Z listy poleceń wybierz .NET: Generate Assets for Build and Debug
polecenie .
Program Visual Studio Code dodaje .vscode
folder z wygenerowanymi launch.json
plikami i tasks.json
.
- Uruchom Visual Studio dla komputerów Mac i wybierz pozycję Plik>nowy projekt.
-
W oknie dialogowym Wybieranie szablonu dla nowego projektu wybierz pozycję >, a następnie wybierz pozycję Kontynuuj.
- Wybierz pozycję .NET 6.0 dla platformy docelowej i wybierz pozycję Kontynuuj.
- Nadaj projektowi nazwę GrpcGreeter. Ważne jest, aby nazwać projekt GrpcGreeter , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
- Wybierz Kontynuuj.
Naciśnij Ctrl+F5, aby uruchomić bez debugera.
Program Visual Studio wyświetla następujące okno dialogowe, gdy projekt nie jest jeszcze skonfigurowany do używania protokołu SSL:
Wybierz pozycję Tak , jeśli ufasz certyfikatowi SSL usług IIS Express.
Zostanie wyświetlone następujące okno dialogowe:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio:
- Uruchamia Kestrel serwer.
- Uruchamia przeglądarkę.
- Przechodzi do adresu
http://localhost:port
, takiego jak http://localhost:7042
.
-
port: losowo przypisany numer portu dla aplikacji.
-
localhost
: Standardowa nazwa hosta komputera lokalnego. Host lokalny obsługuje tylko żądania internetowe z komputera lokalnego.
Ufaj certyfikatowi programistycznemu HTTPS, uruchamiając następujące polecenie:
dotnet dev-certs https --trust
Powyższe polecenie wymaga zestawu .NET 9 SDK lub nowszego w systemie Linux. W przypadku systemu Linux na platformie .NET 8.0.401 SDK i starszych wersjach zobacz dokumentację dystrybucji systemu Linux, aby ufać certyfikatowi.
Poprzednie polecenie wyświetla następujące okno dialogowe, pod warunkiem, że certyfikat nie był wcześniej zaufany:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać więcej informacji, zobacz sekcję Trust the ASP.NET Core HTTPS development certificate (Ufaj certyfikatowi programistycznemu ASP.NET Core HTTPS) artykułu Wymuszanie protokołu SSL .
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Wybierz pozycję Debuguj>rozpocznij bez debugowania, aby uruchomić aplikację.
Visual Studio dla komputerów Mac:
- Uruchamia Kestrel serwer.
- Uruchamia przeglądarkę.
- Przechodzi do adresu
http://localhost:port
, takiego jak http://localhost:7042
.
-
port: losowo przypisany numer portu dla aplikacji.
-
localhost
: Standardowa nazwa hosta komputera lokalnego. Host lokalny obsługuje tylko żądania internetowe z komputera lokalnego.
Visual Studio dla komputerów Mac zostanie wyświetlone następujące okno podręczne:
Wybierz pozycję Zainstaluj i ufaj , jeśli ufasz certyfikatowi programistycznemu.
Zostanie wyświetlone następujące okno dialogowe:
Wprowadź hasło i wybierz pozycję Aktualizuj ustawienia
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać więcej informacji, zobacz Trust the ASP.NET Core HTTPS development certificate (Ufaj certyfikatowi programistycznemu ASP.NET Core HTTPS).
W programie Visual Studio naciśnij pozycję Opt-Cmd-Return , aby uruchomić bez debugera. Możesz też przejść do paska menu i przejść do pozycji Uruchom>uruchom bez debugowania.
Program Visual Studio uruchamia Kestrelprogram , uruchamia przeglądarkę i przechodzi do losowo przypisanego portu, takiego jak http://localhost:7042
.
Dzienniki pokazują, że usługa nasłuchuje na https://localhost:<port>
, gdzie <port>
jest numer portu hosta lokalnego losowo przypisany podczas tworzenia i ustawiania projektu w .Properties/launchSettings.json
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Uwaga
Szablon gRPC jest skonfigurowany do używania protokołu Transport Layer Security (TLS). Klienci gRPC muszą używać protokołu HTTPS do wywoływania serwera. Numer portu hosta lokalnego usługi gRPC jest losowo przypisywany podczas tworzenia projektu i ustawiany w pliku Properties\launchSettings.json projektu usługi gRPC.
System macOS nie obsługuje ASP.NET Core gRPC z protokołem TLS. Do pomyślnego uruchomienia usług gRPC w systemie macOS jest wymagana dodatkowa konfiguracja. Aby uzyskać więcej informacji, zobacz Nie można uruchomić aplikacji gRPC platformy ASP.NET Core w systemie macOS.
Sprawdzanie plików projektu
Pliki projektu GrpcGreeter :
-
Protos/greet.proto
: definiuje gRPC Greeter
i służy do generowania zasobów serwera gRPC. Aby uzyskać więcej informacji, zobacz Wprowadzenie do gRPC.
-
Services
folder: zawiera implementację Greeter
usługi.
-
appSettings.json
: zawiera dane konfiguracji, takie jak protokół używany przez Kestrelprogram . Aby uzyskać więcej informacji, zobacz Konfiguracja na platformie ASP.NET Core.
-
Program.cs
, który zawiera:
Tworzenie klienta gRPC w aplikacji konsolowej platformy .NET
- Otwórz drugie wystąpienie programu Visual Studio i wybierz pozycję Utwórz nowy projekt.
-
W oknie dialogowym Tworzenie nowego projektu wybierz pozycję Aplikacja konsolowa, a następnie wybierz pozycję Dalej.
- W polu tekstowym Nazwa projektu wprowadź ciąg GrpcGreeterClient i wybierz przycisk Dalej.
-
W oknie dialogowym Dodatkowe informacje wybierz pozycję .NET 6.0 (obsługa długoterminowa), a następnie wybierz pozycję Utwórz.
Otwórz zintegrowany terminal.
Zmień katalogi (cd
) na folder projektu.
Uruchom następujące polecenia:
dotnet new console -o GrpcGreeterClient
code -r GrpcGreeterClient
Program Visual Studio Code może wyświetlić okno dialogowe z pytaniem: Czy ufasz autorom plików w tym folderze?
- Jeśli ufasz wszystkim plikom w folderze nadrzędnym, wybierz pozycję Ufaj autorom wszystkich plików w folderze nadrzędnym.
- Wybierz pozycję Tak. Ufam autorom , ponieważ folder projektu zawiera pliki wygenerowane przez platformę .NET.
- Gdy program Visual Studio Code zażąda dodania zasobów do kompilowania i debugowania projektu, wybierz pozycję Tak. Jeśli program Visual Studio Code nie oferuje dodawania zasobów kompilacji i debugowania, wybierz pozycję Wyświetl>paletę poleceń i wpisz "
.NET
" w polu wyszukiwania. Z listy poleceń wybierz .NET: Generate Assets for Build and Debug
polecenie .
Program Visual Studio Code dodaje .vscode
folder z wygenerowanymi launch.json
plikami i tasks.json
.
Dodawanie wymaganych pakietów NuGet
Projekt klienta gRPC wymaga następujących pakietów NuGet:
Zainstaluj pakiety przy użyciu konsoli Menedżer pakietów (PMC) lub zarządzania pakietami NuGet.
Opcja PMC instalowania pakietów
W programie Visual Studio wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola
W oknie Menedżer pakietów Konsola uruchom polecenie cd GrpcGreeterClient
, aby zmienić katalogi na folder zawierający GrpcGreeterClient.csproj
pliki.
Uruchom następujące polecenia:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Opcja Zarządzaj pakietami NuGet w celu zainstalowania pakietów
- Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań> Zarządzaj pakietami NuGet.
- Wybierz kartę Przeglądaj.
- Wprowadź ciąg Grpc.Net.Client w polu wyszukiwania.
-
Wybierz pakiet Grpc.Net.Client z karty Przeglądaj i wybierz pozycję Zainstaluj.
- Powtórz dla
Google.Protobuf
i Grpc.Tools
.
Uruchom następujące polecenia ze zintegrowanego terminalu:
dotnet add GrpcGreeterClient.csproj package Grpc.Net.Client
dotnet add GrpcGreeterClient.csproj package Google.Protobuf
dotnet add GrpcGreeterClient.csproj package Grpc.Tools
- Kliknij prawym przyciskiem myszy projekt GrpcGreeterClient w okienku rozwiązania i wybierz polecenie Zarządzaj pakietami NuGet.
- Wprowadź ciąg Grpc.Net.Client w polu wyszukiwania.
-
Wybierz pakiet Grpc.Net.Client w okienku wyników i wybierz pozycję Dodaj pakiet.
- W obszarze Wybieranie projektów wybierz przycisk OK.
-
Jeśli zostanie wyświetlone okno dialogowe Akceptacja licencji, wybierz pozycję Zaakceptuj, jeśli zgadzasz się na postanowienia licencyjne.
- Powtórz dla
Google.Protobuf
i Grpc.Tools
.
Utwórz folder Protos w projekcie klienta gRPC.
Skopiuj plik Protos\greet.proto z usługi gRPC Greeter do folderu Protos w projekcie klienta gRPC.
Zaktualizuj przestrzeń nazw wewnątrz greet.proto
pliku do przestrzeni nazw projektu:
option csharp_namespace = "GrpcGreeterClient";
GrpcGreeterClient.csproj
Edytuj plik projektu:
Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj plik projektu.
GrpcGreeterClient.csproj
Wybierz plik.
Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj plik projektu.
Tworzenie klienta powitania
- Skompiluj projekt klienta, aby utworzyć typy w
GrpcGreeterClient
przestrzeni nazw.
Uwaga
Typy GrpcGreeterClient
są generowane automatycznie przez proces kompilacji. Pakiet narzędzi Grpc.Tools generuje następujące pliki na podstawie pliku greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: kod buforu protokołu, który wypełnia, serializuje i pobiera typy komunikatów żądania i odpowiedzi.
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: zawiera wygenerowane klasy klienta.
Aby uzyskać więcej informacji na temat zasobów języka C# generowanych automatycznie przez narzędzia Grpc.Tools, zobacz usługi gRPC z elementami C#: Wygenerowane zasoby języka C#.
Zaktualizuj plik klienta Program.cs
gRPC przy użyciu następującego kodu.
using System.Threading.Tasks;
using Grpc.Net.Client;
using GrpcGreeterClient;
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
W poprzednim wyróżnionym kodzie zastąp 7042
numer portu localhost numerem HTTPS
portu określonym w Properties/launchSettings.json
projekcie GrpcGreeter
usługi.
Program.cs
zawiera punkt wejścia i logikę klienta gRPC.
Klient greeter jest tworzony przez:
- Utworzenie wystąpienia zawierającego
GrpcChannel
informacje dotyczące tworzenia połączenia z usługą gRPC.
- Za pomocą polecenia
GrpcChannel
, aby skonstruować klienta Greeter:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Klient Greeter wywołuje metodę asynchroniczną SayHello
. Zostanie wyświetlony wynik SayHello
wywołania:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Testowanie klienta gRPC za pomocą usługi gRPC Greeter
Zaktualizuj plik, appsettings.Development.json
dodając następujące wyróżnione wiersze:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- W usłudze Greeter naciśnij
Ctrl+F5
, aby uruchomić serwer bez debugera.
- W projekcie
GrpcGreeterClient
naciśnij Ctrl+F5
, aby uruchomić klienta bez debugera.
- Uruchom usługę Greeter.
- Uruchom klienta.
Ze względu na wcześniej wymieniony problem HTTP/2 TLS w systemie macOS obejście, należy zaktualizować adres kanału w kliencie, aby dopasować port w launchSetting.json usługi GrpcGreeter "http://localhost:5000". Zaktualizuj wiersz 13 do GrpcGreeterClient/Program.cs
odczytu:
using var channel = GrpcChannel.ForAddress("http://localhost:5000");
Uruchom usługę Greeter.
Uruchom klienta.
Klient wysyła powitanie do usługi z komunikatem zawierającym jego nazwę GreeterClient. Usługa wysyła komunikat "Hello GreeterClient" jako odpowiedź. Odpowiedź "Hello GreeterClient" jest wyświetlana w wierszu polecenia:
Greeting: Hello GreeterClient
Press any key to exit...
Usługa gRPC rejestruje szczegóły pomyślnego wywołania w dziennikach zapisanych w wierszu polecenia:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Uwaga
Kod w tym artykule wymaga certyfikatu dewelopera ASP.NET Core HTTPS w celu zabezpieczenia usługi gRPC. Jeśli klient gRPC platformy .NET zakończy się niepowodzeniem z komunikatem The remote certificate is invalid according to the validation procedure.
lub The SSL connection could not be established.
, certyfikat dewelopera nie jest zaufany. Aby rozwiązać ten problem, zobacz Wywoływanie usługi gRPC z niezaufanym/nieprawidłowym certyfikatem.
W tym samouczku pokazano, jak utworzyć klienta gRPC platformy .NET Core i serwera gRPC platformy ASP.NET Core. Na końcu będziesz mieć klienta gRPC, który komunikuje się z usługą gRPC Greeter.
W tym samouczku zostały wykonane następujące czynności:
- Utwórz serwer gRPC.
- Utwórz klienta gRPC.
- Przetestuj klienta gRPC za pomocą usługi gRPC Greeter.
W przypadku funkcji programistycznych platformy ASP.NET Core, takich jak tworzenie projektu, w instrukcjach programu Visual Studio Code wykorzystywany jest interfejs wiersza polecenia platformy .NET. Można postępować według tych instrukcji w systemach macOS, Linux lub Windows oraz w przypadku każdego edytora kodu. Jeśli korzystasz z programu innego niż Visual Studio Code, konieczne mogą być drobne zmiany.
- Uruchom program Visual Studio 2022 i wybierz pozycję Utwórz nowy projekt.
-
W oknie dialogowym Tworzenie nowego projektu wyszukaj ciąg
gRPC
. Wybierz pozycję ASP.NET Core gRPC Service i wybierz przycisk Dalej.
-
W oknie dialogowym Konfigurowanie nowego projektu wprowadź wartość w polu
GrpcGreeter
projektu. Ważne jest, aby nazwać projekt GrpcGreeter , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
- Wybierz Dalej.
-
W oknie dialogowym Dodatkowe informacje wybierz pozycję .NET 6.0 (obsługa długoterminowa), a następnie wybierz pozycję Utwórz.
W tym samouczku założono znajomość programu VS Code. Aby uzyskać więcej informacji, zobacz Wprowadzenie do programu VS Code.
Wybierz pozycję Nowy terminal z menu Terminal , aby otworzyć zintegrowany terminal.
Przejdź do katalogu (cd
), który będzie zawierać projekt.
Uruchom następujące polecenia:
dotnet new grpc -o GrpcGreeter
code -r GrpcGreeter
Polecenie dotnet new
tworzy nową usługę gRPC w folderze GrpcGreeter .
Polecenie code
otwiera folder projektu GrpcGreeter w bieżącym wystąpieniu programu Visual Studio Code.
Program Visual Studio Code może wyświetlić okno dialogowe z pytaniem: Czy ufasz autorom plików w tym folderze?
- Jeśli ufasz wszystkim plikom w folderze nadrzędnym, wybierz pozycję Ufaj autorom wszystkich plików w folderze nadrzędnym.
- Wybierz pozycję Tak. Ufam autorom , ponieważ folder projektu zawiera pliki wygenerowane przez platformę .NET.
- Gdy program Visual Studio Code zażąda dodania zasobów do kompilowania i debugowania projektu, wybierz pozycję Tak. Jeśli program Visual Studio Code nie oferuje dodawania zasobów kompilacji i debugowania, wybierz pozycję Wyświetl>paletę poleceń i wpisz "
.NET
" w polu wyszukiwania. Z listy poleceń wybierz .NET: Generate Assets for Build and Debug
polecenie .
Program Visual Studio Code dodaje .vscode
folder z wygenerowanymi launch.json
plikami i tasks.json
.
- Uruchom Visual Studio dla komputerów Mac i wybierz pozycję Plik>nowy projekt.
-
W oknie dialogowym Wybieranie szablonu dla nowego projektu wybierz pozycję >, a następnie wybierz pozycję Kontynuuj.
- Wybierz pozycję .NET 6.0 dla platformy docelowej i wybierz pozycję Kontynuuj.
- Nadaj projektowi nazwę GrpcGreeter. Ważne jest, aby nazwać projekt GrpcGreeter , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
- Wybierz Kontynuuj.
Naciśnij Ctrl+F5, aby uruchomić bez debugera.
Program Visual Studio wyświetla następujące okno dialogowe, gdy projekt nie jest jeszcze skonfigurowany do używania protokołu SSL:
Wybierz pozycję Tak , jeśli ufasz certyfikatowi SSL usług IIS Express.
Zostanie wyświetlone następujące okno dialogowe:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Visual Studio:
- Uruchamia Kestrel serwer.
- Uruchamia przeglądarkę.
- Przechodzi do adresu
http://localhost:port
, takiego jak http://localhost:7042
.
-
port: losowo przypisany numer portu dla aplikacji.
-
localhost
: Standardowa nazwa hosta komputera lokalnego. Host lokalny obsługuje tylko żądania internetowe z komputera lokalnego.
Ufaj certyfikatowi programistycznemu HTTPS, uruchamiając następujące polecenie:
dotnet dev-certs https --trust
Powyższe polecenie wymaga zestawu .NET 9 SDK lub nowszego w systemie Linux. W przypadku systemu Linux na platformie .NET 8.0.401 SDK i starszych wersjach zobacz dokumentację dystrybucji systemu Linux, aby ufać certyfikatowi.
Poprzednie polecenie wyświetla następujące okno dialogowe, pod warunkiem, że certyfikat nie był wcześniej zaufany:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać więcej informacji, zobacz sekcję Trust the ASP.NET Core HTTPS development certificate (Ufaj certyfikatowi programistycznemu ASP.NET Core HTTPS) artykułu Wymuszanie protokołu SSL .
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Wybierz pozycję Debuguj>rozpocznij bez debugowania, aby uruchomić aplikację.
Visual Studio dla komputerów Mac:
- Uruchamia Kestrel serwer.
- Uruchamia przeglądarkę.
- Przechodzi do adresu
http://localhost:port
, takiego jak http://localhost:7042
.
-
port: losowo przypisany numer portu dla aplikacji.
-
localhost
: Standardowa nazwa hosta komputera lokalnego. Host lokalny obsługuje tylko żądania internetowe z komputera lokalnego.
Visual Studio dla komputerów Mac zostanie wyświetlone następujące okno podręczne:
Wybierz pozycję Zainstaluj i ufaj , jeśli ufasz certyfikatowi programistycznemu.
Zostanie wyświetlone następujące okno dialogowe:
Wprowadź hasło i wybierz pozycję Aktualizuj ustawienia
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać więcej informacji, zobacz Trust the ASP.NET Core HTTPS development certificate (Ufaj certyfikatowi programistycznemu ASP.NET Core HTTPS).
W programie Visual Studio naciśnij pozycję Opt-Cmd-Return , aby uruchomić bez debugera. Możesz też przejść do paska menu i przejść do pozycji Uruchom>uruchom bez debugowania.
Program Visual Studio uruchamia Kestrelprogram , uruchamia przeglądarkę i przechodzi do losowo przypisanego portu, takiego jak http://localhost:7042
.
Dzienniki pokazują, że usługa nasłuchuje na https://localhost:<port>
, gdzie <port>
jest numer portu hosta lokalnego losowo przypisany podczas tworzenia i ustawiania projektu w .Properties/launchSettings.json
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Uwaga
Szablon gRPC jest skonfigurowany do używania protokołu Transport Layer Security (TLS). Klienci gRPC muszą używać protokołu HTTPS do wywoływania serwera. Numer portu hosta lokalnego usługi gRPC jest losowo przypisywany podczas tworzenia projektu i ustawiany w pliku Properties\launchSettings.json projektu usługi gRPC.
System macOS nie obsługuje ASP.NET Core gRPC z protokołem TLS. Do pomyślnego uruchomienia usług gRPC w systemie macOS jest wymagana dodatkowa konfiguracja. Aby uzyskać więcej informacji, zobacz Nie można uruchomić aplikacji gRPC platformy ASP.NET Core w systemie macOS.
Sprawdzanie plików projektu
Pliki projektu GrpcGreeter :
-
Protos/greet.proto
: definiuje gRPC Greeter
i służy do generowania zasobów serwera gRPC. Aby uzyskać więcej informacji, zobacz Wprowadzenie do gRPC.
-
Services
folder: zawiera implementację Greeter
usługi.
-
appSettings.json
: zawiera dane konfiguracji, takie jak protokół używany przez Kestrelprogram . Aby uzyskać więcej informacji, zobacz Konfiguracja na platformie ASP.NET Core.
-
Program.cs
, który zawiera:
Tworzenie klienta gRPC w aplikacji konsolowej platformy .NET
- Otwórz drugie wystąpienie programu Visual Studio i wybierz pozycję Utwórz nowy projekt.
-
W oknie dialogowym Tworzenie nowego projektu wybierz pozycję Aplikacja konsolowa, a następnie wybierz pozycję Dalej.
- W polu tekstowym Nazwa projektu wprowadź ciąg GrpcGreeterClient i wybierz przycisk Dalej.
-
W oknie dialogowym Dodatkowe informacje wybierz pozycję .NET 6.0 (obsługa długoterminowa), a następnie wybierz pozycję Utwórz.
Otwórz zintegrowany terminal.
Zmień katalogi (cd
) na folder projektu.
Uruchom następujące polecenia:
dotnet new console -o GrpcGreeterClient
code -r GrpcGreeterClient
Program Visual Studio Code może wyświetlić okno dialogowe z pytaniem: Czy ufasz autorom plików w tym folderze?
- Jeśli ufasz wszystkim plikom w folderze nadrzędnym, wybierz pozycję Ufaj autorom wszystkich plików w folderze nadrzędnym.
- Wybierz pozycję Tak. Ufam autorom , ponieważ folder projektu zawiera pliki wygenerowane przez platformę .NET.
- Gdy program Visual Studio Code zażąda dodania zasobów do kompilowania i debugowania projektu, wybierz pozycję Tak. Jeśli program Visual Studio Code nie oferuje dodawania zasobów kompilacji i debugowania, wybierz pozycję Wyświetl>paletę poleceń i wpisz "
.NET
" w polu wyszukiwania. Z listy poleceń wybierz .NET: Generate Assets for Build and Debug
polecenie .
Program Visual Studio Code dodaje .vscode
folder z wygenerowanymi launch.json
plikami i tasks.json
.
Dodawanie wymaganych pakietów NuGet
Projekt klienta gRPC wymaga następujących pakietów NuGet:
Zainstaluj pakiety przy użyciu konsoli Menedżer pakietów (PMC) lub zarządzania pakietami NuGet.
Opcja PMC instalowania pakietów
W programie Visual Studio wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola
W oknie Menedżer pakietów Konsola uruchom polecenie cd GrpcGreeterClient
, aby zmienić katalogi na folder zawierający GrpcGreeterClient.csproj
pliki.
Uruchom następujące polecenia:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Opcja Zarządzaj pakietami NuGet w celu zainstalowania pakietów
- Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań> Zarządzaj pakietami NuGet.
- Wybierz kartę Przeglądaj.
- Wprowadź ciąg Grpc.Net.Client w polu wyszukiwania.
-
Wybierz pakiet Grpc.Net.Client z karty Przeglądaj i wybierz pozycję Zainstaluj.
- Powtórz dla
Google.Protobuf
i Grpc.Tools
.
Uruchom następujące polecenia ze zintegrowanego terminalu:
dotnet add GrpcGreeterClient.csproj package Grpc.Net.Client
dotnet add GrpcGreeterClient.csproj package Google.Protobuf
dotnet add GrpcGreeterClient.csproj package Grpc.Tools
- Kliknij prawym przyciskiem myszy projekt GrpcGreeterClient w okienku rozwiązania i wybierz polecenie Zarządzaj pakietami NuGet.
- Wprowadź ciąg Grpc.Net.Client w polu wyszukiwania.
-
Wybierz pakiet Grpc.Net.Client w okienku wyników i wybierz pozycję Dodaj pakiet.
- W obszarze Wybieranie projektów wybierz przycisk OK.
-
Jeśli zostanie wyświetlone okno dialogowe Akceptacja licencji, wybierz pozycję Zaakceptuj, jeśli zgadzasz się na postanowienia licencyjne.
- Powtórz dla
Google.Protobuf
i Grpc.Tools
.
Utwórz folder Protos w projekcie klienta gRPC.
Skopiuj plik Protos\greet.proto z usługi gRPC Greeter do folderu Protos w projekcie klienta gRPC.
Zaktualizuj przestrzeń nazw wewnątrz greet.proto
pliku do przestrzeni nazw projektu:
option csharp_namespace = "GrpcGreeterClient";
GrpcGreeterClient.csproj
Edytuj plik projektu:
Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj plik projektu.
GrpcGreeterClient.csproj
Wybierz plik.
Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj plik projektu.
Tworzenie klienta powitania
- Skompiluj projekt klienta, aby utworzyć typy w
GrpcGreeterClient
przestrzeni nazw.
Uwaga
Typy GrpcGreeterClient
są generowane automatycznie przez proces kompilacji. Pakiet narzędzi Grpc.Tools generuje następujące pliki na podstawie pliku greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: kod buforu protokołu, który wypełnia, serializuje i pobiera typy komunikatów żądania i odpowiedzi.
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: zawiera wygenerowane klasy klienta.
Aby uzyskać więcej informacji na temat zasobów języka C# generowanych automatycznie przez narzędzia Grpc.Tools, zobacz usługi gRPC z elementami C#: Wygenerowane zasoby języka C#.
Zaktualizuj plik klienta Program.cs
gRPC przy użyciu następującego kodu.
using System.Threading.Tasks;
using Grpc.Net.Client;
using GrpcGreeterClient;
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
W poprzednim wyróżnionym kodzie zastąp 7042
numer portu localhost numerem HTTPS
portu określonym w Properties/launchSettings.json
projekcie GrpcGreeter
usługi.
Program.cs
zawiera punkt wejścia i logikę klienta gRPC.
Klient greeter jest tworzony przez:
- Utworzenie wystąpienia zawierającego
GrpcChannel
informacje dotyczące tworzenia połączenia z usługą gRPC.
- Za pomocą polecenia
GrpcChannel
, aby skonstruować klienta Greeter:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Klient Greeter wywołuje metodę asynchroniczną SayHello
. Zostanie wyświetlony wynik SayHello
wywołania:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Testowanie klienta gRPC za pomocą usługi gRPC Greeter
- W usłudze Greeter naciśnij
Ctrl+F5
, aby uruchomić serwer bez debugera.
- W projekcie
GrpcGreeterClient
naciśnij Ctrl+F5
, aby uruchomić klienta bez debugera.
- Uruchom usługę Greeter.
- Uruchom klienta.
Ze względu na wcześniej wymieniony problem HTTP/2 TLS w systemie macOS obejście, należy zaktualizować adres kanału w kliencie, aby dopasować port w launchSetting.json usługi GrpcGreeter "http://localhost:5000". Zaktualizuj wiersz 13 do GrpcGreeterClient/Program.cs
odczytu:
using var channel = GrpcChannel.ForAddress("http://localhost:5000");
Uruchom usługę Greeter.
Uruchom klienta.
Klient wysyła powitanie do usługi z komunikatem zawierającym jego nazwę GreeterClient. Usługa wysyła komunikat "Hello GreeterClient" jako odpowiedź. Odpowiedź "Hello GreeterClient" jest wyświetlana w wierszu polecenia:
Greeting: Hello GreeterClient
Press any key to exit...
Usługa gRPC rejestruje szczegóły pomyślnego wywołania w dziennikach zapisanych w wierszu polecenia:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Zaktualizuj plik, appsettings.Development.json
dodając następujące wiersze:
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
Uwaga
Kod w tym artykule wymaga certyfikatu dewelopera ASP.NET Core HTTPS w celu zabezpieczenia usługi gRPC. Jeśli klient gRPC platformy .NET zakończy się niepowodzeniem z komunikatem The remote certificate is invalid according to the validation procedure.
lub The SSL connection could not be established.
, certyfikat dewelopera nie jest zaufany. Aby rozwiązać ten problem, zobacz Wywoływanie usługi gRPC z niezaufanym/nieprawidłowym certyfikatem.
W tym samouczku pokazano, jak utworzyć klienta gRPC platformy .NET Core i serwera gRPC platformy ASP.NET Core.
Na końcu będziesz mieć klienta gRPC, który komunikuje się z usługą gRPC Greeter.
Wyświetl lub pobierz przykładowy kod (jak pobrać).
W tym samouczku zostały wykonane następujące czynności:
- Utwórz serwer gRPC.
- Utwórz klienta gRPC.
- Przetestuj klienta gRPC za pomocą usługi gRPC Greeter.
W przypadku funkcji programistycznych platformy ASP.NET Core, takich jak tworzenie projektu, w instrukcjach programu Visual Studio Code wykorzystywany jest interfejs wiersza polecenia platformy .NET. Można postępować według tych instrukcji w systemach macOS, Linux lub Windows oraz w przypadku każdego edytora kodu. Jeśli korzystasz z programu innego niż Visual Studio Code, konieczne mogą być drobne zmiany.
- Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt.
-
W oknie dialogowym Tworzenie nowego projektu wybierz pozycję gRPC Service i wybierz przycisk Dalej.
-
W oknie dialogowym Konfigurowanie nowego projektu wprowadź wartość w polu
GrpcGreeter
projektu. Ważne jest, aby nazwać projekt GrpcGreeter , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
- Wybierz Dalej.
-
W oknie dialogowym Dodatkowe informacje wybierz pozycję .NET 5.0 na liście rozwijanej Platforma docelowa.
- Wybierz pozycję Utwórz.
W tym samouczku założono znajomość programu VS Code. Aby uzyskać więcej informacji, zobacz Wprowadzenie do programu VS Code.
Wybierz pozycję Nowy terminal z menu Terminal , aby otworzyć zintegrowany terminal.
Przejdź do katalogu (cd
), który będzie zawierać projekt.
Uruchom następujące polecenia:
dotnet new grpc -o GrpcGreeter
code -r GrpcGreeter
Polecenie dotnet new
tworzy nową usługę gRPC w folderze GrpcGreeter .
Polecenie code
otwiera folder projektu GrpcGreeter w bieżącym wystąpieniu programu Visual Studio Code.
Program Visual Studio Code może wyświetlić okno dialogowe z pytaniem: Czy ufasz autorom plików w tym folderze?
- Jeśli ufasz wszystkim plikom w folderze nadrzędnym, wybierz pozycję Ufaj autorom wszystkich plików w folderze nadrzędnym.
- Wybierz pozycję Tak. Ufam autorom , ponieważ folder projektu zawiera pliki wygenerowane przez platformę .NET.
- Gdy program Visual Studio Code zażąda dodania zasobów do kompilowania i debugowania projektu, wybierz pozycję Tak. Jeśli program Visual Studio Code nie oferuje dodawania zasobów kompilacji i debugowania, wybierz pozycję Wyświetl>paletę poleceń i wpisz "
.NET
" w polu wyszukiwania. Z listy poleceń wybierz .NET: Generate Assets for Build and Debug
polecenie .
Program Visual Studio Code dodaje .vscode
folder z wygenerowanymi launch.json
plikami i tasks.json
.
- Uruchom Visual Studio dla komputerów Mac i wybierz pozycję Nowy. Alternatywnie w menu Plik programu Visual Studio wybierz pozycję Nowe rozwiązanie.
-
W oknie dialogowym Wybieranie szablonu dla nowego projektu wybierz pozycję >, a następnie wybierz pozycję Dalej.
- Wybierz pozycję .NET 5.0 dla platformy docelowej, a następnie wybierz pozycję Dalej.
- Nadaj projektowi nazwę GrpcGreeter. Ważne jest, aby nazwać projekt GrpcGreeter , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
- Wybierz pozycję Utwórz.
Naciśnij Ctrl+F5, aby uruchomić bez debugera.
Program Visual Studio wyświetla następujące okno dialogowe, gdy projekt nie jest jeszcze skonfigurowany do używania protokołu SSL:
Wybierz pozycję Tak , jeśli ufasz certyfikatowi SSL usług IIS Express.
Zostanie wyświetlone następujące okno dialogowe:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Program Visual Studio uruchamia program IIS Express i uruchamia aplikację. Na pasku adresu jest wyświetlana localhost:port#
wartość , a nie na przykład example.com
. Wynika to z faktu localhost
, że jest to standardowa nazwa hosta komputera lokalnego. Host lokalny obsługuje tylko żądania internetowe z komputera lokalnego. Podczas tworzenia projektu internetowego w programie Visual Studio dla serwera internetowego jest używany losowy port.
Ufaj certyfikatowi programistycznemu HTTPS, uruchamiając następujące polecenie:
dotnet dev-certs https --trust
Powyższe polecenie wymaga zestawu .NET 9 SDK lub nowszego w systemie Linux. W przypadku systemu Linux na platformie .NET 8.0.401 SDK i starszych wersjach zobacz dokumentację dystrybucji systemu Linux, aby ufać certyfikatowi.
Poprzednie polecenie wyświetla następujące okno dialogowe, pod warunkiem, że certyfikat nie był wcześniej zaufany:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać więcej informacji, zobacz sekcję Trust the ASP.NET Core HTTPS development certificate (Ufaj certyfikatowi programistycznemu ASP.NET Core HTTPS) artykułu Wymuszanie protokołu SSL .
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Naciśnij Ctrl-F5 , aby uruchomić bez debugera.
Program Visual Studio Code uruchamia Kestrelprogram , uruchamia przeglądarkę i przechodzi do adresu http://localhost:5001
. Na pasku adresu jest wyświetlana localhost:port#
wartość , a nie na przykład example.com
. Wynika to z faktu localhost
, że jest to standardowa nazwa hosta komputera lokalnego. Host lokalny obsługuje tylko żądania internetowe z komputera lokalnego.
Wybierz pozycję Uruchom>uruchom bez debugowania, aby uruchomić aplikację.
Visual Studio dla komputerów Mac:
- Uruchamia Kestrel serwer.
- Uruchamia przeglądarkę.
- Przechodzi do
http://localhost:port
lokalizacji , gdzie port jest losowo wybranym numerem portu.
Visual Studio dla komputerów Mac zostanie wyświetlone następujące okno podręczne:
Wybierz pozycję Tak , jeśli ufasz certyfikatowi programistycznemu.
Zostanie wyświetlone następujące okno dialogowe:
Wprowadź hasło i wybierz przycisk OK
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać więcej informacji, zobacz Trust the ASP.NET Core HTTPS development certificate (Ufaj certyfikatowi programistycznemu ASP.NET Core HTTPS).
W programie Visual Studio naciśnij pozycję Opt-Cmd-Return , aby uruchomić bez debugera. Możesz też przejść do paska menu i przejść do pozycji Uruchom>uruchom bez debugowania.
Program Visual Studio uruchamia Kestrelprogram , uruchamia przeglądarkę i przechodzi do adresu http://localhost:5001
.
Dzienniki pokazują, że usługa nasłuchuje na .https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Sprawdzanie plików projektu
Pliki projektu GrpcGreeter :
-
greet.proto: Plik Protos/greet.proto definiuje
Greeter
gRPC i służy do generowania zasobów serwera gRPC. Aby uzyskać więcej informacji, zobacz Wprowadzenie do gRPC.
-
Folder usług : zawiera implementację
Greeter
usługi.
-
appsettings.json
: zawiera dane konfiguracji, takie jak protokół używany przez Kestrelprogram . Aby uzyskać więcej informacji, zobacz Konfiguracja na platformie ASP.NET Core.
-
Program.cs
: zawiera punkt wejścia usługi gRPC. Aby uzyskać więcej informacji, zobacz Host ogólny platformy ASP.NET Core.
-
Startup.cs
: zawiera kod, który konfiguruje zachowanie aplikacji. Aby uzyskać więcej informacji, zobacz Uruchamianie aplikacji.
Tworzenie klienta gRPC w aplikacji konsolowej platformy .NET
- Otwórz drugie wystąpienie programu Visual Studio i wybierz pozycję Utwórz nowy projekt.
-
W oknie dialogowym Tworzenie nowego projektu wybierz pozycję Aplikacja konsolowa (.NET Core) i wybierz pozycję Dalej.
- W polu tekstowym Nazwa projektu wprowadź ciąg GrpcGreeterClient i wybierz pozycję Utwórz.
Otwórz zintegrowany terminal.
Zmień katalogi (cd
) na folder projektu.
Uruchom następujące polecenia:
dotnet new console -o GrpcGreeterClient
code -r GrpcGreeterClient
Program Visual Studio Code zażąda dodania zasobów w celu skompilowania i debugowania projektu, wybierz pozycję Tak.
Program Visual Studio Code dodaje .vscode
folder z wygenerowanymi launch.json
plikami i tasks.json
.
Dodawanie wymaganych pakietów
Projekt klienta gRPC wymaga następujących pakietów:
Zainstaluj pakiety przy użyciu konsoli Menedżer pakietów (PMC) lub zarządzania pakietami NuGet.
Opcja PMC instalowania pakietów
W programie Visual Studio wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola
W oknie Menedżer pakietów Konsola uruchom polecenie cd GrpcGreeterClient
, aby zmienić katalogi na folder zawierający GrpcGreeterClient.csproj
pliki.
Uruchom następujące polecenia:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Opcja Zarządzaj pakietami NuGet w celu zainstalowania pakietów
- Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań> Zarządzaj pakietami NuGet.
- Wybierz kartę Przeglądaj.
- Wprowadź ciąg Grpc.Net.Client w polu wyszukiwania.
-
Wybierz pakiet Grpc.Net.Client z karty Przeglądaj i wybierz pozycję Zainstaluj.
- Powtórz dla
Google.Protobuf
i Grpc.Tools
.
Uruchom następujące polecenia ze zintegrowanego terminalu:
dotnet add GrpcGreeterClient.csproj package Grpc.Net.Client
dotnet add GrpcGreeterClient.csproj package Google.Protobuf
dotnet add GrpcGreeterClient.csproj package Grpc.Tools
- Kliknij prawym przyciskiem myszy projekt GrpcGreeterClient w okienku rozwiązania i wybierz polecenie Zarządzaj pakietami NuGet.
- Wprowadź ciąg Grpc.Net.Client w polu wyszukiwania.
-
Wybierz pakiet Grpc.Net.Client w okienku wyników i wybierz pozycję Dodaj pakiet.
- Wybierz przycisk Akceptuj w oknie dialogowym Akceptuj licencję.
- Powtórz dla
Google.Protobuf
i Grpc.Tools
.
Utwórz folder Protos w projekcie klienta gRPC.
Skopiuj plik Protos\greet.proto z usługi gRPC Greeter do folderu Protos w projekcie klienta gRPC.
Zaktualizuj przestrzeń nazw wewnątrz greet.proto
pliku do przestrzeni nazw projektu:
option csharp_namespace = "GrpcGreeterClient";
GrpcGreeterClient.csproj
Edytuj plik projektu:
Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj plik projektu.
GrpcGreeterClient.csproj
Wybierz plik.
Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj plik projektu.
Tworzenie klienta powitania
- Skompiluj projekt klienta, aby utworzyć typy w
GrpcGreeterClient
przestrzeni nazw.
Uwaga
Typy GrpcGreeterClient
są generowane automatycznie przez proces kompilacji. Pakiet narzędzi Grpc.Tools generuje następujące pliki na podstawie pliku greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: kod buforu protokołu, który wypełnia, serializuje i pobiera typy komunikatów żądania i odpowiedzi.
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: zawiera wygenerowane klasy klienta.
Aby uzyskać więcej informacji na temat zasobów języka C# generowanych automatycznie przez narzędzia Grpc.Tools, zobacz usługi gRPC z elementami C#: Wygenerowane zasoby języka C#.
Zaktualizuj plik klienta Program.cs
gRPC przy użyciu następującego kodu:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Grpc.Net.Client;
namespace GrpcGreeterClient
{
class Program
{
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
Program.cs
zawiera punkt wejścia i logikę klienta gRPC.
Klient greeter jest tworzony przez:
- Utworzenie wystąpienia zawierającego
GrpcChannel
informacje dotyczące tworzenia połączenia z usługą gRPC.
- Za pomocą polecenia
GrpcChannel
, aby skonstruować klienta Greeter:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Klient Greeter wywołuje metodę asynchroniczną SayHello
. Zostanie wyświetlony wynik SayHello
wywołania:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Testowanie klienta gRPC za pomocą usługi gRPC Greeter
- W usłudze Greeter naciśnij
Ctrl+F5
, aby uruchomić serwer bez debugera.
- W projekcie
GrpcGreeterClient
naciśnij Ctrl+F5
, aby uruchomić klienta bez debugera.
- Uruchom usługę Greeter.
- Uruchom klienta.
Ze względu na wcześniej wymieniony problem z protokołem HTTP/2 protokołu TLS w systemie macOS należy zaktualizować adres kanału w kliencie na "http://localhost:5000". Zaktualizuj wiersz 13 do GrpcGreeterClient/Program.cs
odczytu:
using var channel = GrpcChannel.ForAddress("http://localhost:5000");
Uruchom usługę Greeter.
Uruchom klienta.
Klient wysyła powitanie do usługi z komunikatem zawierającym jego nazwę GreeterClient. Usługa wysyła komunikat "Hello GreeterClient" jako odpowiedź. Odpowiedź "Hello GreeterClient" jest wyświetlana w wierszu polecenia:
Greeting: Hello GreeterClient
Press any key to exit...
Usługa gRPC rejestruje szczegóły pomyślnego wywołania w dziennikach zapisanych w wierszu polecenia:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:5001/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Uwaga
Kod w tym artykule wymaga certyfikatu dewelopera ASP.NET Core HTTPS w celu zabezpieczenia usługi gRPC. Jeśli klient gRPC platformy .NET zakończy się niepowodzeniem z komunikatem The remote certificate is invalid according to the validation procedure.
lub The SSL connection could not be established.
, certyfikat dewelopera nie jest zaufany. Aby rozwiązać ten problem, zobacz Wywoływanie usługi gRPC z niezaufanym/nieprawidłowym certyfikatem.
W tym samouczku pokazano, jak utworzyć klienta gRPC platformy .NET Core i serwera gRPC platformy ASP.NET Core.
Na końcu będziesz mieć klienta gRPC, który komunikuje się z usługą gRPC Greeter.
Wyświetl lub pobierz przykładowy kod (jak pobrać).
W tym samouczku zostały wykonane następujące czynności:
- Utwórz serwer gRPC.
- Utwórz klienta gRPC.
- Przetestuj klienta gRPC za pomocą usługi gRPC Greeter.
W przypadku funkcji programistycznych platformy ASP.NET Core, takich jak tworzenie projektu, w instrukcjach programu Visual Studio Code wykorzystywany jest interfejs wiersza polecenia platformy .NET. Można postępować według tych instrukcji na dowolnej platformie (w systemach macOS, Linux lub Windows) oraz w przypadku każdego edytora kodu. Jeśli korzystasz z programu innego niż Visual Studio Code, konieczne mogą być drobne zmiany. Aby uzyskać więcej informacji na temat instalowania programu Visual Studio Code w systemie macOS, zobacz Program Visual Studio Code w systemie macOS.
Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt. Alternatywnie w menu Plik programu Visual Studio wybierz pozycję >
W oknie dialogowym Tworzenie nowego projektu wybierz pozycję gRPC Service i wybierz pozycję Dalej:
Nadaj projektowi nazwę GrpcGreeter. Ważne jest, aby nazwać projekt GrpcGreeter , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
Wybierz pozycję Utwórz.
W oknie dialogowym Tworzenie nowej usługi gRPC:
- Wybrano szablon usługi gRPC.
- Wybierz pozycję Utwórz.
Otwórz zintegrowany terminal.
Zmień katalogi (cd
) na folder projektu.
Uruchom następujące polecenia:
dotnet new grpc -o GrpcGreeter
code -r GrpcGreeter
- Polecenie
dotnet new
tworzy nową usługę gRPC w folderze GrpcGreeter .
- Polecenie
code
otwiera folder GrpcGreeter w nowym wystąpieniu programu Visual Studio Code.
W oknie dialogowym Wymagane zasoby do kompilacji i debugowania brakuje elementu "GrpcGreeter". Dodaj je?
Wybierz opcję Tak.
Rozpocznij Visual Studio dla komputerów Mac i wybierz pozycję Utwórz nowy projekt. Alternatywnie w menu Plik programu Visual Studio wybierz pozycję >
W oknie dialogowym Create a new project (Tworzenie nowego projektu) wybierz pozycję Web and Console App gRPC Service (Usługa gRPC aplikacji>), a następnie wybierz pozycję Next (Dalej):
Wybierz pozycję .NET Core 3.1 dla platformy docelowej, a następnie wybierz pozycję Dalej.
Nadaj projektowi nazwę GrpcGreeter. Ważne jest, aby nazwać projekt GrpcGreeter , więc przestrzenie nazw są zgodne podczas kopiowania i wklejania kodu.
Wybierz pozycję Utwórz.
Naciśnij Ctrl+F5, aby uruchomić bez debugera.
Program Visual Studio wyświetla następujące okno dialogowe, gdy projekt nie jest jeszcze skonfigurowany do używania protokołu SSL:
Wybierz pozycję Tak , jeśli ufasz certyfikatowi SSL usług IIS Express.
Zostanie wyświetlone następujące okno dialogowe:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Program Visual Studio uruchamia program IIS Express i uruchamia aplikację. Na pasku adresu jest wyświetlana localhost:port#
wartość , a nie na przykład example.com
. Wynika to z faktu localhost
, że jest to standardowa nazwa hosta komputera lokalnego. Host lokalny obsługuje tylko żądania internetowe z komputera lokalnego. Podczas tworzenia projektu internetowego w programie Visual Studio dla serwera internetowego jest używany losowy port.
Ufaj certyfikatowi programistycznemu HTTPS, uruchamiając następujące polecenie:
dotnet dev-certs https --trust
Powyższe polecenie wymaga zestawu .NET 9 SDK lub nowszego w systemie Linux. W przypadku systemu Linux na platformie .NET 8.0.401 SDK i starszych wersjach zobacz dokumentację dystrybucji systemu Linux, aby ufać certyfikatowi.
Poprzednie polecenie wyświetla następujące okno dialogowe, pod warunkiem, że certyfikat nie był wcześniej zaufany:
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać więcej informacji, zobacz sekcję Trust the ASP.NET Core HTTPS development certificate (Ufaj certyfikatowi programistycznemu ASP.NET Core HTTPS) artykułu Wymuszanie protokołu SSL .
Aby uzyskać informacje na temat zaufania przeglądarce Firefox, zobacz Błąd certyfikatu przeglądarki Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.
Naciśnij Ctrl-F5 , aby uruchomić bez debugera.
Program Visual Studio Code uruchamia Kestrelprogram , uruchamia przeglądarkę i przechodzi do adresu http://localhost:5001
. Na pasku adresu jest wyświetlana localhost:port#
wartość , a nie na przykład example.com
. Wynika to z faktu localhost
, że jest to standardowa nazwa hosta komputera lokalnego. Host lokalny obsługuje tylko żądania internetowe z komputera lokalnego.
Wybierz pozycję Uruchom>uruchom bez debugowania, aby uruchomić aplikację.
Visual Studio dla komputerów Mac:
- Uruchamia Kestrel serwer.
- Uruchamia przeglądarkę.
- Przechodzi do
http://localhost:port
lokalizacji , gdzie port jest losowo wybranym numerem portu.
Visual Studio dla komputerów Mac zostanie wyświetlone następujące okno podręczne:
Wybierz pozycję Tak , jeśli ufasz certyfikatowi programistycznemu.
Zostanie wyświetlone następujące okno dialogowe:
Wprowadź hasło i wybierz przycisk OK
Wybierz pozycję Tak, jeśli wyrażasz zgodę na zaufanie certyfikatowi programistycznemu.
Aby uzyskać więcej informacji, zobacz Trust the ASP.NET Core HTTPS development certificate (Ufaj certyfikatowi programistycznemu ASP.NET Core HTTPS).
W programie Visual Studio naciśnij pozycję Opt-Cmd-Return , aby uruchomić bez debugera. Możesz też przejść do paska menu i przejść do pozycji Uruchom>uruchom bez debugowania.
Program Visual Studio uruchamia Kestrelprogram , uruchamia przeglądarkę i przechodzi do adresu http://localhost:5001
.
Dzienniki pokazują, że usługa nasłuchuje na .https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Sprawdzanie plików projektu
Pliki projektu GrpcGreeter :
-
greet.proto: Plik Protos/greet.proto definiuje
Greeter
gRPC i służy do generowania zasobów serwera gRPC. Aby uzyskać więcej informacji, zobacz Wprowadzenie do gRPC.
-
Folder usług : zawiera implementację
Greeter
usługi.
-
appsettings.json
: zawiera dane konfiguracji, takie jak protokół używany przez Kestrelprogram . Aby uzyskać więcej informacji, zobacz Konfiguracja na platformie ASP.NET Core.
-
Program.cs
: zawiera punkt wejścia usługi gRPC. Aby uzyskać więcej informacji, zobacz Host ogólny platformy ASP.NET Core.
-
Startup.cs
: zawiera kod, który konfiguruje zachowanie aplikacji. Aby uzyskać więcej informacji, zobacz Uruchamianie aplikacji.
Tworzenie klienta gRPC w aplikacji konsolowej platformy .NET
- Otwórz drugie wystąpienie programu Visual Studio i wybierz pozycję Utwórz nowy projekt.
-
W oknie dialogowym Tworzenie nowego projektu wybierz pozycję Aplikacja konsolowa (.NET Core) i wybierz pozycję Dalej.
- W polu tekstowym Nazwa projektu wprowadź ciąg GrpcGreeterClient i wybierz pozycję Utwórz.
Otwórz zintegrowany terminal.
Zmień katalogi (cd
) na folder projektu.
Uruchom następujące polecenia:
dotnet new console -o GrpcGreeterClient
code -r GrpcGreeterClient
Dodawanie wymaganych pakietów
Projekt klienta gRPC wymaga następujących pakietów:
Zainstaluj pakiety przy użyciu konsoli Menedżer pakietów (PMC) lub zarządzania pakietami NuGet.
Opcja PMC instalowania pakietów
W programie Visual Studio wybierz pozycję Narzędzia NuGet>Menedżer pakietów> Menedżer pakietów Konsola
W oknie Menedżer pakietów Konsola uruchom polecenie cd GrpcGreeterClient
, aby zmienić katalogi na folder zawierający GrpcGreeterClient.csproj
pliki.
Uruchom następujące polecenia:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Opcja Zarządzaj pakietami NuGet w celu zainstalowania pakietów
- Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań> Zarządzaj pakietami NuGet.
- Wybierz kartę Przeglądaj.
- Wprowadź ciąg Grpc.Net.Client w polu wyszukiwania.
-
Wybierz pakiet Grpc.Net.Client z karty Przeglądaj i wybierz pozycję Zainstaluj.
- Powtórz dla
Google.Protobuf
i Grpc.Tools
.
Uruchom następujące polecenia ze zintegrowanego terminalu:
dotnet add GrpcGreeterClient.csproj package Grpc.Net.Client
dotnet add GrpcGreeterClient.csproj package Google.Protobuf
dotnet add GrpcGreeterClient.csproj package Grpc.Tools
- Kliknij prawym przyciskiem myszy projekt GrpcGreeterClient w okienku rozwiązania i wybierz polecenie Zarządzaj pakietami NuGet.
- Wprowadź ciąg Grpc.Net.Client w polu wyszukiwania.
-
Wybierz pakiet Grpc.Net.Client w okienku wyników i wybierz pozycję Dodaj pakiet.
- Wybierz przycisk Akceptuj w oknie dialogowym Akceptuj licencję.
- Powtórz dla
Google.Protobuf
i Grpc.Tools
.
Utwórz folder Protos w projekcie klienta gRPC.
Skopiuj plik Protos\greet.proto z usługi gRPC Greeter do folderu Protos w projekcie klienta gRPC.
Zaktualizuj przestrzeń nazw wewnątrz greet.proto
pliku do przestrzeni nazw projektu:
option csharp_namespace = "GrpcGreeterClient";
GrpcGreeterClient.csproj
Edytuj plik projektu:
Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj plik projektu.
GrpcGreeterClient.csproj
Wybierz plik.
Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj plik projektu.
Tworzenie klienta powitania
- Skompiluj projekt klienta, aby utworzyć typy w
GrpcGreeterClient
przestrzeni nazw.
Uwaga
Typy GrpcGreeterClient
są generowane automatycznie przez proces kompilacji. Pakiet narzędzi Grpc.Tools generuje następujące pliki na podstawie pliku greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: kod buforu protokołu, który wypełnia, serializuje i pobiera typy komunikatów żądania i odpowiedzi.
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: zawiera wygenerowane klasy klienta.
Aby uzyskać więcej informacji na temat zasobów języka C# generowanych automatycznie przez narzędzia Grpc.Tools, zobacz usługi gRPC z elementami C#: Wygenerowane zasoby języka C#.
Zaktualizuj plik klienta Program.cs
gRPC przy użyciu następującego kodu:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Grpc.Net.Client;
namespace GrpcGreeterClient
{
class Program
{
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
Program.cs
zawiera punkt wejścia i logikę klienta gRPC.
Klient greeter jest tworzony przez:
- Utworzenie wystąpienia zawierającego
GrpcChannel
informacje dotyczące tworzenia połączenia z usługą gRPC.
- Za pomocą polecenia
GrpcChannel
, aby skonstruować klienta Greeter:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Klient Greeter wywołuje metodę asynchroniczną SayHello
. Zostanie wyświetlony wynik SayHello
wywołania:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Testowanie klienta gRPC za pomocą usługi gRPC Greeter
- W usłudze Greeter naciśnij
Ctrl+F5
, aby uruchomić serwer bez debugera.
- W projekcie
GrpcGreeterClient
naciśnij Ctrl+F5
, aby uruchomić klienta bez debugera.
- Uruchom usługę Greeter.
- Uruchom klienta.
Ze względu na wcześniej wymieniony problem z protokołem HTTP/2 protokołu TLS w systemie macOS należy zaktualizować adres kanału w kliencie na "http://localhost:5000". Zaktualizuj wiersz 13 do GrpcGreeterClient/Program.cs
odczytu:
using var channel = GrpcChannel.ForAddress("http://localhost:5000");
Uruchom usługę Greeter.
Uruchom klienta.
Klient wysyła powitanie do usługi z komunikatem zawierającym jego nazwę GreeterClient. Usługa wysyła komunikat "Hello GreeterClient" jako odpowiedź. Odpowiedź "Hello GreeterClient" jest wyświetlana w wierszu polecenia:
Greeting: Hello GreeterClient
Press any key to exit...
Usługa gRPC rejestruje szczegóły pomyślnego wywołania w dziennikach zapisanych w wierszu polecenia:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:5001/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Uwaga
Kod w tym artykule wymaga certyfikatu dewelopera ASP.NET Core HTTPS w celu zabezpieczenia usługi gRPC. Jeśli klient gRPC platformy .NET zakończy się niepowodzeniem z komunikatem The remote certificate is invalid according to the validation procedure.
lub The SSL connection could not be established.
, certyfikat dewelopera nie jest zaufany. Aby rozwiązać ten problem, zobacz Wywoływanie usługi gRPC z niezaufanym/nieprawidłowym certyfikatem.