C#如何使用gRPC通信 .NET gRPC服务创建与调用方法

admin 百科 16
.NET中使用gRPC通信需三步:定义一致的.proto协议文件、服务端注册Grpc并实现继承XXXBase的服务类、客户端用GrpcChannel创建强类型客户端调用;注意csharp_namespace匹配、HTTPS配置及.proto生成设置。

C#如何使用gRPC通信 .NET gRPC服务创建与调用方法-第1张图片-佛山资讯网

在.NET中使用gRPC通信,核心是定义协议(.proto文件)、生成客户端和服务端代码、启动服务并调用。整个流程不复杂但需注意几个关键点:协议必须严格一致、服务需正确注册、客户端需用强类型通道调用。

定义gRPC服务接口(.proto文件)

所有gRPC通信都从一个.proto文件开始。它声明服务方法、请求和响应消息结构,是服务端与客户端的唯一契约。

示例 greet.proto

syntax = "proto3";

option csharp_namespace = "MyGrpcService";

package greet;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

登录后复制

⚠️ 注意:csharp_namespace 必须与项目命名空间匹配;package 影响生成的C#类嵌套路径。

创建.NET gRPC服务端

新建 ASP.NET Core gRPC 项目(或在现有Web项目中添加gRPC支持):

  • 安装 Grpc.AspNetCore NuGet 包
  • Program.cs 中注册服务和中间件:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddGrpc(); // 启用gRPC支持

var app = builder.Build();
app.MapGrpcService<GreeterService>(); // 注册你的服务实现
app.MapGet("/", () => "Communication with gRPC endpoints.");

登录后复制

实现服务类 GreeterService.cs

public class GreeterService : Greeter.GreeterBase
{
    public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
    {
        return Task.FromResult(new HelloReply { Message = $"Hello, {request.Name}!" });
    }
}

登录后复制

✅ 确保继承自 XXXBase(由.proto生成),且方法签名完全匹配。

标签: go app ssl ai switch google 常见问题 c# .net c#类 web项目

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~