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入门学习之旅(八)的更多相关文章

  1. Egret入门学习日记 --- 第八篇(书中 2.0~2.6节 内容)

    第八篇(书中 2.0~2.6节 内容) 好!开始把前三章的内容录入进来. 但是!由于第一章说的内容都是在介绍白鹭引擎的背景信息,我就不在日记中写了. 直接开始从第二章写起. 2.0节 中提到了IDE( ...

  2. Spring学习之旅(八)--SpringMVC请求参数

    现在我们已经完成了一个无参的接口了,但是应用中有很多需要携带参数的场景,我们来看看 ** SpringMVC** 对它的支持. 参数绑定 SpringMVC 提供了一种绑定机制,通过这个机制可以从请求 ...

  3. Spring学习之旅(十)--MockMvc

    在之前的 Spring学习之旅(八)--SpringMVC请求参数 我们是通过在控制台输出来验证参数是否正确,但是这样做实在是太耗时间了,我们今天来学习下 MockMvc,它可以让我们不需要启动项目就 ...

  4. Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板

    原文:Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...

  5. WCF学习之旅—第三个示例之二(二十八)

    上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1)  使用NuGet下载最新版的Entity Fram ...

  6. WCF学习之旅—基于Fault Contract 的异常处理(十八)

       WCF学习之旅—WCF中传统的异常处理(十六) WCF学习之旅—基于ServiceDebug的异常处理(十七) 三.基于Fault Contract 的异常处理 第二个示例是通过定制Servic ...

  7. Spring学习之旅(八)Spring 基于AspectJ注解配置的AOP编程工作原理初探

    由小编的上篇博文可以一窥基于AspectJ注解配置的AOP编程实现. 本文一下未贴出的相关代码示例请关注小编的上篇博文<Spring学习之旅(七)基于XML配置与基于AspectJ注解配置的AO ...

  8. WCF学习之旅—第三个示例之四(三十)

           上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九)   ...

  9. WCF学习之旅—第三个示例之三(二十九)

    上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...

  10. WCF学习之旅—WCF服务部署到IIS7.5(九)

    上接   WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...

随机推荐

  1. JDK11的新特性:HTTP API和reactive streams

    目录 简介 怎么在java中使用reactive streams POST请求的例子 总结 JDK11的新特性:HTTP API和reactive streams 简介 在JDK11的新特性:新的HT ...

  2. 高能有料 | 第二届OpenHarmony技术大会议程速递

       第二届开放原子开源基金会OpenHarmony技术大会如约而至 让我们一起 开封无限惊喜的技术成果 开放无限前沿的议题干货 开启无限可能的未来之门 点击此处报名参会!

  3. 诚邀报名丨首期OpenHarmony开发者成长计划分享日

     OpenAtom OpenHarmony(以下简称"OpenHarmony")开源开发者成长计划,是一项为了鼓励开发者积极参与开源软件的开发维护.帮助开发者在开源项目中成长的社会 ...

  4. 浅谈OpenHarmony LiteOS-A内核之基础硬件——中断控制器GIC400

    一.前言 OpenAtom OpenHarmony(以下简称"OpenHarmony")采用多内核架构,支持Linux内核的标准系统.LiteOS-A的小型系统.LiteOS-M的 ...

  5. OpenHarmony有氧拳击之设备端开发

    一.简介 在一个风和日丽,阳光明媚的下午,码农们都像往常一样正在专注地码代码.突然前面的小哥哥站起来,手握开发板,来回出拳.这是怎么回事? 原来这是一款拳击互动游戏,本文将带你一同解开其中的奥秘.开发 ...

  6. C++ 运算符全解析:从基础概念到实际应用

    C++ 运算符 运算符用于对变量和值执行操作. 在下面的示例中,我们使用 + 运算符将两个值相加: int x = 100 + 50; 虽然 + 运算符经常用于将两个值相加,就像上面的示例一样,但它也 ...

  7. 1、android Studio 打Jar包

    1.创建一个AndroidStudio 工程 注意下面这个Package Name 2.进入Android Studio工程中 选择Project Flies 选项 然后找到 app->src- ...

  8. burp suite历程-安装burp suite

    安装时,捯饬了快一上午,不是jdk高了就是装上后不好使了,后来看了下以下文章,安装成功,特此记录以备不时之需: 内容拷贝至链接:https://juejin.cn/post/6844904111867 ...

  9. 集群部署时的分布式 session 如何实现?

    面试官心理分析 面试官问了你一堆 dubbo 是怎么玩儿的,你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一堆问题,最大的问题就是分布式事务.接口幂等性.分布式锁, ...

  10. BGE M3-Embedding 模型介绍

    BGE M3-Embedding来自BAAI和中国科学技术大学,是BAAI开源的模型.相关论文在https://arxiv.org/abs/2402.03216,论文提出了一种新的embedding模 ...