.net gRPC初探 - 从一个简单的Demo中了解并学习gRPC

简介: .net gRPC初探 - 从一个简单的Demo中了解并学习gRPC

一、.NET 上的 gRPC 的简介

gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。

gRPC 的主要优点是:

    • 现代高性能轻量级 RPC 框架。
    • 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。
    • 可用于多种语言的工具,以生成强类型服务器和客户端。
    • 支持客户端、服务器和双向流式处理调用。
    • 使用 Protobuf 二进制序列化减少对网络的使用。

    这些优点使 gRPC 适用于:

      • 效率至关重要的轻量级微服务。
      • 需要多种语言用于开发的 Polyglot 系统。
      • 需要处理流式处理请求或响应的点对点实时服务。

      二、从一个简单的Demo中了解并学习gRPC

      1、创建gRPC服务端

      1)新建一个gRPC项目

      image.gif

      2)新建好的初试gRPC项目结构如下

      image.gif

      3)proto文件

      image.gif

      4) 服务:proto中的方法具体实现 image.gif

      5) proto会自动生成两个类文件,保存proto重新生成即可

      image.gif

      6)在项目的工程文件中(.csproj)可以看到此时的文件情况

      image.gif

      7)开始自己新建上述文件

      ① 首先新建一个proto文件

      添加新项,选择协议缓冲区文件

      image.gif

      ② 更改新建proto文件的属性

      点击项目初始化的greet.proto文件可以看到其属性

      image.gif

      根据初始文件更改我们新建的people.proto文件的属性,注意:生成操作选择[Protobuf compiler]

      image.gif

      gRPC Stub Classes 生成操作选择[Server only]

      image.gif

      ③ 此时,查看工程文件可以看到我们新建文件及其属性设置:和初始文件一样是一个服务器端的协议缓冲区文件

      image.gif

      ④ 按照greet.proto更改people.proto文件,编写服务,增加一个查询方法,并定义其请求类和响应类

      注意:这里的int类型不同于.net代码中的int类型,短整型用int32表示,长整型用int64表示image.gif

      ⑤ 保存并生成people.proto文件,可以看到此时也生成了两个people.proto的类文件

      image.gif

      ⑥ 实现上述的服务:查询方法

      image.gif

      注:这里的People.PeopleBase是由people.proto自动生成的类文件中的基类

      ⑦ 在Startup.cs中注册我们编写的服务

      image.gif

      ⑧ 至此,服务端新建完成

      image.gif

      2、创建gRPC客户端

      1)在解决方案上右键新建一个控制台程序

      2)在NuGet程序包管理器中添加如下程序包

      image.gif

      3)把服务端的proto文件拷贝过来

      image.gif

      4)更改两个proto文件的gRPC Stub Classes属性为[Client only],查看客户端程序的工程文件即可看到更新

      image.gif

      5)客户端也生成了两个proto的类文件

      image.gif

      6)编写基于https的请求测试代码

      image.gif7)设置解决方案的多启动项目,使得服务端客户端同时运行

      image.gif

      8)运行,查看测试调用结果

      image.gif

      至此,gRPC服务与客户端的新建及其简单的调用完成

      三、总结

      上述内容对gRPC做了一个简单的连接,并根据一个demo学习理解gRPC服务端、客户端的通信,进一步体验这种高性能轻量的内部服务调用模式。

      想要更详细全面进一步的学习gRPC,本文在此推荐一个博主写的文章,特别通俗易懂而且全面,

      地址:.NET Core(.NET6)中gRPC使用

      另外,微软官方给出的关于gRPC学习的地址:远程过程调用应用

      关于.NET Core整体的学习,作者有一篇文章进行了详细介绍:ASP.NET Core开发者指南(2022版路线图)

      希望一起学习,一起进步!

      以上就是.net gRPC初探 - 从一个简单的Demo中了解并学习gRPC的介绍,做此记录,如有帮助,欢迎点赞关注收藏!

      目录
      相关文章
      |
      开发框架 Dubbo .NET
      ASP.NET Core grpc
      rpc 相关概念RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。rpc 简单来说:RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯) RPC 是一个...
      78 0
      ASP.NET Core grpc
      |
      6月前
      |
      开发框架 .NET 中间件
      C#/.NET快速上手学习资料集(让现在的自己不再迷茫)
      C#/.NET快速上手学习资料集(让现在的自己不再迷茫)
      184 8
      |
      27天前
      |
      开发框架 缓存 算法
      开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
      开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
      学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
      这篇文章是关于计算机组成原理的王道考研学习笔记,主要介绍了半导体存储器RAM和ROM的相关知识。
      学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
      |
      3月前
      |
      机器学习/深度学习 PyTorch 算法框架/工具
      【文献学习】Phase-Aware Speech Enhancement with Deep Complex U-Net
      文章介绍了Deep Complex U-Net模型,用于复数值的语音增强,提出了新的极坐标掩码方法和wSDR损失函数,并通过多种评估指标验证了其性能。
      54 1
      |
      3月前
      |
      开发框架 .NET API
      C#/.NET/.NET Core推荐学习书籍(24年8月更新)
      C#/.NET/.NET Core推荐学习书籍(24年8月更新)
      |
      3月前
      |
      机器学习/深度学习 前端开发 API
      Gradio.NET:一个快速制作演示demo网页的利器
      Gradio.NET:一个快速制作演示demo网页的利器
      91 0
      |
      5月前
      |
      开发框架 JSON .NET
      学习ASP.NET 中的 默认应用程序配置源
      默认主机配置源 使用命令行配置提供程序的命令行参数
      38 2
      |
      5月前
      |
      前端开发 Java C#
      GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库
      GitHub突破5k Star!这件事情我坚持了3年,努力打造C#/.NET/.NET Core全面的学习、工作、面试指南知识库
      |
      6月前
      |
      机器学习/深度学习 存储 编解码
      多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
      多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
      158 0
      下一篇
      无影云桌面