当前位置: 代码网 > it编程>编程语言>Asp.net > gRPC入门学习之旅(二)

gRPC入门学习之旅(二)

2024年05月16日 Asp.net 我要评论
gRPC是一个高性能、通用的开源远程过程调用(RPC)框架,基于底层HTTP/2协议标准和协议层Protobuf序列化协议开发,支持众多的开发语言,由Google开源。 gRPC也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行... ...

    grpc入门学习之旅(一)

     grpc是一个高性能、通用的开源远程过程调用(rpc)框架,基于底层http/2协议标准协议层protobuf序列化协议开发,支持众多的开发语言,由google开源。

     grpc也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 grpc服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。

     grpc 客户端和服务端可以在多种环境中运行和交互。你可以用java创建一个 grpc 服务端,用 go、python、c# 来创建客户端。

特点:

  • 跨语言;
  • 基于http/2之上的二进制协议;
  • protobuf序列化机制,比json体积小,网络传输快;
  • 一个连接上可以多路复用,并发处理多个请求和响应;
  • 多种语言的类库实现;
  • 服务定义文件和自动代码生成(.proto 文件和 protobuf 编译工具);
  • 适合高性能轻量的微服务,一般对外的接口用restful api,内部服务的调用用grpc。grpc是一个分布式服务框架,和以前的webservice,wcf类似;
  • grpc还提供了很多扩展点,用于对框架进行功能定制和扩展,例如,通过开放负载均衡接口可以无缝的与第三方组件进行集成对接(zookeeper、域名解析服务、slb 服务等)。

    grpc 使用 http/2 作为传输协议。 虽然与 http 1.1 也能兼容,但 http/2 具有许多高级功能:

    用于数据传输的二进制组帧协议 - 与 http 1.1 不同,http 1.1 是基于文本的。

    对通过同一连接发送多个并行请求的多路复用支持 - http 1.1 将处理限制为一次处理一个请求/响应消息。

    双向全双工通信,用于同时发送客户端请求和服务器响应。

    内置流式处理,支持对大型数据集进行异步流式处理的请求和响应。

    减少网络使用率的标头压缩。

     grpc 是轻量型且高性能的。 其处理速度可以比 json 序列化快 8 倍,消息小 60% 到 80%。 在 microsoft windows communication foundation (wcf) 中,grpc 的性能超过经过高度优化的 nettcp 绑定的速度和效率。 与偏向于 microsoft 堆栈的 nettcp 不同,grpc 是跨平台的。


接下来,我们通过一个demo,来学习一下,如何在visual studio 2022中实现grpc功能。

2、创建grpc服务端

2.1、创建grpc服务端项目

1. 打开visual studio 2022,在开始界面中选择“创建新项目”。如下图。

 

2.或者在菜单上点击文件—>新建—>项目—>弹出“创建新项目”的界面。如下图。

3. visual studio 2022弹出的“创建新项目”的对话框中做如下选择。如下图。

  • 在最左边的下拉框中,选择 “c# ,如下图中1处
  • 在中间的下拉框中,选择 “所有平台”,如下图2处。
  • 在最右边的下拉框中,选择“web”,如下图3处。
  • 在下图中4处,选择“asp.net core grpc服务”grpc项目模板,点击“下一步”按钮。

     

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

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

6.默认项目文件结构,如下图所示:

2.2、项目文件说明

  • appsettings.json
    我们打开appsettings.json文件,其中有一个protocols属性,代表基于http2进行通信。

 

 

  • protos
    在创建的项目中,我们会看到有一个名称为protos的文件夹,该文件夹用于存放proto协议文件,其中的greet.proto是项目默认给我们创建的一个示例文件,它会根据协议自动生成需要的类文件。该协议文件中的具体说明如下图所示:

 

  • services
    在创建的项目中,我们会看到有一个名称services的文件夹,该文件夹用于存放具体的业务实现类(即:服务类),其中的greeterservice.cs是项目默认给我们创建的一个示例文件,具体说明如下图所示:

       上述图中的greeter.greeterbase来自greet.proto文件生成的类文件,具体位置如下图所示:

 

 

  • 注册服务

     在visual studio 2022的“解决方案资源管理器”中找到program.cs文件,使用鼠标双击打开program.cs文件,在这个文件中需要添加grpc服务,同时需要将所有的业务服务进行注册,如下图所示:

 

 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com