gRPC入门学习之旅(八)

grpc · 浏览次数 : 8

小编点评

## gRPC入门学习之旅(一) 1. **获取 grpc 协议文件**: * 在服务端项目 Demo.GrpcService 中,找到 Protos 目录,里面包含 Grpc 服务定义的 proto 文件。 * 将这些 proto 文件复制到项目解决方案资源管理器中的 Demo.Grpc.Client 项目中。 2. **在 Visual Studio 中设置项目启动项**: * 在解决方案资源管理器中右键点击 Demo.Grpc.Client 项目。 * 选择“添加—》服务引用或连接的服务”。 * 在“服务引用”部分中选择 “gRPC”。 * 在“连接的服务”部分中选择“添加服务引用”。 * 在“添加新的gRPC服务引用”对话框中选择“文件”,选择 Protos 文件夹中的 UserInfo.proto。 * 点击“下一步”。 3. **连接到 gRPC 服务**: * 在工具窗口中选择“连接服务”。 * 选择“连接服务”。 * 在“连接服务”窗口中选择“gRPC”并点击“下一步”。 4. **设置 gRPC 服务**: * 在“添加新的gRPC服务引用”对话框中,选择“文件”。 * 选择 Demo.GrpcSERVICE 项目中的 protos 文件夹中的 UserInfo.proto。 * 点击“下一步”。 5. **生成 gRPC 服务类**: * 在“连接服务”窗口中选择“生成 gRPC 服务类”。 6. **测试 gRPC 服务**: * 在解决方案资源管理器中找到 Demo.Grpc.Client 项目,右键单击并选择“运行”。 * 启动服务端项目。 7. **运行 gRPC 服务**: * 在服务端项目中运行 gRPC 服务。 ## gRPC入门学习之旅(二) 1. **添加 gRPC 服务配置**: * 在 Visual Studio 中创建公共类库并添加 gRPC 服务协议文件引用。 * 在解决方案资源管理器中,在 Demo.GrpcService 项目中创建新的 ItemGroup节点,并将 GrpcServices 属性设置为 “Client”。 2. **编译和生成 GRPC 类**: * 在解决方案资源管理器中,选中 Demo.Grpc.Client 项目,右键单击并选择“重新生成”。 * 在“解决方案资源管理器”中,使用鼠标左键选择项目名称“Demo.Grpc.Client”,然后单击鼠标右键,在弹出的快捷菜单中选择“在文件资源管理器中打开文件夹”菜单项。 3. **运行服务端**: * 在解决方案资源管理器中找到 Demo.Grpc.Client 项目,右键单击并选择“运行”。 ## gRPC入门学习之旅(三) 1. **创建公共类库**: * 在 Visual Studio 2022 菜单栏上选择“文件—》新建—》项目”。 * 在解决方案资源管理器中,选择“添加—》服务引用或是连接的服务”。 * 在“服务引用”和“连接服务的”选项中选择相应的项目。 2. **配置 gRPC 服务**: * 在“服务引用”部分中选择“添加服务引用”。 * 选择“gRPC”。 * 在“连接服务”部分中选择 “添加服务引用”。 3. **添加 gRPC 服务类**: * 在“连接服务”窗口中选择“生成 gRPC 服务类”。 * 在“添加 gRPC 服务类”窗口中选择“文件”,选择 Protos 文件夹中的 UserInfo.proto。 4. **启动服务端**: * 在解决方案资源管理器中找到 Demo.Grpc.Client 项目,右键单击并选择“运行”。 * 启动服务端项目。 ## gRPC入门学习之旅(四) 1. **运行 gRPC 服务**: * 在服务端项目中运行 gRPC 服务。 2. **连接到 gRPC 服务**: * 使用 Visual Studio 2022 的“添加连接的服务”功能时,选择 UserInfo.proto 文件作为链接文件而不是副本文件添加到类库项目中,这样将自动应用到客户端项目中。 3. **设置 gRPC 服务**: * 在解决方案资源管理器中找到 Demo.Grpc.Client 项目,右键单击并选择“添加—》服务引用或连接服务”。 * 在“服务引用”部分中选择“文件”,选择 Protos 文件夹中的 UserInfo.proto。 * 在“下一步”窗口中选择 “生成 gRPC 服务类”。 4. **测试 gRPC 服务**: * 在解决方案资源管理器中找到 Demo.Grpc.Client 项目,右键单击并选择“运行”。 * 启动服务端项目。

正文

 gRPC入门学习之旅(一)


3.7、添加proto协议文件

1.将服务端项目Demo.GrpcService中的Protos目录中的Grpc协议文件复制过来,如下图所示:

 

 

2.在Visual Studio 2022的解决方案资源管理器中,使用鼠标左键双击项目Demo.Grpc.Client,在文本编辑器中打开项目文件,并进行编辑,增加ItemGroup节点,将Demo.GrpcService中有关Grpc的两个配置项复制过来,将其中GrpcServices 属性由Server修改为“Client”,配置项如下:

 

    <ItemGroup>

        <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />

        <Protobuf Include="Protos\UserInfo.proto" GrpcServices="Client" />

    </ItemGroup>

 


3.8、客户端编译生成GRPC类

1. 在“解决方案资源管理器”中,使用鼠标左键选中项目名称“Demo.Grpc.Client”,然后单击鼠标右键,在弹出的快捷菜单中选择“重新生成”菜单项。

2. 在“解决方案资源管理器”中,使用鼠标左键选中项目名称“Demo.Grpc.Client”,然后单击鼠标右键,在弹出的快捷菜单中选择“在文件资源管理器中打开文件夹”菜单项。如下图。

 

3.我们打开“文件资源管理器”,进入到Demo.Grpc.Common\obj\Debug\ net7.0 目录,发现此时目录下也有与服务端一样的4个.cs文件,就是GRPC协议文件对应的类文件,如下图所示:

 

4.在Visual Studio 2022,将“Demo.Grpc.Client”项目设为启动项目,按F5,启动。会出现如下图的错误。

 

 

 

3.9、创建公共类库并添加Proto协议文件引用

我们在这里使用一个公共类库来添加协议引用。

 

1. 在Visual Studio 2022菜单栏上选择“文件—》新建—》项目”。

或者在Visual Studio 2022的解决方案资源管理器中,使用鼠标右键单击“解决方案‘Demo.GrpcService’”,在弹出的快捷菜单中选择“添加—》新建项目”。如下图。

2. Visual Studio 2022弹出的“创建新项目”的对话框中做如下选择。如下图。

  • 在最左边的下拉框中,选择 “C# ,如下图中1处
  • 在中间的下拉框中,选择 “所有平台”,如下图2处。
  • 在最右边的下拉框中,选择“库”,如下图3处。
  • 在下图中4处,选择“类库”模板,点击“下一步”按钮。

     

4.在弹出的“配置新项目”的对话框中,如下图,在“项目名称”输入框中,输入“Demo.Grpc.Common”。然后使用鼠标点击“下一步”按钮。

5. 在弹出的“其他信息”的对话框,如下图。在“框架”下拉框中,选择“NET 7.0(标准期限支持)”。其他值选择默认值即可。然后使用鼠标点击“创建”按钮。项目创建成功。

6.在解决方案资源管理器中——>在项目Demo.Grpc.Common中的依赖项上鼠标右键单击——>弹出一个菜单,选中“管理NuGet程序包”。

7. 在打开的NuGet包管理界面的中选择“浏览”标签页,在搜索框中输入“google”,找到最新版本google.protobuf,点击安装。

8.  Visual Studio 2022 开始安装Google.Protobuf,会弹出安装确认界面,点击“OK”按钮。

9. 在打开的NuGet包管理界面的中“浏览”标签页的搜索框中输入“grpc”,然后依次安装以下二个包。

Grpc.Tools

Grpc.Net.ClientFactory

10. 在以上二个包全部安装完成之后,NuGet包管理界面的中选择“已安装”标签页,会看到刚才安装的三个包,如下图。

11. 在 Visual Studio 2022 的“解决方案资源管理器”中,使用鼠标右键单击“Demo.Grpc.Common”,在弹出的快捷菜单中选择“添加—》服务引用或是连接的服务”。“服务引用”和“连接的服务”均在同一个UI 下进行管理。 如下图。

12.在出现的工具窗口中,选择“连接的服务”部分,然后在“服务引用”部分中选择“添加服务引用”,选择“gRPC”并点击“下一步”。如下图。

13.在“添加新的gRPC服务引用”弹出界面中,选择“文件”,点击“浏览”按钮,在弹出对话框中找到 Demo.GrpcSERVICE 项目中的 protos 文件夹中的UserInfo.proto,在“选择要生成的类的类型”下保留“客户端”,然后选择“完成”。如下图。

14.在添加完UserInfo.proto文件之后,界面返回到“连接的服务”界面,会看到服务引用中有我们刚才添加的引用文件。如下图。

 

 

15. 使用 Visual Studio 2022的“添加连接的服务”功能时,UserInfo.proto 文件将作为链接文件而不是副本文件添加到类库项目中,因此对服务项目中文件的更改将自动应用到客户端项目中。 csproj 文件中的 <Protobuf> 元素如下所示:

 
  <ItemGroup>

    <Protobuf Include="..\Demo.GrpcService\Protos\UserInfo.proto" GrpcServices="Client">

      <Link>Protos\UserInfo.proto</Link>

    </Protobuf>

  </ItemGroup>

 

与gRPC入门学习之旅(八)相似的内容:

gRPC入门学习之旅(八)

gRPC是一个高性能、通用的开源远程过程调用(RPC)框架,基于底层HTTP/2协议标准和协议层Protobuf序列化协议开发, gRPC 客户端和服务端可以在多种环境中运行和交互。你可以用Java创建一个 gRPC 服务端,用 Go、Python、C# 来创建客户端。本系统文章详细描述了如何创建一...

gRPC入门学习之旅(十)

gRPC是一个高性能、通用的开源远程过程调用(RPC)框架,基于底层HTTP/2协议标准和协议层Protobuf序列化协议开发, gRPC 客户端和服务端可以在多种环境中运行和交互。你可以用Java创建一个 gRPC 服务端,用 Go、Python、C# 来创建客户端。本系统文章详细描述了如何创建一...

gRPC入门学习之旅(九)

gRPC是一个高性能、通用的开源远程过程调用(RPC)框架,基于底层HTTP/2协议标准和协议层Protobuf序列化协议开发, gRPC 客户端和服务端可以在多种环境中运行和交互。你可以用Java创建一个 gRPC 服务端,用 Go、Python、C# 来创建客户端。本系统文章详细描述了如何创建一...

Asp-Net-Core学习笔记:gRPC快速入门

## 前言 此前,我在做跨语言调用时,用的是 Facebook 的 Thrift,挺轻量的,还不错。 >Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。它通过一个代码

gRPC入门

1. gRPC简介 gRPC是一种高性能、开源和通用的远程过程调用(RPC)框架,由Google开源并维护。它使用Protocol Buffers(protobuf)作为接口定义语言(IDL),提供跨平台、跨语言的RPC调用支持。gRPC具有以下几个特点: 高性能:使用HTTP/2协议,支持多路复用

[转帖]gRPC Load Balancing

https://www.cnblogs.com/charlieroro/p/14312362.html 翻译自:https://grpc.io/blog/grpc-load-balancing/ 这是gRPC负载均衡的第一篇,后续会给出基于golang XDS服务发现的例子,了解golang XDS

GRPC与 ProtoBuf 的理解与总结

转载请注明出处: 1.GRPC 官网:https://www.grpc.io/ gRPC 官方文档中文版:http://doc.oschina.net/grpc RPC 框架的目标就是让远程服务调用更加简单、透明,其负责屏蔽底层的传输方式(TCP/UDP)、序列化方式(XML/Json)和通信细节。

文盘Rust -- tonic-Rust grpc初体验

gRPC 是开发中常用的开源高性能远程过程调用(RPC)框架,tonic 是基于 HTTP/2 的 gRPC 实现,专注于高性能、互操作性和灵活性。该库的创建是为了对 async/await 提供一流的支持,并充当用 Rust 编写的生产系统的核心构建块。今天我们聊聊通过使用tonic 调用grpc的的具体过程。

gRPC vs. HTTP:网络通信协议的对比

## 概述 gRPC 和 HTTP 是两种常见的网络通信协议,用于在客户端和服务器之间进行通信。它们具有不同的特点和适用场景,下面对它们进行详细比较。 ## HTTP(Hypertext Transfer Protocol) ### 特点: 1. **简单易用**:HTTP 使用简单的请求方法和状态

gRPC如何保障数据安全传输

## 什么是 gRPC? gRPC 是由 Google 开发的高性能、开源的 RPC(Remote Procedure Call)框架,用于在客户端和服务器之间进行通信。它基于 Protocol Buffers(protobuf)进行消息序列化和反序列化,支持多种通信协议,如 HTTP/2、TCP