Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tutorial mostra como criar um cliente gRPC .NET e um ASP.NET Core gRPC Server. No final, você terá um cliente gRPC que se comunica com o serviço gRPC Greeter.
Neste tutorial, você:
- Crie um servidor gRPC.
- Crie um cliente gRPC.
- Teste o cliente gRPC com o serviço gRPC Greeter.
Prerequisites
Visual Studio 2022 com a carga de trabalho de ASP.NET e desenvolvimento web .
Criar um serviço gRPC
- Inicie o Visual Studio 2022 e selecione Novo projeto.
- Na caixa de diálogo Criar um novo projeto , procure
gRPC. Selecione ASP.NET Serviço gRPC principal e selecione Avançar. - Na caixa de diálogo Configurar o novo projeto, digite
GrpcGreeterpara nome do projeto. É importante nomear o projeto GrpcGreeter para que os namespaces correspondam quando você copia e cola o código. - Selecione Avançar.
- Na caixa de diálogo Informações adicionais , selecione .NET 9.0 (Suporte de Termo Padrão) e, em seguida, selecione Criar.
Executar o serviço
Pressione Ctrl+F5 para executar sem o depurador.
Visual Studio exibe a seguinte caixa de diálogo quando um projeto ainda não está configurado para usar SSL:
Selecione Sim se confiar no certificado SSL do IIS Express.
A seguinte caixa de diálogo é exibida:
Selecione Sim se concordar em confiar no certificado de desenvolvimento.
Para obter informações sobre como confiar no navegador Firefox, consulte o erro de certificado SEC_ERROR_INADEQUATE_KEY_USAGE do Firefox na secção .
Visual Studio:
- Inicia o servidor Kestrel.
- Inicia um navegador.
- Navega até
http://localhost:port, tal comohttp://localhost:7042.- port: um número de porta atribuído aleatoriamente para o aplicativo.
-
localhost: O nome de host padrão para o computador local. Localhost atende apenas solicitações da Web do computador local.
Os registos mostram o serviço a escutar em https://localhost:<port>, onde <port> é o número da porta localhost atribuído aleatoriamente no momento da criação do projeto e definido em 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
Note
O modelo gRPC está configurado para usar TLS (Transport Layer Security). Os clientes gRPC precisam usar HTTPS para chamar o servidor. O número da porta localhost do serviço gRPC é atribuído aleatoriamente quando o projeto é criado e configurado no arquivo Propriedades\launchSettings.js do projeto de serviço gRPC.
Examinar os arquivos do projeto
GrpcGreeter arquivos de projeto:
-
Protos/greet.proto: define oGreetergRPC e é usado para gerar os ativos do servidor gRPC. Para obter mais informações, consulte Introdução ao gRPC. -
Servicespasta: Contém a implementação do serviçoGreeter. -
appSettings.json: Contém dados de configuração, como o protocolo usado pelo Kestrel. Para obter mais informações, consulte Configuração no ASP.NET Core. -
Program.cs, que contém:- O ponto de entrada para o serviço gRPC. Para mais informações, consulte o Host Genérico do .NET no ASP.NET Core.
- Código que configura o comportamento do aplicativo. Para obter mais informações, consulte Inicialização do aplicativo.
Criar o cliente gRPC em um aplicativo de console .NET
- Abra uma segunda instância do Visual Studio e selecione Novo projeto.
- Na caixa de diálogo Criar um novo projeto , selecione Aplicativo de console e selecione Avançar.
- Na caixa de texto Nome do projeto , digite GrpcGreeterClient e selecione Avançar.
- Na caixa de diálogo Informações adicionais , selecione .NET 9.0 (Suporte de Termo Padrão) e, em seguida, selecione Criar.
Adicionar pacotes NuGet necessários
O projeto de cliente gRPC requer os seguintes pacotes NuGet:
- Grpc.Net.Client, que contém o cliente .NET.
- Google.Protobuf, que contém APIs de mensagem protobuf para C#.
-
Grpc.Tools, que contêm suporte a ferramentas C# para arquivos protobuf. O pacote de ferramentas não é necessário em tempo de execução, portanto, a dependência é marcada com
PrivateAssets="All".
Instale os pacotes usando o Console do Gerenciador de Pacotes (PMC) ou Gerenciar Pacotes NuGet.
Opção PMC para instalar pacotes
No Visual Studio, selecione Ferramentas>NuGet Package Manager>Console do Gerenciador de Pacotes
Na janela Console do Gerenciador de Pacotes , execute
cd GrpcGreeterClientpara alterar os diretórios para a pasta que contém osGrpcGreeterClient.csprojarquivos.Execute os seguintes comandos:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Opção Gerenciar pacotes NuGet para instalar pacotes
- Clique com o botão direito do rato no projeto no Explorador de Soluções>Gerir Pacotes NuGet.
- Selecione a guia Procurar.
- Digite Grpc.Net.Client na caixa de pesquisa.
- Selecione o pacote Grpc.Net.Client na guia Procurar e selecione Instalar.
- Repita para
Google.ProtobufeGrpc.Tools.
Adicionar greet.proto
Crie uma pasta Protos no projeto de cliente gRPC.
Copie o arquivo Protos\greet.proto do serviço gRPC Greeter para a pasta Protos no projeto de cliente gRPC.
Atualize o namespace dentro do
greet.protoarquivo para o namespace do projeto:option csharp_namespace = "GrpcGreeterClient";Edite o ficheiro do projeto
GrpcGreeterClient.csproj.
Clique com o botão direito do mouse no projeto e selecione Editar arquivo de projeto.
Adicione um grupo de itens com um
<Protobuf>elemento que se refira ao arquivo greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Criar o cliente Greeter
- Crie o projeto cliente para criar os tipos no
GrpcGreeterClientnamespace.
Note
Os GrpcGreeterClient tipos são gerados automaticamente pelo processo de compilação. O pacote de ferramentas Grpc.Tools gera os seguintes arquivos com base no arquivo greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: O código de buffer de protocolo que preenche, serializa e recupera os tipos de mensagem de solicitação e resposta. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Contém as classes de cliente geradas.
Para obter mais informações sobre os ativos C# gerados automaticamente pelo Grpc.Tools, consulte Serviços gRPC com C#: ativos C# gerados.
Atualize o arquivo de cliente
Program.csgRPC com o código a seguir.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();No código realçado anterior, substitua o número da porta
7042pelo número da portaHTTPSespecificado emProperties/launchSettings.jsondentro do projeto de serviçoGrpcGreeter.
Program.cs contém o ponto de entrada e a lógica para o cliente gRPC.
O cliente Greeter é criado por:
- Instanciar um
GrpcChannelque contém as informações para estabelecer a conexão com o serviço gRPC. - Usando o
GrpcChannelpara construir o cliente 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();
O cliente Greeter chama o método assíncrono SayHello . O resultado da SayHello chamada é exibido:
// 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();
Teste o cliente gRPC com o serviço gRPC Greeter
Atualize o appsettings.Development.json arquivo adicionando as seguintes linhas realçadas:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- No projeto de serviço
GrpcGreeter, pressioneCtrl+F5para iniciar o servidor sem o depurador. - No projeto de
GrpcGreeterClientconsole, pressioneCtrl+F5para iniciar o cliente sem o depurador.
O cliente envia uma saudação ao serviço com uma mensagem contendo seu nome, GreeterClient. O serviço envia a mensagem "Hello GreeterClient" como resposta. A resposta "Hello GreeterClient" é exibida no prompt de comando:
Greeting: Hello GreeterClient
Press any key to exit...
O serviço gRPC regista os detalhes da chamada bem-sucedida nos logs gravados na linha de comandos.
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
Note
O código neste artigo requer o certificado de desenvolvimento HTTPS ASP.NET Core para proteger o serviço gRPC. Se o cliente gRPC do .NET falhar com a mensagem The remote certificate is invalid according to the validation procedure. ou The SSL connection could not be established., o certificado de desenvolvimento não é confiável. Para corrigir esse problema, consulte Chamar um serviço gRPC com um certificado não confiável/inválido.
Próximos passos
Este tutorial mostra como criar um cliente gRPC .NET e um ASP.NET Core gRPC Server. No final, você terá um cliente gRPC que se comunica com o serviço gRPC Greeter.
Neste tutorial, você:
- Crie um servidor gRPC.
- Crie um cliente gRPC.
- Teste o cliente gRPC com o serviço gRPC Greeter.
Prerequisites
Visual Studio 2022 com a carga de trabalho de ASP.NET e desenvolvimento web .
Criar um serviço gRPC
- Inicie o Visual Studio 2022 e selecione Novo projeto.
- Na caixa de diálogo Criar um novo projeto , procure
gRPC. Selecione ASP.NET Serviço gRPC principal e selecione Avançar. - Na caixa de diálogo Configurar o novo projeto, digite
GrpcGreeterpara nome do projeto. É importante nomear o projeto GrpcGreeter para que os namespaces correspondam quando você copia e cola o código. - Selecione Avançar.
- Na caixa de diálogo Informações adicionais , selecione .NET 8.0 (Suporte de longo prazo) e, em seguida, selecione Criar.
Executar o serviço
Pressione Ctrl+F5 para executar sem o depurador.
Visual Studio exibe a seguinte caixa de diálogo quando um projeto ainda não está configurado para usar SSL:
Selecione Sim se confiar no certificado SSL do IIS Express.
A seguinte caixa de diálogo é exibida:
Selecione Sim se concordar em confiar no certificado de desenvolvimento.
Para obter informações sobre como confiar no navegador Firefox, consulte o erro de certificado SEC_ERROR_INADEQUATE_KEY_USAGE do Firefox na secção .
Visual Studio:
- Inicia o servidor Kestrel.
- Inicia um navegador.
- Navega até
http://localhost:port, tal comohttp://localhost:7042.- port: um número de porta atribuído aleatoriamente para o aplicativo.
-
localhost: O nome de host padrão para o computador local. Localhost atende apenas solicitações da Web do computador local.
Os registos mostram o serviço a escutar em https://localhost:<port>, onde <port> é o número da porta localhost atribuído aleatoriamente no momento da criação do projeto e definido em 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
Note
O modelo gRPC está configurado para usar TLS (Transport Layer Security). Os clientes gRPC precisam usar HTTPS para chamar o servidor. O número da porta localhost do serviço gRPC é atribuído aleatoriamente quando o projeto é criado e configurado no arquivo Propriedades\launchSettings.js do projeto de serviço gRPC.
Examinar os arquivos do projeto
GrpcGreeter arquivos de projeto:
-
Protos/greet.proto: define oGreetergRPC e é usado para gerar os ativos do servidor gRPC. Para obter mais informações, consulte Introdução ao gRPC. -
Servicespasta: Contém a implementação do serviçoGreeter. -
appSettings.json: Contém dados de configuração, como o protocolo usado pelo Kestrel. Para obter mais informações, consulte Configuração no ASP.NET Core. -
Program.cs, que contém:- O ponto de entrada para o serviço gRPC. Para mais informações, consulte o Host Genérico do .NET no ASP.NET Core.
- Código que configura o comportamento do aplicativo. Para obter mais informações, consulte Inicialização do aplicativo.
Criar o cliente gRPC em um aplicativo de console .NET
- Abra uma segunda instância do Visual Studio e selecione Novo projeto.
- Na caixa de diálogo Criar um novo projeto , selecione Aplicativo de console e selecione Avançar.
- Na caixa de texto Nome do projeto , digite GrpcGreeterClient e selecione Avançar.
- Na caixa de diálogo Informações adicionais , selecione .NET 8.0 (Suporte de longo prazo) e, em seguida, selecione Criar.
Adicionar pacotes NuGet necessários
O projeto de cliente gRPC requer os seguintes pacotes NuGet:
- Grpc.Net.Client, que contém o cliente .NET.
- Google.Protobuf, que contém APIs de mensagem protobuf para C#.
-
Grpc.Tools, que contêm suporte a ferramentas C# para arquivos protobuf. O pacote de ferramentas não é necessário em tempo de execução, portanto, a dependência é marcada com
PrivateAssets="All".
Instale os pacotes usando o Console do Gerenciador de Pacotes (PMC) ou Gerenciar Pacotes NuGet.
Opção PMC para instalar pacotes
No Visual Studio, selecione Ferramentas>NuGet Package Manager>Console do Gerenciador de Pacotes
Na janela Console do Gerenciador de Pacotes , execute
cd GrpcGreeterClientpara alterar os diretórios para a pasta que contém osGrpcGreeterClient.csprojarquivos.Execute os seguintes comandos:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Opção Gerenciar pacotes NuGet para instalar pacotes
- Clique com o botão direito do rato no projeto no Explorador de Soluções>Gerir Pacotes NuGet.
- Selecione a guia Procurar.
- Digite Grpc.Net.Client na caixa de pesquisa.
- Selecione o pacote Grpc.Net.Client na guia Procurar e selecione Instalar.
- Repita para
Google.ProtobufeGrpc.Tools.
Adicionar greet.proto
Crie uma pasta Protos no projeto de cliente gRPC.
Copie o arquivo Protos\greet.proto do serviço gRPC Greeter para a pasta Protos no projeto de cliente gRPC.
Atualize o namespace dentro do
greet.protoarquivo para o namespace do projeto:option csharp_namespace = "GrpcGreeterClient";Edite o ficheiro do projeto
GrpcGreeterClient.csproj.
Clique com o botão direito do mouse no projeto e selecione Editar arquivo de projeto.
Adicione um grupo de itens com um
<Protobuf>elemento que se refira ao arquivo greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Criar o cliente Greeter
- Crie o projeto cliente para criar os tipos no
GrpcGreeterClientnamespace.
Note
Os GrpcGreeterClient tipos são gerados automaticamente pelo processo de compilação. O pacote de ferramentas Grpc.Tools gera os seguintes arquivos com base no arquivo greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: O código de buffer de protocolo que preenche, serializa e recupera os tipos de mensagem de solicitação e resposta. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Contém as classes de cliente geradas.
Para obter mais informações sobre os ativos C# gerados automaticamente pelo Grpc.Tools, consulte Serviços gRPC com C#: ativos C# gerados.
Atualize o arquivo de cliente
Program.csgRPC com o código a seguir.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();No código realçado anterior, substitua o número da porta
7042pelo número da portaHTTPSespecificado emProperties/launchSettings.jsondentro do projeto de serviçoGrpcGreeter.
Program.cs contém o ponto de entrada e a lógica para o cliente gRPC.
O cliente Greeter é criado por:
- Instanciar um
GrpcChannelque contém as informações para estabelecer a conexão com o serviço gRPC. - Usando o
GrpcChannelpara construir o cliente 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();
O cliente Greeter chama o método assíncrono SayHello . O resultado da SayHello chamada é exibido:
// 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();
Teste o cliente gRPC com o serviço gRPC Greeter
Atualize o appsettings.Development.json arquivo adicionando as seguintes linhas realçadas:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- No serviço Greeter, pressione
Ctrl+F5para iniciar o servidor sem o depurador. - No projeto
GrpcGreeterClient, pressioneCtrl+F5para iniciar o cliente sem o depurador.
O cliente envia uma saudação ao serviço com uma mensagem contendo seu nome, GreeterClient. O serviço envia a mensagem "Hello GreeterClient" como resposta. A resposta "Hello GreeterClient" é exibida no prompt de comando:
Greeting: Hello GreeterClient
Press any key to exit...
O serviço gRPC regista os detalhes da chamada bem-sucedida nos logs gravados na linha de comandos.
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
Note
O código neste artigo requer o certificado de desenvolvimento HTTPS ASP.NET Core para proteger o serviço gRPC. Se o cliente gRPC do .NET falhar com a mensagem The remote certificate is invalid according to the validation procedure. ou The SSL connection could not be established., o certificado de desenvolvimento não é confiável. Para corrigir esse problema, consulte Chamar um serviço gRPC com um certificado não confiável/inválido.
Próximos passos
Este tutorial mostra como criar um cliente gRPC .NET e um ASP.NET Core gRPC Server. No final, você terá um cliente gRPC que se comunica com o serviço gRPC Greeter.
Neste tutorial, você:
- Crie um servidor gRPC.
- Crie um cliente gRPC.
- Teste o cliente gRPC com o serviço gRPC Greeter.
Prerequisites
Visual Studio 2022 com a carga de trabalho de ASP.NET e desenvolvimento web .
Criar um serviço gRPC
- Inicie o Visual Studio 2022 e selecione Criar um novo projeto.
- Na caixa de diálogo Criar um novo projeto , procure
gRPC. Selecione ASP.NET Serviço gRPC principal e selecione Avançar. - Na caixa de diálogo Configurar o novo projeto, digite
GrpcGreeterpara nome do projeto. É importante nomear o projeto GrpcGreeter para que os namespaces correspondam quando você copia e cola o código. - Selecione Avançar.
- Na caixa de diálogo Informações adicionais, selecione .NET 6.0 (Suporte de longo prazo) e, em seguida, selecione Criar.
Executar o serviço
Pressione Ctrl+F5 para executar sem o depurador.
Visual Studio exibe a seguinte caixa de diálogo quando um projeto ainda não está configurado para usar SSL:
Selecione Sim se confiar no certificado SSL do IIS Express.
A seguinte caixa de diálogo é exibida:
Selecione Sim se concordar em confiar no certificado de desenvolvimento.
Para obter informações sobre como confiar no navegador Firefox, consulte o erro de certificado SEC_ERROR_INADEQUATE_KEY_USAGE do Firefox na secção .
Visual Studio:
- Inicia o servidor Kestrel.
- Inicia um navegador.
- Navega até
http://localhost:port, tal comohttp://localhost:7042.- port: um número de porta atribuído aleatoriamente para o aplicativo.
-
localhost: O nome de host padrão para o computador local. Localhost atende apenas solicitações da Web do computador local.
Os registos mostram o serviço a escutar em https://localhost:<port>, onde <port> é o número da porta localhost atribuído aleatoriamente no momento da criação do projeto e definido em 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
Note
O modelo gRPC está configurado para usar TLS (Transport Layer Security). Os clientes gRPC precisam usar HTTPS para chamar o servidor. O número da porta localhost do serviço gRPC é atribuído aleatoriamente quando o projeto é criado e configurado no arquivo Propriedades\launchSettings.js do projeto de serviço gRPC.
O macOS não suporta ASP.NET Core gRPC com TLS. É necessária uma configuração adicional para executar com êxito os serviços gRPC no macOS. Para obter mais informações, consulte Não é possível iniciar aplicativo gRPC do ASP.NET Core no macOS.
Examinar os arquivos do projeto
GrpcGreeter arquivos de projeto:
-
Protos/greet.proto: define oGreetergRPC e é usado para gerar os ativos do servidor gRPC. Para obter mais informações, consulte Introdução ao gRPC. -
Servicespasta: Contém a implementação do serviçoGreeter. -
appSettings.json: Contém dados de configuração, como o protocolo usado pelo Kestrel. Para obter mais informações, consulte Configuração no ASP.NET Core. -
Program.cs, que contém:- O ponto de entrada para o serviço gRPC. Para mais informações, consulte o Host Genérico do .NET no ASP.NET Core.
- Código que configura o comportamento do aplicativo. Para obter mais informações, consulte Inicialização do aplicativo.
Criar o cliente gRPC em um aplicativo de console .NET
- Abra uma segunda instância do Visual Studio e selecione Criar um novo projeto.
- Na caixa de diálogo Criar um novo projeto , selecione Aplicativo de console e selecione Avançar.
- Na caixa de texto Nome do projeto , digite GrpcGreeterClient e selecione Avançar.
- Na caixa de diálogo Informações adicionais, selecione .NET 6.0 (Suporte de longo prazo) e, em seguida, selecione Criar.
Adicionar pacotes NuGet necessários
O projeto de cliente gRPC requer os seguintes pacotes NuGet:
- Grpc.Net.Client, que contém o cliente .NET.
- Google.Protobuf, que contém APIs de mensagem protobuf para C#.
-
Grpc.Tools, que contêm suporte a ferramentas C# para arquivos protobuf. O pacote de ferramentas não é necessário em tempo de execução, portanto, a dependência é marcada com
PrivateAssets="All".
Instale os pacotes usando o Console do Gerenciador de Pacotes (PMC) ou Gerenciar Pacotes NuGet.
Opção PMC para instalar pacotes
No Visual Studio, selecione Ferramentas>NuGet Package Manager>Console do Gerenciador de Pacotes
Na janela Console do Gerenciador de Pacotes , execute
cd GrpcGreeterClientpara alterar os diretórios para a pasta que contém osGrpcGreeterClient.csprojarquivos.Execute os seguintes comandos:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Opção Gerenciar pacotes NuGet para instalar pacotes
- Clique com o botão direito do rato no projeto no Explorador de Soluções>Gerir Pacotes NuGet.
- Selecione a guia Procurar.
- Digite Grpc.Net.Client na caixa de pesquisa.
- Selecione o pacote Grpc.Net.Client na guia Procurar e selecione Instalar.
- Repita para
Google.ProtobufeGrpc.Tools.
Adicionar greet.proto
Crie uma pasta Protos no projeto de cliente gRPC.
Copie o arquivo Protos\greet.proto do serviço gRPC Greeter para a pasta Protos no projeto de cliente gRPC.
Atualize o namespace dentro do
greet.protoarquivo para o namespace do projeto:option csharp_namespace = "GrpcGreeterClient";Edite o ficheiro do projeto
GrpcGreeterClient.csproj.
Clique com o botão direito do mouse no projeto e selecione Editar arquivo de projeto.
Adicione um grupo de itens com um
<Protobuf>elemento que se refira ao arquivo greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Criar o cliente Greeter
- Crie o projeto cliente para criar os tipos no
GrpcGreeterClientnamespace.
Note
Os GrpcGreeterClient tipos são gerados automaticamente pelo processo de compilação. O pacote de ferramentas Grpc.Tools gera os seguintes arquivos com base no arquivo greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: O código de buffer de protocolo que preenche, serializa e recupera os tipos de mensagem de solicitação e resposta. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Contém as classes de cliente geradas.
Para obter mais informações sobre os ativos C# gerados automaticamente pelo Grpc.Tools, consulte Serviços gRPC com C#: ativos C# gerados.
Atualize o arquivo de cliente
Program.csgRPC com o código a seguir.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();No código realçado anterior, substitua o número da porta
7042pelo número da portaHTTPSespecificado emProperties/launchSettings.jsondentro do projeto de serviçoGrpcGreeter.
Program.cs contém o ponto de entrada e a lógica para o cliente gRPC.
O cliente Greeter é criado por:
- Instanciar um
GrpcChannelque contém as informações para estabelecer a conexão com o serviço gRPC. - Usando o
GrpcChannelpara construir o cliente 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();
O cliente Greeter chama o método assíncrono SayHello . O resultado da SayHello chamada é exibido:
// 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();
Teste o cliente gRPC com o serviço gRPC Greeter
Atualize o appsettings.Development.json arquivo adicionando as seguintes linhas realçadas:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
- No serviço Greeter, pressione
Ctrl+F5para iniciar o servidor sem o depurador. - No projeto
GrpcGreeterClient, pressioneCtrl+F5para iniciar o cliente sem o depurador.
O cliente envia uma saudação ao serviço com uma mensagem contendo seu nome, GreeterClient. O serviço envia a mensagem "Hello GreeterClient" como resposta. A resposta "Hello GreeterClient" é exibida no prompt de comando:
Greeting: Hello GreeterClient
Press any key to exit...
O serviço gRPC regista os detalhes da chamada bem-sucedida nos logs gravados na linha de comandos.
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
Note
O código neste artigo requer o certificado de desenvolvimento HTTPS ASP.NET Core para proteger o serviço gRPC. Se o cliente gRPC do .NET falhar com a mensagem The remote certificate is invalid according to the validation procedure. ou The SSL connection could not be established., o certificado de desenvolvimento não é confiável. Para corrigir esse problema, consulte Chamar um serviço gRPC com um certificado não confiável/inválido.
Próximos passos
Este tutorial mostra como criar um cliente gRPC .NET e um ASP.NET Core gRPC Server. No final, você terá um cliente gRPC que se comunica com o serviço gRPC Greeter.
Neste tutorial, você:
- Crie um servidor gRPC.
- Crie um cliente gRPC.
- Teste o cliente gRPC com o serviço gRPC Greeter.
Prerequisites
- Visual Studio 2022 com a carga de trabalho de ASP.NET e desenvolvimento web .
- SDK do .NET 6
Criar um serviço gRPC
- Inicie o Visual Studio 2022 e selecione Criar um novo projeto.
- Na caixa de diálogo Criar um novo projeto , procure
gRPC. Selecione ASP.NET Serviço gRPC principal e selecione Avançar. - Na caixa de diálogo Configurar o novo projeto, digite
GrpcGreeterpara nome do projeto. É importante nomear o projeto GrpcGreeter para que os namespaces correspondam quando você copia e cola o código. - Selecione Avançar.
- Na caixa de diálogo Informações adicionais, selecione .NET 6.0 (Suporte de longo prazo) e, em seguida, selecione Criar.
Executar o serviço
Pressione Ctrl+F5 para executar sem o depurador.
Visual Studio exibe a seguinte caixa de diálogo quando um projeto ainda não está configurado para usar SSL:
Selecione Sim se confiar no certificado SSL do IIS Express.
A seguinte caixa de diálogo é exibida:
Selecione Sim se concordar em confiar no certificado de desenvolvimento.
Para obter informações sobre como confiar no navegador Firefox, consulte o erro de certificado SEC_ERROR_INADEQUATE_KEY_USAGE do Firefox na secção .
Visual Studio:
- Inicia o servidor Kestrel.
- Inicia um navegador.
- Navega até
http://localhost:port, tal comohttp://localhost:7042.- port: um número de porta atribuído aleatoriamente para o aplicativo.
-
localhost: O nome de host padrão para o computador local. Localhost atende apenas solicitações da Web do computador local.
Os registos mostram o serviço a escutar em https://localhost:<port>, onde <port> é o número da porta localhost atribuído aleatoriamente no momento da criação do projeto e definido em 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
Note
O modelo gRPC está configurado para usar TLS (Transport Layer Security). Os clientes gRPC precisam usar HTTPS para chamar o servidor. O número da porta localhost do serviço gRPC é atribuído aleatoriamente quando o projeto é criado e configurado no arquivo Propriedades\launchSettings.js do projeto de serviço gRPC.
O macOS não suporta ASP.NET Core gRPC com TLS. É necessária uma configuração adicional para executar com êxito os serviços gRPC no macOS. Para obter mais informações, consulte Não é possível iniciar aplicativo gRPC do ASP.NET Core no macOS.
Examinar os arquivos do projeto
GrpcGreeter arquivos de projeto:
-
Protos/greet.proto: define oGreetergRPC e é usado para gerar os ativos do servidor gRPC. Para obter mais informações, consulte Introdução ao gRPC. -
Servicespasta: Contém a implementação do serviçoGreeter. -
appSettings.json: Contém dados de configuração, como o protocolo usado pelo Kestrel. Para obter mais informações, consulte Configuração no ASP.NET Core. -
Program.cs, que contém:- O ponto de entrada para o serviço gRPC. Para mais informações, consulte o Host Genérico do .NET no ASP.NET Core.
- Código que configura o comportamento do aplicativo. Para obter mais informações, consulte Inicialização do aplicativo.
Criar o cliente gRPC em um aplicativo de console .NET
- Abra uma segunda instância do Visual Studio e selecione Criar um novo projeto.
- Na caixa de diálogo Criar um novo projeto , selecione Aplicativo de console e selecione Avançar.
- Na caixa de texto Nome do projeto , digite GrpcGreeterClient e selecione Avançar.
- Na caixa de diálogo Informações adicionais, selecione .NET 6.0 (Suporte de longo prazo) e, em seguida, selecione Criar.
Adicionar pacotes NuGet necessários
O projeto de cliente gRPC requer os seguintes pacotes NuGet:
- Grpc.Net.Client, que contém o cliente .NET.
- Google.Protobuf, que contém APIs de mensagem protobuf para C#.
-
Grpc.Tools, que contêm suporte a ferramentas C# para arquivos protobuf. O pacote de ferramentas não é necessário em tempo de execução, portanto, a dependência é marcada com
PrivateAssets="All".
Instale os pacotes usando o Console do Gerenciador de Pacotes (PMC) ou Gerenciar Pacotes NuGet.
Opção PMC para instalar pacotes
No Visual Studio, selecione Ferramentas>NuGet Package Manager>Console do Gerenciador de Pacotes
Na janela Console do Gerenciador de Pacotes , execute
cd GrpcGreeterClientpara alterar os diretórios para a pasta que contém osGrpcGreeterClient.csprojarquivos.Execute os seguintes comandos:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Opção Gerenciar pacotes NuGet para instalar pacotes
- Clique com o botão direito do rato no projeto no Explorador de Soluções>Gerir Pacotes NuGet.
- Selecione a guia Procurar.
- Digite Grpc.Net.Client na caixa de pesquisa.
- Selecione o pacote Grpc.Net.Client na guia Procurar e selecione Instalar.
- Repita para
Google.ProtobufeGrpc.Tools.
Adicionar greet.proto
Crie uma pasta Protos no projeto de cliente gRPC.
Copie o arquivo Protos\greet.proto do serviço gRPC Greeter para a pasta Protos no projeto de cliente gRPC.
Atualize o namespace dentro do
greet.protoarquivo para o namespace do projeto:option csharp_namespace = "GrpcGreeterClient";Edite o ficheiro do projeto
GrpcGreeterClient.csproj.
Clique com o botão direito do mouse no projeto e selecione Editar arquivo de projeto.
Adicione um grupo de itens com um
<Protobuf>elemento que se refira ao arquivo greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Criar o cliente Greeter
- Crie o projeto cliente para criar os tipos no
GrpcGreeterClientnamespace.
Note
Os GrpcGreeterClient tipos são gerados automaticamente pelo processo de compilação. O pacote de ferramentas Grpc.Tools gera os seguintes arquivos com base no arquivo greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: O código de buffer de protocolo que preenche, serializa e recupera os tipos de mensagem de solicitação e resposta. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Contém as classes de cliente geradas.
Para obter mais informações sobre os ativos C# gerados automaticamente pelo Grpc.Tools, consulte Serviços gRPC com C#: ativos C# gerados.
Atualize o arquivo de cliente
Program.csgRPC com o código a seguir.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();No código realçado anterior, substitua o número da porta
7042pelo número da portaHTTPSespecificado emProperties/launchSettings.jsondentro do projeto de serviçoGrpcGreeter.
Program.cs contém o ponto de entrada e a lógica para o cliente gRPC.
O cliente Greeter é criado por:
- Instanciar um
GrpcChannelque contém as informações para estabelecer a conexão com o serviço gRPC. - Usando o
GrpcChannelpara construir o cliente 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();
O cliente Greeter chama o método assíncrono SayHello . O resultado da SayHello chamada é exibido:
// 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();
Teste o cliente gRPC com o serviço gRPC Greeter
- No serviço Greeter, pressione
Ctrl+F5para iniciar o servidor sem o depurador. - No projeto
GrpcGreeterClient, pressioneCtrl+F5para iniciar o cliente sem o depurador.
O cliente envia uma saudação ao serviço com uma mensagem contendo seu nome, GreeterClient. O serviço envia a mensagem "Hello GreeterClient" como resposta. A resposta "Hello GreeterClient" é exibida no prompt de comando:
Greeting: Hello GreeterClient
Press any key to exit...
O serviço gRPC regista os detalhes da chamada bem-sucedida nos logs gravados na linha de comandos.
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
Atualize o appsettings.Development.json arquivo adicionando as seguintes linhas:
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
Note
O código neste artigo requer o certificado de desenvolvimento HTTPS ASP.NET Core para proteger o serviço gRPC. Se o cliente gRPC do .NET falhar com a mensagem The remote certificate is invalid according to the validation procedure. ou The SSL connection could not be established., o certificado de desenvolvimento não é confiável. Para corrigir esse problema, consulte Chamar um serviço gRPC com um certificado não confiável/inválido.
Próximos passos
Este tutorial mostra como criar um cliente gRPC .NET e um ASP.NET Core gRPC Server.
No final, você terá um cliente gRPC que se comunica com o serviço gRPC Greeter.
Visualize ou baixe o código de exemplo (como fazer o download).
Neste tutorial, você:
- Crie um servidor gRPC.
- Crie um cliente gRPC.
- Teste o cliente gRPC com o serviço gRPC Greeter.
Prerequisites
- Visual Studio 2019 16.8 ou posterior com a carga de trabalho de desenvolvimento ASP.NET e Web
- SDK do .NET 5
Criar um serviço gRPC
- Inicie o Visual Studio e selecione Criar um novo projeto.
- Na caixa de diálogo Criar um novo projeto , selecione Serviço gRPC e selecione Avançar.
- Na caixa de diálogo Configurar o novo projeto, digite
GrpcGreeterpara nome do projeto. É importante nomear o projeto GrpcGreeter para que os namespaces correspondam quando você copia e cola o código. - Selecione Avançar.
- Na caixa de diálogo Informações adicionais , selecione .NET 5.0 na lista suspensa Target Framework .
- Selecione Criar.
Executar o serviço
Pressione Ctrl+F5 para executar sem o depurador.
Visual Studio exibe a seguinte caixa de diálogo quando um projeto ainda não está configurado para usar SSL:
Selecione Sim se confiar no certificado SSL do IIS Express.
A seguinte caixa de diálogo é exibida:
Selecione Sim se concordar em confiar no certificado de desenvolvimento.
Para obter informações sobre como confiar no navegador Firefox, consulte o erro de certificado SEC_ERROR_INADEQUATE_KEY_USAGE do Firefox na secção .
O Visual Studio inicia IIS Express e executa o aplicativo. A barra de endereço mostra
localhost:port#e não algo comoexample.com. Isso porquelocalhosté o nome de host padrão para o computador local. Localhost atende apenas solicitações da Web do computador local. Quando o Visual Studio cria um projeto Web, uma porta aleatória é usada para o servidor Web.
Os logs mostram o serviço escutando em 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
Note
O modelo gRPC está configurado para usar TLS (Transport Layer Security). Os clientes gRPC precisam usar HTTPS para chamar o servidor.
O macOS não suporta ASP.NET Core gRPC com TLS. É necessária uma configuração adicional para executar com êxito os serviços gRPC no macOS. Para obter mais informações, consulte Não é possível iniciar aplicativo gRPC do ASP.NET Core no macOS.
Examinar os arquivos do projeto
GrpcGreeter arquivos de projeto:
-
greet.proto: O arquivo Protos/greet.proto define o
GreetergRPC e é usado para gerar os ativos do servidor gRPC. Para obter mais informações, consulte Introdução ao gRPC. -
Pasta Serviços: Contém a implementação do
Greeterserviço. -
appsettings.json: Contém dados de configuração, como o protocolo usado pelo Kestrel. Para obter mais informações, consulte Configuração no ASP.NET Core. -
Program.cs: Contém o ponto de entrada para o serviço gRPC. Para mais informações, consulte o Host Genérico do .NET no ASP.NET Core. -
Startup.cs: Contém código que configura o comportamento do aplicativo. Para obter mais informações, consulte Inicialização do aplicativo.
Criar o cliente gRPC em um aplicativo de console .NET
- Abra uma segunda instância do Visual Studio e selecione Criar um novo projeto.
- Na caixa de diálogo Criar um novo projeto , selecione Aplicativo de console (.NET) e selecione Avançar.
- Na caixa de texto Nome do projeto , digite GrpcGreeterClient e selecione Criar.
Adicionar pacotes necessários
O projeto de cliente gRPC requer os seguintes pacotes:
- Grpc.Net.Client, que contém o cliente .NET.
- Google.Protobuf, que contém APIs de mensagem protobuf para C#.
-
Grpc.Tools, que contém suporte a ferramentas C# para arquivos protobuf. O pacote de ferramentas não é necessário em tempo de execução, portanto, a dependência é marcada com
PrivateAssets="All".
Instale os pacotes usando o Console do Gerenciador de Pacotes (PMC) ou Gerenciar Pacotes NuGet.
Opção PMC para instalar pacotes
No Visual Studio, selecione Ferramentas>NuGet Package Manager>Console do Gerenciador de Pacotes
Na janela Console do Gerenciador de Pacotes , execute
cd GrpcGreeterClientpara alterar os diretórios para a pasta que contém osGrpcGreeterClient.csprojarquivos.Execute os seguintes comandos:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Opção Gerenciar pacotes NuGet para instalar pacotes
- Clique com o botão direito do rato no projeto no Explorador de Soluções>Gerir Pacotes NuGet.
- Selecione a guia Procurar.
- Digite Grpc.Net.Client na caixa de pesquisa.
- Selecione o pacote Grpc.Net.Client na guia Procurar e selecione Instalar.
- Repita para
Google.ProtobufeGrpc.Tools.
Adicionar greet.proto
Crie uma pasta Protos no projeto de cliente gRPC.
Copie o arquivo Protos\greet.proto do serviço gRPC Greeter para a pasta Protos no projeto de cliente gRPC.
Atualize o namespace dentro do
greet.protoarquivo para o namespace do projeto:option csharp_namespace = "GrpcGreeterClient";Edite o ficheiro do projeto
GrpcGreeterClient.csproj.Clique com o botão direito do mouse no projeto e selecione Editar arquivo de projeto.
Adicione um grupo de itens com um
<Protobuf>elemento que se refira ao arquivo greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Criar o cliente Greeter
- Crie o projeto cliente para criar os tipos no
GrpcGreeterClientnamespace.
Note
Os GrpcGreeterClient tipos são gerados automaticamente pelo processo de compilação. O pacote de ferramentas Grpc.Tools gera os seguintes arquivos com base no arquivo greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: O código de buffer de protocolo que preenche, serializa e recupera os tipos de mensagem de solicitação e resposta. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Contém as classes de cliente geradas.
Para obter mais informações sobre os ativos C# gerados automaticamente pelo Grpc.Tools, consulte Serviços gRPC com C#: ativos C# gerados.
Atualize o arquivo de cliente
Program.csgRPC com o seguinte código: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 contém o ponto de entrada e a lógica para o cliente gRPC.
O cliente Greeter é criado por:
- Instanciar um
GrpcChannelque contém as informações para estabelecer a conexão com o serviço gRPC. - Usando o
GrpcChannelpara construir o cliente 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();
}
O cliente Greeter chama o método assíncrono SayHello . O resultado da SayHello chamada é exibido:
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();
}
Teste o cliente gRPC com o serviço gRPC Greeter
- No serviço Greeter, pressione
Ctrl+F5para iniciar o servidor sem o depurador. - No projeto
GrpcGreeterClient, pressioneCtrl+F5para iniciar o cliente sem o depurador.
O cliente envia uma saudação ao serviço com uma mensagem contendo seu nome, GreeterClient. O serviço envia a mensagem "Hello GreeterClient" como resposta. A resposta "Hello GreeterClient" é exibida no prompt de comando:
Greeting: Hello GreeterClient
Press any key to exit...
O serviço gRPC regista os detalhes da chamada bem-sucedida nos logs gravados na linha de comandos.
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
Note
O código neste artigo requer o certificado de desenvolvimento HTTPS ASP.NET Core para proteger o serviço gRPC. Se o cliente gRPC do .NET falhar com a mensagem The remote certificate is invalid according to the validation procedure. ou The SSL connection could not be established., o certificado de desenvolvimento não é confiável. Para corrigir esse problema, consulte Chamar um serviço gRPC com um certificado não confiável/inválido.
Próximos passos
Este tutorial mostra como criar um cliente gRPC do .NET Core e um ASP.NET Core gRPC Server.
No final, você terá um cliente gRPC que se comunica com o serviço gRPC Greeter.
Visualize ou baixe o código de exemplo (como fazer o download).
Neste tutorial, você:
- Crie um servidor gRPC.
- Crie um cliente gRPC.
- Teste o cliente gRPC com o serviço gRPC Greeter.
Prerequisites
- Visual Studio 2019 16.4 ou posterior com a carga de trabalho de desenvolvimento Web e ASP.NET
- SDK do .NET Core 3.1
Criar um serviço gRPC
Inicie o Visual Studio e selecione Criar um novo projeto. Como alternativa, no menu Arquivo do Visual Studio, selecione Novo>Projeto.
Na caixa de diálogo Criar um novo projeto , selecione Serviço gRPC e selecione Avançar:
Nomeie o projeto GrpcGreeter. É importante nomear o projeto GrpcGreeter para que os namespaces correspondam quando você copia e cola o código.
Selecione Criar.
Na caixa de diálogo Criar um novo serviço gRPC :
- O modelo gRPC Service está selecionado.
- Selecione Criar.
Executar o serviço
Pressione Ctrl+F5 para executar sem o depurador.
Visual Studio exibe a seguinte caixa de diálogo quando um projeto ainda não está configurado para usar SSL:
Selecione Sim se confiar no certificado SSL do IIS Express.
A seguinte caixa de diálogo é exibida:
Selecione Sim se concordar em confiar no certificado de desenvolvimento.
Para obter informações sobre como confiar no navegador Firefox, consulte o erro de certificado SEC_ERROR_INADEQUATE_KEY_USAGE do Firefox na secção .
O Visual Studio inicia IIS Express e executa o aplicativo. A barra de endereço mostra
localhost:port#e não algo comoexample.com. Isso porquelocalhosté o nome de host padrão para o computador local. Localhost atende apenas solicitações da Web do computador local. Quando o Visual Studio cria um projeto Web, uma porta aleatória é usada para o servidor Web.
Os logs mostram o serviço escutando em 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
Note
O modelo gRPC está configurado para usar TLS (Transport Layer Security). Os clientes gRPC precisam usar HTTPS para chamar o servidor.
O macOS não suporta ASP.NET Core gRPC com TLS. É necessária uma configuração adicional para executar com êxito os serviços gRPC no macOS. Para obter mais informações, consulte Não é possível iniciar aplicativo gRPC do ASP.NET Core no macOS.
Examinar os arquivos do projeto
GrpcGreeter arquivos de projeto:
-
greet.proto: O arquivo Protos/greet.proto define o
GreetergRPC e é usado para gerar os ativos do servidor gRPC. Para obter mais informações, consulte Introdução ao gRPC. -
Pasta Serviços: Contém a implementação do
Greeterserviço. -
appsettings.json: Contém dados de configuração, como o protocolo usado pelo Kestrel. Para obter mais informações, consulte Configuração no ASP.NET Core. -
Program.cs: Contém o ponto de entrada para o serviço gRPC. Para mais informações, consulte o Host Genérico do .NET no ASP.NET Core. -
Startup.cs: Contém código que configura o comportamento do aplicativo. Para obter mais informações, consulte Inicialização do aplicativo.
Criar o cliente gRPC em um aplicativo de console .NET
- Abra uma segunda instância do Visual Studio e selecione Criar um novo projeto.
- Na caixa de diálogo Criar um novo projeto , selecione Aplicativo de Console (.NET Core) e selecione Avançar.
- Na caixa de texto Nome do projeto , digite GrpcGreeterClient e selecione Criar.
Adicionar pacotes necessários
O projeto de cliente gRPC requer os seguintes pacotes:
- Grpc.Net.Client, que contém o cliente .NET Core.
- Google.Protobuf, que contém APIs de mensagem protobuf para C#.
-
Grpc.Tools, que contém suporte a ferramentas C# para arquivos protobuf. O pacote de ferramentas não é necessário em tempo de execução, portanto, a dependência é marcada com
PrivateAssets="All".
Instale os pacotes usando o Console do Gerenciador de Pacotes (PMC) ou Gerenciar Pacotes NuGet.
Opção PMC para instalar pacotes
No Visual Studio, selecione Ferramentas>NuGet Package Manager>Console do Gerenciador de Pacotes
Na janela Console do Gerenciador de Pacotes , execute
cd GrpcGreeterClientpara alterar os diretórios para a pasta que contém osGrpcGreeterClient.csprojarquivos.Execute os seguintes comandos:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
Opção Gerenciar pacotes NuGet para instalar pacotes
- Clique com o botão direito do rato no projeto no Explorador de Soluções>Gerir Pacotes NuGet.
- Selecione a guia Procurar.
- Digite Grpc.Net.Client na caixa de pesquisa.
- Selecione o pacote Grpc.Net.Client na guia Procurar e selecione Instalar.
- Repita para
Google.ProtobufeGrpc.Tools.
Adicionar greet.proto
Crie uma pasta Protos no projeto de cliente gRPC.
Copie o arquivo Protos\greet.proto do serviço gRPC Greeter para a pasta Protos no projeto de cliente gRPC.
Atualize o namespace dentro do
greet.protoarquivo para o namespace do projeto:option csharp_namespace = "GrpcGreeterClient";Edite o ficheiro do projeto
GrpcGreeterClient.csproj.Clique com o botão direito do mouse no projeto e selecione Editar arquivo de projeto.
Adicione um grupo de itens com um
<Protobuf>elemento que se refira ao arquivo greet.proto :<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Criar o cliente Greeter
- Crie o projeto cliente para criar os tipos no
GrpcGreeterClientnamespace.
Note
Os GrpcGreeterClient tipos são gerados automaticamente pelo processo de compilação. O pacote de ferramentas Grpc.Tools gera os seguintes arquivos com base no arquivo greet.proto :
-
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: O código de buffer de protocolo que preenche, serializa e recupera os tipos de mensagem de solicitação e resposta. -
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Contém as classes de cliente geradas.
Para obter mais informações sobre os ativos C# gerados automaticamente pelo Grpc.Tools, consulte Serviços gRPC com C#: ativos C# gerados.
Atualize o arquivo de cliente Program.cs gRPC com o seguinte código:
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 contém o ponto de entrada e a lógica para o cliente gRPC.
O cliente Greeter é criado por:
- Instanciar um
GrpcChannelque contém as informações para estabelecer a conexão com o serviço gRPC. - Usando o
GrpcChannelpara construir o cliente 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();
}
O cliente Greeter chama o método assíncrono SayHello . O resultado da SayHello chamada é exibido:
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();
}
Teste o cliente gRPC com o serviço gRPC Greeter
- No serviço Greeter, pressione
Ctrl+F5para iniciar o servidor sem o depurador. - No projeto
GrpcGreeterClient, pressioneCtrl+F5para iniciar o cliente sem o depurador.
O cliente envia uma saudação ao serviço com uma mensagem contendo seu nome, GreeterClient. O serviço envia a mensagem "Hello GreeterClient" como resposta. A resposta "Hello GreeterClient" é exibida no prompt de comando:
Greeting: Hello GreeterClient
Press any key to exit...
O serviço gRPC regista os detalhes da chamada bem-sucedida nos logs gravados na linha de comandos.
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
Note
O código neste artigo requer o certificado de desenvolvimento HTTPS ASP.NET Core para proteger o serviço gRPC. Se o cliente gRPC do .NET falhar com a mensagem The remote certificate is invalid according to the validation procedure. ou The SSL connection could not be established., o certificado de desenvolvimento não é confiável. Para corrigir esse problema, consulte Chamar um serviço gRPC com um certificado não confiável/inválido.