这篇内容主要来自Microsoft .NET团队程序经理Sourabh Shirhatti的博客文章:https://grpc.io/blog/grpc-on-dotnetcore/, .NET Core 3.0现已提供grpc的.NET 托管实现 grpc-dotnet, gRpc 取代WCF成为 .NET的一等公民。自2018年11月以来,Microsoft的.NET团队一直与gRPC团队密切合作,共同开发适用于.NET Core的gRPC的全新完全托管实现。

gRpc 有非常多的公司在使用,比如 Salesforce,Netflix,Spotify,Fanatics等公司(当然还有Google),特别是整个CNCF 主导下的云原生应用开发生态里gRpc 有着举足轻重的地位。

.NET目前有两种正式的gRPC实现:

  • Grpc.Core:基于本地gRpc Core库的原生 gRpc C#实现,支持.NET Core 2.1/.NET Framework 4.5+/Mono 4+ 。
  • grpc-dotnet:完全以C#编写的新实现,没有任何本机依赖性,并且基于最新发布的.NET Core 3.0。

这两种实现并排共存,并且在可用功能,集成,支持的平台,成熟度和性能方面各有各的优势。两种实现共享用于调用和处理RPC的相同API,用户能够选择最能满足其需求的实现,而不会限制你必须使用某个平台。

与现有的基于C-Core的实现(Grpc.Core)不同,新库(grpc-dotnet)使用.NET Core基本类库(BCL)中的现有网络实现。下图突出显示了现有的Grpc.Core库和新的grpc-dotnet库之间的区别。

在服务器端,Grpc.AspNetCore.Server软件包集成到ASP.NET Core中,使开发人员受益于ASP.NET Core已解决的日志,配置,依赖项注入,身份验证,授权等常见的交叉问题。现在,ASP.NET生态系统中的流行库(例如,实体框架核心(ORM)Serilog(日志记录库)Identity Server等)与gRPC无缝协作。

在客户端,该Grpc.Net.Client软件包建立在HttpClient作为.NET Core一部分提供的熟悉的API的基础上。与服务器一样,gRPC客户端也从基于的软件包HttpClient的生态系统中 受益匪浅。 现在可以在gRPC客户端中使用现有的程序包,例如PollyHttpClientFactory(管理HTTPClient生命周期)

下图列出了gRPC的所有新.NET软件包的详尽列表,以及它们与现有软件包的关系。

Visual Studio 2019 对protobuf文件的语言语法提供了支持,并在保存protobuf文件时自动生成gRPC服务器/客户端代码,而无需由于设计时构建而需要完全重新编译项目。

gRpc 这么好用如何入门呢 ,微软的文档给我们准备了很详细,具体参见: https://docs.microsoft.com/zh-cn/aspnet/core/grpc/?view=aspnetcore-3.0

前面我们提到了gRpc 取代WCF成为 .NET的一等公民,我们一定很怀念WCF那种利用代码定义服务锲约的方式,你一定会记得还有一个protobuf 开源实现protobuf-net: https://github.com/protobuf-net , 我以前在腾讯IT 使用WCF + Protobuf 构建微服务的系统,用的也是protobuf-net 这个库,而不是用WCF自带的二进制序列化,获得了更高的负载处理能力。protobuf-net.Grpc 使用本机Grpc.CoreAPI或完全托管的Grpc.Net.Client/ Grpc.AspNetCore.ServerAPI 在gRPC上添加对服务的代码优先支持。

.NET 团队还准备了一个电子书《适用于 WCF 开发人员的 ASP.NET Core gRPC》 https://dotnet.microsoft.com/learn/aspnet/architecture#grpc-for-wcf-devs-ebook-swim 对应的代码仓库:https://github.com/dotnet-architecture/grpc-for-wcf-developers

微软通过https://dapr.io/ 在尝试尝试整合service fabric, functions 和actors. 十分轻量, 可以运行在k8s上,单机上,iot设备上,dapr还是一种新的编程模式,通过sidecar把微服务需要的功能通过http/grpc接进来,也可以和istio一起用的,也可以单独用。

参考文档

中国 .NET 开发者峰会

2019年11月9日 09:00-18:00

中国 上海

门票优惠

10月20日前购票可享受早鸟票100元优惠,只需199,限量300张,先到先得;超级早鸟票及社区特价票需要审核资料;购买团体票(大于10张)享受整单8折优惠,请通过邮箱联系主办方 dotnet@dotnetconf.cn

https://www.huodongxing.com/event/4514005355700

.NET Core ❤ gRPC的更多相关文章

  1. .net core grpc consul 实现服务注册 服务发现 负载均衡(二)

    在上一篇 .net core grpc 实现通信(一) 中,我们实现的grpc通信在.net core中的可行性,但要在微服务中真正使用,还缺少 服务注册,服务发现及负载均衡等,本篇我们将在 .net ...

  2. NetCore服务虚拟化01(集群组件Sodao.Core.Grpc)

    一. 起始 去年.NetCore2.0的发布,公司决定新项目采用.NetCore开发,当作试验.但是问题在于当前公司内部使用的RPC服务为Thrift v0.9 + zookeeper版本,经过个性化 ...

  3. ASP.NET Core gRPC 入门全家桶

    一. 说明 本全家桶现在只包含了入门级别的资料,实战资料更新中. 二.官方文档 gRPC in Asp.Net Core :官方文档 gRPC 官网:点我跳转 三.入门全家桶 正片: ASP.NET ...

  4. ASP.NET Core gRPC 健康检查的实现方式

    一. 前言 gRPC 服务实现健康检查有两种方式,前面在此文 ASP.NET Core gRPC 使用 Consul 服务注册发现 中有提到过,这里归纳整理一下.gRPC 的健康检查,官方是定义了标准 ...

  5. .Net Core Grpc Consul 实现服务注册 服务发现 负载均衡

    本文是基于..net core grpc consul 实现服务注册 服务发现 负载均衡(二)的,很多内容是直接复制过来的,..net core grpc consul 实现服务注册 服务发现 负载均 ...

  6. .Net Core Grpc 实现通信

    .Net Core 3.0已经把Grpc作为一个默认的模板引入,所以我认为每一个.Net程序员都有学习Grpc的必要,当然这不是必须的. 我在我的前一篇文章中介绍并创建了一个.Net Core 3.0 ...

  7. 旧 WCF 项目迁移到 asp.net core + gRPC 的尝试

    一个月前,公司的运行WCF的windows服务器down掉了,由于 AWS 没有通知,没有能第一时间发现问题. 所以,客户提出将WCF服务由C#改为JAVA,在Linux上面运行:一方面,AWS对Li ...

  8. Asp.Net Core Grpc 入门实践

    Grpc简介 gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. 在 gRPC 中,客户端应用程序可以直接调用不同计算机上的服务器应用程序上的方法,就像它是本地对象一样,从而更轻松地创 ...

  9. ASP.NET Core GRPC 和 Dubbo 互通

    一.前言 Dubbo 是比较流行的服务治理框架,国内不少大厂都在使用.以前的 Dubbo 使用的是私有协议,采集用的 hessian 序列化,对于多语言生态来说是极度的不友好.现在 Dubbo 发布了 ...

随机推荐

  1. pyppeteer的使用

    pyppeteer的使用 安装 属于第三方模块进行安装. pip install pyppeteer 在Linux中,如果权限不够则加上. sudo pip install pyppeteer 使用 ...

  2. 逆向破解之160个CrackMe —— 030

    CrackMe —— 030 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...

  3. Python连载37-多进程、进程子类、进程父子id

    一.线程替代方案 1.subprocess (1)完全跳过线程,使用进程 (2)是派生进程的主要替代方案 (3)python2.4后引入 2.multiprocessing (1)使用threadin ...

  4. Java并发笔记——单例与双重检测

    单例模式可以使得一个类只有一个对象实例,能够减少频繁创建对象的时间和空间开销.单线程模式下一个典型的单例模式代码如下: ① class Singleton{ private static Single ...

  5. Dubbo 与 Spring Cloud 完美结合

    Dubbo 与 Spring Cloud 完美结合 1. 概述 可能说起来Dubbo,很多人都不陌生,这毕竟是一款从2012年就开始开源的Java RPC框架,中间由于各种各样的原因停止更新4年半的时 ...

  6. STL中的unique和unique_copy函数

    一.unique函数 这个函数的功能就是删除相邻的重复元素,然后重新排列输入范围内的元素,并返回一个最后一个无重复值的迭代器(并不改变容器长度). 例如: vector<); ; i < ...

  7. windows下docker与.net core 的简单示例

    一 windows 下安装docker 二 .net core 项目 新建一个空的ASP.NET Core Web 应用程序 在该项目的目录下执行dotnet publish,可以看到在bin\Deb ...

  8. tomcat 中无法添加项目等问题的解决方案

    博客地址:http://www.moonxy.com 一.前言 今天新建了一个 maven 项目,添加程序文件之后,发现无法添加项目,然后修改配置,将应用添加到了 tomcat,启动时又报错,解决出现 ...

  9. 读取用户输入并判断的bash脚本

    #!/bin/bash echo -e "1) A"echo -e "2) B"echo -e "3) C"echo -e "4) ...

  10. 02 (H5*) Vue第二天

    目录: 1:全局过滤器的使用 2:局部过滤器 3:自定义键盘码 4:自定义指令 5:自定义私有指令 6:Vue生命周期. 7:网络请求 1:全局过滤器的使用 Vue.filter("msgF ...