首页 > 编程语言 >在 ASP.NET Core 中创建 gRPC 客户端和服务器

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

时间:2024-11-24 09:15:00浏览次数:10  
标签:Core ASP gRPC app Services var using message builder

前言

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 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;
}

编辑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/swashbuckle
builder.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微信同号)

标签:Core,ASP,gRPC,app,Services,var,using,message,builder
From: https://www.cnblogs.com/shiningrise/p/18565415

相关文章

  • 用于智能 IoT 解决方案的 AWS IoT 和 Raspberry Pi
    AWSIoTandRaspberryPiforSmartIoTSolutionsMP4创建|视频:h264、1280×720|音频:AAC,44.1KHz,2通道类型:在线学习|语言:英语|持续时间:61讲座(5h44m)|大小:2.31GB使用AWS和RaspberryPi释放IoT的全部潜力–从头开始构建智能、互联的系统!您将学到什......
  • ABP aspnetzero power toole 最新 4.4.0 和谐记录
    参照之前的记录.netzeropowertoole破解日志在用工具创建模型后,点击生成的过程.会在代码目录生成AspNetZeroRadTool的文件夹.总是会覆盖.AspNetZeroRadTool的文件夹中生成当前模型的json文件执行dotnetAspNetZeroRadTool模型.json生成文件所以要处理的......
  • MicroPython 硬件 I2C 驱动 MPU6050 - RaspberryPi Pico 示例
    该文只存放了驱动文件,关于MPU6050的分析请转移到:MPU6050寄存器内容和地址陀螺仪数据输出寄存器(共6个寄存器,地址为0x43-0x48)加速度传感器数据输出寄存器(6个,地址为0x3B-0x40)温度传感器数据输出寄存器(0x41-0x42)WhoamI设备验证MPU6050的默认设备地址为0x68,其存储Who......
  • 代谢组数据分析(二十二):Zscore标准化后主成分分析(PCA)及热图展示
    禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者!文章目录介绍Z-score标准化主成分分析(PrincipalComponentAnalysis,PCA)加载R包数据下载导入数据数据预处理填补缺失值Zscore标准化PCA分析热图展示代谢物聚类簇小提琴图聚类......
  • SSH通信+Ubuntu+PC和Raspberry
    参考:http://wiki.ros.org/ROS/NetworkSetup首先把要通讯的PC和Raspberry连在同一个wifi下.(我这里PC的hostname是zsfmec,Raspberry的hostname是er,hostname就是你打开终端时候绿色字体中@后面的内容)假如想在PC上通过ssh通讯进入Raspberry的系统,首先,在Raspberry终端输......
  • afcore.dll文件丢失影响Omega Strikers运行?Omega Strikers玩家必看afcore.dll文件丢失
    在沉浸于OmegaStrikers这款快节奏、竞技性强的游戏时,突然遭遇afcore.dll文件丢失的问题,无疑会给玩家带来不小的困扰。这一关键文件的缺失,可能导致游戏无法正常启动、运行卡顿,甚至频繁崩溃,严重影响游戏体验。然而,面对这一挑战,玩家无需过度焦虑,因为通过一系列自救措施,你完全有能......
  • .net core web api授权、鉴权、API保护
    前言本文整理asp.netcorewebAPI的授权、鉴权以及注册验证、API保护一系列常用技术手段。本文所有的实现代码可以参考:https://gitee.com/xiaoqingyao/web-app-identity.git用户管理授权和鉴权的前提是要有一个用户管理模块,.net提供一个现有的Identity组件,帮我们完成了大部......
  • .NET Core SqlSugar
    概念:1.官方文档:https://www.donet5.com/Home/Doc?typeId=11802.在vsstudio中导包SqlSugarCore创建模型类:1.vsstudio2022中选择项目2.选择6.03.projram.csusingSqlSugar;varbuilder=WebApplication.CreateBuilder(args);//Addservicestothecontain......
  • ASP.NET Core PDF viewers components Crack
    ASP.NETCorePDFviewerscomponentsCrackASP.NETCorePDFviewerscomponentswithformfillingsupportletusersdirectlycomplete,edit,andsubmitdatawithinPDFforms.TheabilitytoreadandwriteformfieldsinaPDFviewercomponenten......
  • ef core migrations 创建新的迁移程序
    EFCoreMigrations创建一个WebAPI.Migrationsdotnetnewwebapi-nWebAPI.MigrationsProgram.csusingSystem.Reflection;usingMicrosoft.Extensions.DependencyInjection;usingMicrosoft.EntityFrameworkCore;usingMicrosoft.Extensions.Configuration;usingDataA......