当前位置: 首页 > news >正文

[C#]实现GRPC通讯的服务端和客户端实例

最近要做两个软件之间消息的通讯,学习了一下GRPC框架的通讯。根据官方资料做了一个实例。
官方资料请参考:Create a .NET Core gRPC client and server in ASP.NET Core | Microsoft Learn

开发平台:Visual Studio 2022
开发前提条件:VS2022下载:ASP.NET and web development

vs创建服务端步骤:

.打开VS2022并且新建项目,在创建新项目的对话框中,搜索:gRPC,选择:ASP.NET Core gRPC Service的工程,然后点击下一步。
.出现配置项目的对话框中输入项目名如:[GrpcGreeter ],然后点击下一步。
.选择:.net8.0,然后选择创建。
按Ctrl+F5直接运行该项目工程。会显示以下对话框,点击yes.

开启服务后,服务端显示:

打开一个网络浏览器,输入网址:https://localhost:7147
可以看到:
确认工程文件:
Properties/launchSettings.json:启动设置

Protos/greet.proto:  用于定义通讯的消息的内容。
Services:用于通讯时调用的方法。
appSettings.json:用于Kestrel通讯的协议配置
Programs.cs:配置和启动服务。

vs创建客户端步骤:
.vs2022,新建项目。选择控制台应用,点下一步。
.项目名对话框中输入:GrpcGreeterClient,点下一步。
.设置为.net8.0,点击创建。
.客户端工程中下载安装NuGet包:Grpc.Net.Client,  Google.Protobuf,   Grpc.Tools
.将服务端 的Protos\greet.proto文件拷贝至客户端工程并且将该文件中的命名空间改为客户端的命名空间。option csharp_namespace = "GrpcGreeterClient";
.编辑工程文件:GrpcGreeterClient.csproj,新增一个groupitem项
<ItemGroup>
  <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
</ItemGroup>
.编译客户端工程,自动生成以下文件:
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs 缓冲协议代码
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs 客户端类
.更新Program.cs代码:
其中端口号7147和服务端的端口号保持一致。
.客户端异步调用了SayHello方法,返回回复结果。
.更新服务端 appsettings.Development.json文件为:

测试:
启动服务端 GrpcGreeter工程 Ctrl+F5  执行
启动客户端 GrpcGreeterClient工程   Ctrl+F5  执行
执行界面如下所示:


 

相关文章:

  • 从今年的计算机视觉比赛看风向
  • 基因组学系列4:参考转录本数据库MANE
  • java:实现简单的验证码功能
  • 【Solidity】继承
  • Django Signals
  • 【html+css 绚丽Loading】 - 000003 乾坤阴阳轮
  • 【算法/学习】双指针
  • 25考研计算机组成原理复习·3.5高速缓冲存储器
  • bootchart抓Android系统启动各阶段性能数据
  • 【微服务】Spring Cloud Alibaba 的介绍以及和主要功能
  • Type-C接口主要的几个功能引脚及功能
  • 【题目/训练】:双指针
  • 云主机部署 TiDB 测试集群
  • 景联文科技:一文详解如何构建高质量SFT数据
  • java基础03——Arrays.asList与ArrayList的区别(基本概念、用法、使用场景)
  • 【React系列】如何构建React应用程序
  • 【面试系列】之二:关于js原型
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • canvas绘制圆角头像
  • js对象的深浅拷贝
  • Spring Cloud中负载均衡器概览
  • Swoft 源码剖析 - 代码自动更新机制
  • ucore操作系统实验笔记 - 重新理解中断
  • underscore源码剖析之整体架构
  • Unix命令
  • VuePress 静态网站生成
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 大数据与云计算学习:数据分析(二)
  • 前端性能优化--懒加载和预加载
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 1.Ext JS 建立web开发工程
  • elasticsearch-head插件安装
  • Mac 上flink的安装与启动
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • # centos7下FFmpeg环境部署记录
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • $NOIp2018$劝退记
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (SERIES12)DM性能优化
  • (八)Flink Join 连接
  • (二十四)Flask之flask-session组件
  • (附源码)springboot教学评价 毕业设计 641310
  • (十六)视图变换 正交投影 透视投影
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)memcache、redis缓存
  • (转)Windows2003安全设置/维护
  • (转)大型网站的系统架构
  • (转)负载均衡,回话保持,cookie
  • .Net mvc总结
  • .NET 反射的使用
  • .NET 服务 ServiceController
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • .net连接MySQL的方法