gRPC(Google Remote Procedure Call)是一个高性能的开源 RPC 框架,它基于 HTTP/2 协议,支持多种编程语言,非常适合微服务架构。本文将带您了解如何在 C# 中使用 gRPC,构建一个简单的示例服务。
一、环境准备
-
安装 .NET SDK
前往 .NET 官方下载页面 安装最新版本的 .NET SDK。 -
安装 gRPC 工具
使用以下命令安装 gRPC NuGet 包:dotnet add package Grpc.AspNetCore dotnet add package Grpc.Tools
-
创建项目
使用以下命令创建一个新的 ASP.NET Core Web 应用程序:dotnet new grpc -o GrpcDemo
-
进入项目目录
cd GrpcDemo
二、定义 gRPC 服务
在项目中找到 Protos
文件夹,并打开 greet.proto
文件。我们会在这里定义我们的 gRPC 服务。
syntax = "proto3";
option csharp_namespace = "GrpcDemo";
package greet;
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply);
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings.
message HelloReply {
string message = 1;
}
三、实现 gRPC 服务
打开 Services
文件夹,在 GreeterService.cs
文件中实现 Greeter
服务。
using Grpc.Core;
using System.Threading.Tasks;
namespace GrpcDemo.Services
{
public class GreeterService : Greeter.GreeterBase
{
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
var message = $"Hello, {request.Name}!";
return Task.FromResult(new HelloReply { Message = message });
}
}
}
四、配置 gRPC 服务
在 Startup.cs
文件中,确保在 ConfigureServices
方法中添加 gRPC 服务组件:
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc();
}
并在 Configure
方法中配置 gRPC 路由:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>();
});
}
五、客户端实现
我们还需要创建一个 gRPC 客户端来测试我们的服务。创建一个新的控制台应用程序:
dotnet new console -o GrpcClient
cd GrpcClient
将之前安装的 gRPC NuGet 包添加到客户端项目中:
dotnet add package Grpc.Net.Client
现在,创建一个 Program.cs
文件,并实现客户端请求:
using Grpc.Net.Client;
using System;
using System.Threading.Tasks;
namespace GrpcClient
{
class Program
{
static async Task Main(string[] args)
{
// 连接到 gRPC 服务器
var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
// 发起请求
var reply = await client.SayHelloAsync(new HelloRequest { Name = "World" });
Console.WriteLine("Greeting: " + reply.Message);
// 等待输入以便查看结果
Console.ReadLine();
}
}
}
六、运行服务和客户端
-
运行 gRPC 服务
在GrpcDemo
项目中,运行以下命令:dotnet run
-
运行 gRPC 客户端
在GrpcClient
目录下,运行:dotnet run
您应该能在控制台看到输出:
Greeting: Hello, World!
总结
在本篇博客中,我们介绍了如何在 C# 中使用 gRPC 构建简单的服务和客户端。通过定义 .proto
文件,实现 gRPC 服务,以及创建和调用客户端,您现在可以开始构建更复杂的 gRPC 应用程序。希望本文对您有帮助,欢迎关注本博客获取更多内容!
如果您对 gRPC 有其他问题或想分享经验,请在下方评论区留言!
标签:服务,C#,gRPC,详解,dotnet,using,message,客户端 From: https://blog.csdn.net/weixin_42249904/article/details/142328445