在 C#和ASP.NET Core中创建 gRPC 客户端和服务器
创始人
2025-01-18 04:02:10
0

关于gRPC和Google protobuf

gRPC 是一种可以跨语言运行的现代高性能远程过程调用 (RPC) 框架。gRPC 实际上已经成为 RPC 框架的行业标准,Google 内外的组织都在使用它来从微服务到计算的“最后一英里”(移动、网络和物联网)的强大用例。
gRPC是一个高性能的开源的通用RPC框架,由Google公司开发,支持常用的C++、Java、Python、C#/.Net、Go、Node、Dart、Kotlin、Object-C、PHP、Ruby等语言,采用protobuf作为数据交换格式,并且采用C++开发,支持Windows 、Linux、macOS跨平台开发。对于跨语言服务调用非常方便,只要使用protobuf定义接口协议,然后按照gRPC语言SDK调用即可。比如我们使用C++对环保数采仪器设备通过串口或者网口传送的数据协议如Modbus协议、HJ212协议、或者厂商自定义的协议进行解析之后,将数据存放到本地数据库,这个时候我们如何将C++的数据传给前端网页呢?
这个时候可以使用多种方式。比如通过数据库、HTTP协议、WebSocket协议、RPC远程过程调用等方式。
我之前做环保的时候,采用C++和环保硬件设备打交道,通过C++后台程序将数采仪数据解析之后存入到本地Sqlite数据库中(分表分页存储),然后由于展示的网页比较简单,只是用网页展示当前站点的数据,前端采用ElementUI和Vue.js,后端采用Node.js。另外,C++后台写了一套RPC服务端接口,Node.js通过RPC客户端调用C++的后台RPC服务,双方之间通过Google Protobuf数据协议交互。

在 gRPC 中,客户端应用程序可以像本地对象一样直接调用不同机器上的服务器应用程序上的方法,从而使您更轻松地创建分布式应用程序和服务。与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以远程调用的方法及其参数和返回类型。在服务器端,服务器实现这个接口并运行一个gRPC服务器来处理客户端调用。在客户端,客户端有一个存根(在某些语言中简称为客户端),它提供与服务器相同的方法。
gRPC服务调用示意图
gRPC 客户端和服务器可以在各种环境中运行和相互通信(从 Google 内部的服务器到您自己的桌面),并且可以用 gRPC 支持的任何语言编写。例如,您可以使用 Java 轻松创建 gRPC 服务器,并使用 Go、Python 或 Ruby 编写客户端。此外,最新的 Google API 将具有其接口的 gRPC 版本,让您可以轻松地将 Google 功能构建到您的应用程序中。

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

在 C#和ASP.NET Core中创建 gRPC 客户端和服务器十分简单,可以参考微软官方的几篇文章:

  • 使用 C# 的 gRPC 服务
  • 使用 .NET 客户端调用 gRPC 服务
  • 教程:在 ASP.NET Core 中创建 gRPC 客户端和服务器
    Create a gRPC client and server in ASP.NET Core 7

Create a gRPC client and server in ASP.NET Core 8

对应在VS2022中分别运行GRPC服务端和客户端的SayHello示例接口调用如下图所示:
在 ASP.NET Core 中创建 gRPC 客户端和服务器

  • C# / .NET

C# 中的 gRPC 简介视频教程

另外,油管上面有来自UP主IAmTimCorey于2019年9月30日创作的一篇关于C#中使用GRPC的视频,地址为:Intro to gRPC in C# - How To Get Started
相关示例代码我已经上传到我的Github仓库,地址为:https://github.com/ccf19881030/GrpcGreeterDemo
GRPC C#示例程序
我们git clone https://github.com/ccf19881030/GrpcGreeterDemo.git 源代码到本地后,使用VS2022打开GrpcGreeterDemo.sln解决方案,里面有GrpcGreeterGrpcGreeterClient两个项目,分别是基于ASP.Net Core的gRPC服务端程序和基于.NetCore控制台的gRPC客户端程序,我的VS2022使用的是.NetCore 7.0。如下图所示:
GRPC C#示例程序
我们首选将GrpcGreeter gRPC服务端程序作为启动项目,然后运行,如下图所示:
启动gRPC服务端
接着我们再将GrpcGreeterClient gRPC客户端作为启动项目,然后运行,结果如下图所示:
启动运行gRPC客户端

参考资料

  • https://grpc.io/
  • Introduction to gRPC
  • gRPC-Quick start
  • https://github.com/grpc/grpc The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
  • gRPC in 5 minutes | Eric Anderson & Ivy Zhuang, Google
  • Protocol Buffers
  • Protocol Buffers - Google’s data interchange format
  • 使用 ASP.NET Core 的 gRPC 服务
  • Intro to gRPC in C# - How To Get Started
  • https://github.com/ccf19881030/GrpcGreeterDemo
  • 将本地托管代码添加到 GitHub

相关内容

热门资讯

2分钟带你讲解!拱趴大菠萝有辅... 拱趴大菠萝有辅助工具吗开挂教程视频分享装挂详细步骤在当今的网络游戏中,拱趴大菠萝有辅助工具吗作为一种...
第十分钟带你了解!八闽状元郎竹... 第十分钟带你了解!八闽状元郎竹简茶馆辅助(辅助挂)一直真的有挂(有挂辅助)-哔哩哔哩;八闽状元郎竹简...
第2分钟了解!微信呢小程序游戏... 第2分钟了解!微信呢小程序游戏辅助器,赣牌圈小程序破解版,介绍教程(确实有挂)-哔哩哔哩;AI辅助机...
法子外挂!来玩德州破解器,德州... 大家好,今天小编来为大家解答德州私人局怎么透视这个问题咨询软件客服可以免费测试直接加微信(13670...
第九分钟带你详情!微信小程序挂... 第九分钟带你详情!微信小程序挂后台,胡乐辅助脚本,切实教程(有挂技巧)-哔哩哔哩 了解更多开挂安装加...
3分钟带你发现!情怀国粹外挂(... 3分钟带你发现!情怀国粹外挂(辅助挂)果然是有挂(了解有挂)-哔哩哔哩;相信小伙伴都知道这个情怀国粹...
五分钟晓得!蘑菇辅助网,玖游卡... 五分钟晓得!蘑菇辅助网,玖游卡五星辅助,分享教程(有挂秘笈)-哔哩哔哩;1、不需要AI权限,帮助你快...
指南外挂!xpoker辅助神器... 指南外挂!xpoker辅助神器,德普之星私人局辅助器,必赢方法(有挂解惑)-哔哩哔哩>>您好:软件加...
8分钟带你详情!小南四川长牌辅... 8分钟带你详情!小南四川长牌辅助,闲来辅助平台,解密教程(存在有挂)-哔哩哔哩 >>您好:软件加薇1...
第十分钟带你了解!八闽状元郎竹... 第十分钟带你了解!八闽状元郎竹简茶馆辅助(辅助挂)一直真的有挂(有挂透明挂)-哔哩哔哩;是一款可以让...