首页 > 其他分享 >gRPC入门学习之旅(二)

gRPC入门学习之旅(二)

时间:2024-03-16 10:22:25浏览次数:34  
标签:文件 HTTP 入门 之旅 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服务,同时需要将所有的业务服务进行注册,如下图所示:

 

 

标签:文件,HTTP,入门,之旅,gRPC,创建,如下,服务端
From: https://www.cnblogs.com/chillsrc/p/18076783

相关文章

  • Spring 5.x 源码之旅-59AOP事务的初始化流程一
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • Spring 5.x 源码之旅-59AOP事务的初始化流程二
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 人工智能入门之旅:从基础知识到实战应用(一)
    一、引言人工智能(ArtificialIntelligence,AI)是指利用计算机科学和技术模拟、延伸和扩展人类智能的理论、方法、技术和应用系统的学科。它的目标是使计算机系统具有类似于人类的智能,能够感知环境、学习、推理、规划、解决问题和交流。在当今社会中,人工智能具有极其重要的地......
  • 深度学习入门:基于Python的理论与实践 笔记
    深度学习入门:基于Python的理论与实践笔记一,Python基础由于本人之前已经系统学习过Python,此处只总结有关深度学习的Python的库NumPy生成NumPy数组要生成NumPy数组,需要使用np.array()方法。np.array()接收Python列表作为参数,生成NumPy数组(numpy.ndarray)>>>x=np.array......
  • 深度学习入门基于python的理论与实现-第四章神经网络的学习(个人向笔记)
    目录从数据中学习损失函数均方误差(MSE)交叉熵误差mini_batch学习mini_batch版交叉熵误差的实现从数据中学习神经网络的"学习"的学习是指从训练数据自动获取最有权重参数的过程。神经网络的特征就是可以从数据中学习即由数据自动决定权重参数的值。机器学习通常是认为确定一些......
  • 前后端分离Ajax入门
    前后端分离之Ajax入门一、概念Ajax(AsynchronousJavascriptAndXML),即是异步的JavaScript和XML,Ajax其实就是浏览器与服务器之间的一种异步通信方式。它可以异步地向服务器发送请求,在等待响应的过程中,不会阻塞当前页面,在这种情况下,浏览器可以做自己的事情。直到成功获取响应后,浏......
  • 深度学习入门基于python的理论与实现-第三章神经网络
    目录激活函数阶跃函数sigmoid函数ReLU函数三层神经网络的实现输出层设计恒等函数和softmax函数输出层的神经元数量手写数字识别MINIST数据集神经网络的推理处理批处理激活函数激活函数是连接感知机和神经网络的桥梁阶跃函数阶跃函数是在感知机中使用的激活函数。\[h(x)=\begi......
  • 最简单的python爬虫案例,适合入门学习
    用python从网页爬取数据,网上相关文章很多,但能让零基础初学者轻松上手的却很少。可能是有的作者觉得有些知识点太简单不值得花费精力讲,结果是难者不会会者不难,初学者常常因此而蒙圈。本人也是小白,刚摸索着爬了两个简单的网页数据,经历了初学者易犯的各种糊涂,特总结分享一下,希......
  • 振动分析师入门(二)
    1、振动原理1.1内容(1)简谐运动(2)幅值波形的高度就是幅值,幅值的大小与振动的严重程度相关有效值:0.707*峰值(适用于纯正弦波)峰值:幅值的最高点的数值峰峰值:2*峰值(适用于纯正弦波)(3)周期与频率......
  • MIT 6.S081入门lab7 多线程
    MIT6.S081入门lab7多线程一、参考资料阅读与总结1.xv6book书籍阅读(Chapter7:SchedulingthroughSection7.4)1.概述:由于操作系统往往运行比CPU数量更多的进程,因此需要对CPU进行虚拟化,使多个进程能够分时复用CPU资源2.多路复用:xv6中多路复用有2种方式:sleep和wakeup机制......