net core 3.0 之Grpc新特性小试牛刀

 

  相信微服务你们伙都有据说和知道,好处弊端咱也很少说了,Grpc算是一个比较全面的微服务框架,也获得微软的支持html

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

   

  光说好处,没有弊端吗,天然是有的浏览器

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

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

  话很少说,我们直接先上两个官方连接,框架

  https://grpc.io/docs/微服务

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

 

  和HttpApi有啥区别,以下图visual-studio

 

  看的出来微软对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模板的项目

 

dotnet new grpc

 

 

 

  二、经过传统方式建立

 

 

  建立好的项目长这样

 

 

咱们必定会注意到 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/欢迎各位转载,可是未经做者本人赞成,转载文章以后必须在文章页面明显位置给出做者和原文链接,不然保留追究法律责任的权利
相关文章
相关标签/搜索