qaz 发表于 2025-2-7 02:38:00

在 ASP.NET Core 中创建 gRPC 客户端和服务器

前言

gRPC 是一种高性能、开源的远程过程调用(RPC)框架,它基于 Protocol Buffers(protobuf)定义服务,并使用 HTTP/2 协议进行通信。
新建项目

新建解决方案GrpcDemo
新建webapi项目GrpcServer作为grpc服务端项目
添加包
    <PackageReference Include="Grpc.AspNetCore" Version="2.67.0" />    <PackageReference Include="Grpc.Tools" Version="2.67.0">新建文本文件greeter.proto
syntax = "proto3";option csharp_namespace = "GrpcServer";package greet;// The greeting service definition.service Greeter {// Sends a greetingrpc 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;}编辑GrpcServer项目文件,添加

新建类GreeterService.cs
using Grpc.Core;namespace GrpcServer{    public class GreeterService : Greeter.GreeterBase    {      private readonly ILogger<GreeterService> _logger;      public GreeterService(ILogger<GreeterService> logger)      {            _logger = logger;      }      public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)      {            return Task.FromResult(new HelloReply            {                Message = "Hello " + request.Name            });      }    }}修改Program.cs
using GrpcServer;var builder = WebApplication.CreateBuilder(args);// Add services to the container.builder.Services.AddControllers();// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbucklebuilder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen();builder.Services.AddGrpc();var app = builder.Build();app.MapGrpcService<GreeterService>();// Configure the HTTP request pipeline.if (app.Environment.IsDevelopment()){    app.UseSwagger();    app.UseSwaggerUI();}app.UseHttpsRedirection();app.UseAuthorization();app.MapControllers();app.Run();就是添加下面两行代码
builder.Services.AddGrpc();app.MapGrpcService<GreeterService>();新建grpc客户端项目GrpcClient

添加包
    <PackageReference Include="Google.Protobuf" Version="3.28.3" />    <PackageReference Include="Grpc.Net.Client" Version="2.67.0" />    <PackageReference Include="Grpc.Tools" Version="2.67.0">复制服务器端端的greeter.proto到客户端项目
编辑GrpcClient项目文件,加

编辑Program.cs文件
using Grpc.Net.Client;using GrpcClient;using var channel = GrpcChannel.ForAddress("https://localhost:7052");var client = new Greeter.GreeterClient(channel);var reply = await client.SayHelloAsync(                  new HelloRequest { Name = "wxy" });Console.WriteLine("Greeting: " + reply.Message);Console.WriteLine("Press any key to exit...");Console.ReadKey();7052改成你的服务器端运行端口
结果展示

运行服务器端

运行客户端

作者

吴晓阳(手机:13736969112微信同号)
页: [1]
查看完整版本: 在 ASP.NET Core 中创建 gRPC 客户端和服务器