作者: 相信微服务大家伙都有听说和知道,好处弊端咱也不多说了,Grpc算是一个比较全面的微服务框架,也得到微软的支持

  总结下来就是,跨平台,可靠,通信快,扩展性强,网络消耗小,模板多语言通用

  光说好处,没有弊端吗,自然是有的

  最大的问题可能就是无法直接通过浏览器调用Grpc服务,最主要是Grpc使用了Http/2传输而浏览器不允许调用方需要使用 HTTP/2,或提供对基础 HTTP/2 框架的访问

但是官方也提供了曲线救国的方式,gRPC Web是 gRPC 团队提供有限的 gRPC 支持在浏览器中的其他技术(引用官方文档)。

  话不多说,咱们直接先上两个官方链接,

  https://grpc.io/docs/

  https://docs.microsoft.com/zh-cn/aspnet/core/grpc/?view=aspnetcore-3.0

  和HttpApi有啥区别,如下图

  看的出来微软对Grpc得支持还挺上心得,居然把Grpc放到3.0中直接提供官方支持,还可以直接生成应模板,看来微软真的在开源的道路上大步前行啊。

咱就不说一些理论性的东西了,上边链接里得文章介绍得比我官方详细。现在.NetCore 3.0还处于预览版,正式版出来相信会有更好的支持和体验

  Grpc在3.0中, 也是遵循微软一贯的风格,对开发者友好,极度舒适得开发体验。重大变化的变化

3.0支持编写好的.proto文件直接. 方法名,就可以使用,无需把proto文件生成为.cs 文件再引用到项目中(微软默默帮我们做好了,咱只要定义好protoi接口和参数,关心代码业务就行了)??

  老的Grpc使用方式及介绍点这里,之前有介绍

  咱们实际运用起来效果如何,开发用起来爽不爽,咱也不废话,直接开整

 开发工具:Visual Studio 2019

  框架:.net core 3.0 (目前最新版 v3.0.100-preview8)

  3.0目前处于预览版,官方没有集成到vs里,咱们要手动下载 点这里

  下载好了之后要在VS里手动开启支持3.0 .net core SDK(目前3.0只能在VS2019上运行,正式版出来可能会支持其他版本VS)

一、创建项目

  两种方式,都可以

  1、通过命令一键生成基于Grpc模板的项目

  2、通过传统方式创建

  创建好的项目长这样

我们一定会注意到 Startup 类中 ConfigureServices 方法的语句 services.AddGrpc() 。这个是惯例,不用去管,重点看 Configure 方法里的代码片段:

app.UseRouting();app.UseEndpoints(endpoints =>{    endpoints.MapGrpcService<GreeterService>();}); 

  此处和WCF 的思想类似,将服务添加到路由终结点,让客户端连接。

  接下来看看proto文件 ,咱们稍微改造一下

syntax = "proto3";option csharp_namespace = "GrpcGreeter";

package Greet;

service Greeter {// 方法体  rpc SayHello (HelloRequest) returns (HelloReply);

//这是咱新增的方法  rpc HelloWorld (HelloRequest) returns (HelloReply);}

// 请求参数message HelloRequest {string name = 1;

}

// 响应实体message HelloReply {string message = 1; //数据类型和C#大差不差  int32 code=2;}

  咱们再创建一个控制台程序用做客户端好了(实际项目中就是各个模块的其他项目),用来调用Grpc微服务。

  创建好了后,安装Nuget包

Install-Package Grpc.Net.Client -Version 0.1.22-pre3

Install-Package Google.Protobuf

Install-Package Grpc.Tools

  把proto文件复制到客户端项目中

  这里有一点要住,把解决方案文件打开,把里面有配置

<ItemGroup>

   <!-- GrpcServices="Client" 添加该属性构建相关客户端类文件(元数据) -->

   <!-- GrpcServices="Server" 添加该属性构建相关服务端端类文件(元数据) -->

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

  </ItemGroup>

  可以看到如下图,重点介绍一下新特性,可以像正常些C#代码一样,直接点出Grpc里定义的方法

一顿操作猛如虎

代码相对简单直接截图,最后直接上结果,咱们一看就懂

客户端执行结果

服务端输出

在3.0版本之前,要使用Grpc微服务,proto文件需要先生成好CS类文件,生成CS类文件还是比较费事儿的.然后把生成好的CS类文件引用到项目中才可以。其实在开发中我们并不需要关心这些,只是由于.net 跨平台来的稍稍晚一点,慢慢的这些脚手架类的东西会越来越完善

可以看出微软也预见了这些事,在.net core 3.0提供了类似自动化的支持。

原文链接:https://www.cnblogs.com/DanielYao/p/11394243.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

net core 3.0 之Grpc新特性小试牛刀相关推荐

  1. android studio viewo,android studio 3.6.0 绑定视图新特性的方法

    Android studio 3.6.0 绑定视图使用方法 1.确保你的 build gradle 最低为3.6.0 dependencies { classpath 'com.android.too ...

  2. HALCON: HALCON 20.11.0.0 Progress主要新特性

    HALCON: HALCON 20.11.0.0 Progress主要新特性 改进了基于形状的匹配 在HALCON 20.11中,对基于形状匹配的核心技术进行了改进,尤其是针对低对比度和高噪声的场景. ...

  3. Spring Boot3.0正式发布及新特性解读

    Spring Boot 3.0 正式发布 同时发布更新的还有 2.7.x 和 2.6.x 两条版本线,Spring Boot 是我见过的发版最守时的技术框架之一. Spring Boot 3.0 现已 ...

  4. 大数据哔哔集20210106 - Hadoop3.0有哪些新特性

    [大数据哔哔集]是小编发起的每日大数据圈子最前沿.高频.有难度的面试题目以及资讯等. 精简版总结 1.JDK版本的最低依赖从1.7变成了1.82.HDFS支持Erasure Encoding3.Tim ...

  5. Android Q(10.0)版本新特性和兼容性适配

    北京时间2019年3月14日Google正式对外发布Android Q Beta 1及预览版SDK,这意味着安卓开发者们又即将迎来一年一度的新版本适配工作了.Android Q 为开发者们带来了许多新 ...

  6. Git 2.25.0 发布,新特性:部分 clone 与稀疏 checkout

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | https://ww ...

  7. EntityFramework Core 1.1有哪些新特性呢?我们需要知道

    前言 在项目中用到EntityFramework Core都是现学现用,及时发现问题及时测试,私下利用休闲时间也会去学习其他未曾遇到过或者用过的特性,本节我们来讲讲在EntityFramework C ...

  8. .NET Core 3.0 中的新变化

    译者:楚人Leo 译文:http://www.cnblogs.com/leolion/p/10585834.html 原文:https://msdn.microsoft.com/en-us/magaz ...

  9. 在.Net Core 3.0中尝试新的System.Text.Json API

    .NET Core 3.0提供了一个名为System.Text.Json的全新命名空间,它支持reader/writer,文档对象模型(DOM)和序列化程序.在此博客文章中,我将介绍它如何工作以及如何 ...

最新文章

  1. Python爬虫(十二)_BeautifulSoup4 解析器
  2. apidoc学习(接口文档定义取代word)
  3. 电脑销售技巧_汝州市,如何查询楼盘详细销售数据?官方公布,精确到房间
  4. MySQL-主从架构探索
  5. 中国聚氨酯胶粘剂行业现状研究分析及市场前景预测报告(2022年)
  6. 设计模式使用率排行榜
  7. springboot调用python脚本_Springboot实现上传文件接口,使用python的requests进行组装报文上传文件的方法...
  8. Win7系统防火墙设置方法
  9. cheungssh mysql密码_CheungSSH安装及基本使用
  10. 图论 —— 生成树 —— 次小生成树
  11. 如何导入gradle版本不同的Android项目
  12. Unity 血条跟随效果
  13. 《红周刊》独家对话芒格:你可以随自己喜欢一辈子不理性,那必然承受糟糕结果
  14. JAVA实现飞机大战详解
  15. 蓝牙技术|蓝牙音频LE Audio的技术特点
  16. Web前端-Vue中给input框赋值
  17. 网络营销推广实战宝典 软文推广
  18. VS2019怎么没有C++的窗体应用模板_砖混结构模板技术交底
  19. JavaWeb核心技术系列教程(23)——JSP标签
  20. Flutter - 控件之 Picker

热门文章

  1. 学习使用RIA Framework Flex创建MySQL管理UI(初学Flex实例教程)
  2. centos7.0搭建svn服务器
  3. 对C# 程序员来说现在是到目前为止最好的时代
  4. jenkins代理设置
  5. (转)完美画质 3D游戏反锯齿技术浅析 .
  6. Task.Factory.StartNewTResult 和 Task.RunTResult 到底有什么区别?
  7. .NetCore使用NETCore.MailKit发送邮件
  8. Xamarin效果第一篇之时间轴
  9. ABP vNext微服务架构详细教程——分布式权限框架(上)
  10. 将k8s制作成3D射击游戏,好玩到停不下来,附源码