.netcore grpc一元方法详解

一、grpc服务端搭建

打开visual studio--》新建项目--》创建ASP.NET Core gRPC服务。 这里我是用的.NET 6.0做为底层框架,使用该框架支持grpc的功能更全面。令注使用nuget包Grpc.AspNetCore这里我使用的是2.40.0版本。

cs 复制代码
// 创建dollar.proto文件

syntax = "proto3";

import "google/protobuf/empty.proto";
option csharp_namespace = "GrpcProject";

package dollar;

service DollarRpc{
	rpc ServerOne (ServerRequest) returns (ServerResponse);
	rpc ServerTwo (ServerRequest) returns (google.protobuf.Empty);
}

message ServerRequest{
	string name = 1;
	double height = 2;
	int32 age = 3;
	bool flag = 4;
	float x = 5;
	float y = 6;
	float z= 7;
	repeated string departments = 8;
}

message ServerResponse
{
	bool result = 1;
}

创建好.proto文件,在项目文件中配置如下

cs 复制代码
 <ItemGroup>
    <Protobuf Include="Protos\dollar.proto" GrpcServices="Server" ProtoCompile="true" />
  </ItemGroup>

也可以鼠标右键.proto文件属性选择Protobuf compiler 同时配置 gRPC Stub Classes项为Server only;同时Compile为true 进行编译;会自动生成服务端可用的基础代码。

同时需要在program或者startup中进行注册和启用:

cs 复制代码
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);
            builder.Services.AddGrpc();
            var app = builder.Build();
            app.MapGrpcService<DollarService>();
            app.Run();
        }

最后启动服务:

二、grpc客户端调用

  1. 创建客户端程序winform
  2. 引用Grpc.AspNetCore nuget包;里面包含Google.Protobuf、Grpc.AspNetCore.Server.ClientFactory、Grpc.Tool三个子包
  3. 引入服务端.proto文件
  4. 在项目文件中.proto文件为客户端文件,并进行编译生成客户端grpc代码
cs 复制代码
  <ItemGroup>
    <Protobuf Include="Protos\dollar.proto" GrpcServices="Client" ProtoCompile="true" />
  </ItemGroup>
  1. 客户端代码
cs 复制代码
            var channel = GrpcChannel.ForAddress("https://localhost:7188");

            var dollarClient = new DollarRpc.DollarRpcClient(channel);
            ServerRequest request = new ServerRequest
            {
                Name = "test",
                Height = 100.3D,
                Age = 18,
                Flag = true,
                X = 50.32F,
                Y = 40.28F,
                Z = 35.6F,
                Departments =
                { "测试一部", "测试二部", "测试三部","测试四部", "测试五部", "测试六部", "测试七部", "测试八部", "测试九部", "测试十部"
                }
            };
            // 服务方法一
            var response = dollarClient.ServerOne(request);

            // 服务方法二
            Empty empty = dollarClient.ServerTwo(request);

6.启动服务调用执行结果

三、内容概述

这是简易的一元方法执行方式,后续会逐渐延申,尽量面面俱到的阐述所有功能点。

项目百度网盘:

链接:https://pan.baidu.com/s/1xs8HiGaZgiY-SUb6ZkRhGg

提取码:i6ej

相关推荐
小先生8126 天前
.NET Core后台任务队列
.net·.netcore
MoFe16 天前
【.net core】【watercloud】动态数据转换为静态表格,或者表格数据返回需要后处理
.netcore
吹牛不交税12 天前
.netcore项目部署在ubuntu22.04虚拟机的docker中的过程记录
docker·容器·.netcore
weixin_4219947815 天前
基于 .NET 9.0 的高性能轻量级令牌桶限流服务
.net·.netcore·令牌桶
weixin_4219947815 天前
MVC 模式初探
mvc·.net·.netcore
weixin_4219947817 天前
互联网与 Web 应用简介
.net·.netcore
全栈小519 天前
【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理
人工智能·c#·json·.netcore·deepseek
时光追逐者20 天前
C#/.NET/.NET Core优秀项目和框架2026年1月简报
c#·.net·.netcore
大尚来也22 天前
双库协同,各取所长:.NET Core 中 PostgreSQL 与 SQLite 的优雅融合实战
postgresql·sqlite·.netcore
吹牛不交税23 天前
admin.net-v2 框架使用笔记-netcore8.0/10.0版
vue.js·.netcore