首页 > 编程语言 >ASP.NET Core GRPC 和 Dubbo 互通

ASP.NET Core GRPC 和 Dubbo 互通

时间:2022-09-27 15:35:28浏览次数:80  
标签:Dubbo Core ASP dubbo go NET

一.前言

Dubbo 是比较流行的服务治理框架,国内不少大厂都在使用。以前的 Dubbo 使用的是私有协议,采集用的 hessian 序列化,对于多语言生态来说是极度的不友好。现在 Dubbo 发布了新版本 v3,推出了基于 gRPC 的新协议 Triple,完全兼容 gRPC。目前和几个小伙伴正在探索 ASP.NET Core 接入 Dubbo 生态的可行性,本文算是一个先行测试。

Triple 协议说明:dubbo-go 3.0 新特性 | Apache Dubbo

ASP.NET Core GRPC: Overview for gRPC on .NET | Microsoft Learn

二.测试说明

Dubbo 使用的是 dubbo-go 项目提供的 samples apache/dubbo-go-samples: Apache dubbo (github.com),使用 direct 直连例子。

ASP.NET Core Grpc 基于 .NET 5。

分别作为 client 和 server 来测试是否能相互调用。

三.测试一

dubbo-go 作为 client 通过 tri 协议调用,ASP.NET Core 作为 Server。

1.ASP.NET Core

直接根据模板新建一个 Grpc 项目

image-20220927141841880

因为我是 macOS 环境,目前 HTTP/2 无法支持 TLS,所以我配置了 Kestrel,不使用 TLS 启用 HTTP/2。

image-20220927142012130

2.同步 proto文件

在 go 项目找到 proto 文件,复制粘贴到 grpc 项目 greet.proto 文件里,并修改 csharp_namespace

image-20220927142143097

image-20220927142209500

然后编译 Grpc 修改 Service 代码

image-20220927142351864

3.dubbo-go 调用

修改 dubbo-go client 调用地址端口号为 5000

image-20220927142447583

然后运行 client

image-20220927142545905

从日志输出我们可以看到成功进行了调用

dubbo-> asp.net core grpc = ok

四.测试二

dubbo-go 作为 server tri 协议,.NET 作为 Client grpc 调用。

1.dotnet

新建一个控制台项目,安装 3 个 nuget 包:

包名 说明
Grpc.Net.Client .NET 客户端
Google.Protobuf protobuf api
Grpc.Tools 支持 proto 文件生成 C# 代码

编辑项目文件 .csproj

加入 proto 文件引用

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

编译时 Grpc.Tools 会根据 proto 文件生成 grpc C# client。生成路径:obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs

image-20220927143817118

编写 client 调用代码

static async Task Main(string[] args)
{
    using var channel = GrpcChannel.ForAddress("https://localhost:20000");
    var client = new Greeter.GreeterClient(channel);
    var reply = await client.SayHelloAsync(
        new HelloRequest { Name = "GreeterClient" });
    Console.WriteLine($"Reply: Age: {reply.Age}, Id: {reply.Id}, Name: {reply.Name}");
}

2.go

直接运行 server

image-20220927144153380

3.运行测试

image-20220927144425716

从日志输出我们可以看到成功进行了调用

dotnet-> dubbo = ok

五.总结

从上面测试,我们确定了 ASP.NET Core 结合 Grpc 接入 Dubbo 生态,和 dubbo 互通的可能性,我们也在积极的朝这一方向进行努力(大家都比较忙,推进慢)。

标签:Dubbo,Core,ASP,dubbo,go,NET
From: https://www.cnblogs.com/stulzq/p/16734702.html

相关文章

  • dubbo负载均衡
    随机负载均衡publicclassRandomLoadBalanceextendsAbstractLoadBalance{privatefinalRandomrandom=newRandom();protected<T>Invoker<T>doSele......
  • NetCoreWebApi3.0-------MiniProfiler使用教程
    参考博客:ASP.NETCoreWebAPI中的分析工具MiniProfiler-LamondLu-博客园(cnblogs.com) 注意事项:1.不要盲目copy别人的代码varhtml=MiniProfiler.Current.Re......
  • 彻底搞清楚.net core,.net framework,asp.net core等的概念
    如图:先上一张图,此图经常见到总体的脉络结构大致都是这样,自下而上,越往下越是基础层,其中.netstandardlibrary定义了一些列的标准函数接口,由不同框架去实现。也就是net......
  • asp.net mvc返回Json数据
    注意返回一个自定义的object数组//01返回一个自定义的object数组publicActionResultIndex(){varres=newJsonResult();varname="小华";varag......
  • Asp.net core基础(一)Entity FrameworkCore的增删查改
    一、EntityFrameworkCore的介绍EntityFrameworkCore是.netcore中的ORM(objectrelationalmapping[对象关系映射])框架,它可以让开发人员以面向对象的方式进行数据库操......
  • NetCore 生成JWT
    调用privatereadonlyIESP_UsersBLL_UsersBLL;privatereadonlyIConfiguration_configuration;privateJWTService_jwtService;......
  • EF Core – 7.0 New Features
    前言这篇不会细谈功能,只是一个总链接. 参考Docs–What'sNewinEFCore7.0 BreakingChange我follow EFCore–搭建单侧环境 做了一遍,在运行 dotne......
  • HMS Core上新啦!
    HMSCore上新啦!分析服务营销分析报告全新上线;?ha_source=hms1运动健康服务支持目标场景事件订阅;音频编辑服务提供专业的三维声音频编辑与渲染能力,更多HMSCore能力可点击网......
  • .netcore 下搭建本地nuget服务器
    1.首先创建一个普通的项目这个项目后面会放入我们自定义的nuget服务器给予其他项目应用2.我们对这个项目进行一下设置1)项目->属性选中构建nuget包2)项目点击发布......
  • EFCore乐观并发控制
    为了避免多个用户同时操作同一个资源造成的并发冲突问题,通常需要进行并发控制。并发控制分为:乐观和悲观两策略悲观:悲观并发控制一般采用行锁、表锁等排它销对资源进行锁......