一.前言

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 项目

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

2.同步 proto文件

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

然后编译 Grpc 修改 Service 代码

3.dubbo-go 调用

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

然后运行 client

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

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

编写 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

3.运行测试

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

dotnet-> dubbo = ok

五.总结

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

ASP.NET Core GRPC 和 Dubbo 互通的更多相关文章

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

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

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

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

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

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

  4. ASP.NET Core gRPC 使用 Consul 服务注册发现

    一. 前言 gRPC 在当前最常见的应用就是在微服务场景中,所以不可避免的会有服务注册与发现问题,我们使用gRPC实现的服务可以使用 Consul 或者 etcd 作为服务注册与发现中心,本文主要介绍 ...

  5. Dapr 运用之集成 Asp.Net Core Grpc 调用篇

    前置条件: <Dapr 运用> 改造 ProductService 以提供 gRPC 服务 从 NuGet 或程序包管理控制台安装 gRPC 服务必须的包 Grpc.AspNetCore ...

  6. Asp.Net Core Grpc 入门实践

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

  7. ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)

    早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安 ...

  8. 使用 ASP.NET Core 的 gRPC 服务

    将 gRPC 服务添加到 ASP.NET Core 应用 gRPC 需要gRPC包. 配置 gRPC 在 Startup.cs 中: gRPC 是通过AddGrpc方法启用的. 每个 gRPC 服务通 ...

  9. ASP.Net Core 3.1 使用gRPC入门指南

    主要参考文章微软官方文档: https://docs.microsoft.com/zh-cn/aspnet/core/grpc/client?view=aspnetcore-3.1 此外还参考了文章 ...

随机推荐

  1. centos7更改中文

    这是在CentOS7中设置,CentOS6的是在 .etc/sysconfig/i18n 配置文件下.在root用户下操作,使用 locale 命令查看语言环境,看到 LANG=en_US.utf8 ...

  2. 「Python实用秘技09」更好用的函数运算缓存

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第9期 ...

  3. 非root源码安装gcc和cmake

    一.安装cmake 1.下载cmale 下载地址:https://cmake.org/files tar -zxvf cmake-3.19.8.tar.gz cd cmake-3.19.8/ ./co ...

  4. python 线程理解

    简介 一个应用程序由多个进程组成,一个进程有多个线程,一个线程则是操作系统调度的最小单位,当应用程序运行时,操作系统根据优先级和时间片调度线程(决定此时此刻执行哪个线程). python的线程 pyt ...

  5. 照着这个保姆级文档来,虚拟机装CentOS不再踩坑

    软件准备 VirtualBox 6.1.26 centOS镜像 接下来我们就开始进行安装: 创建虚拟机 新建虚拟机 点击下一步,调整内存大小 内存大小根据需要调整,然后点击下一步 3. 虚拟硬盘设置 ...

  6. React Native环境配置、初始化项目、打包安装到手机,以及开发小知识

    1.前言 环境:Win10 + Android 已经在Windows电脑上安装好 Node(v14+).Git.Yarn. JDK(v11) javac -version javac 11.0.15. ...

  7. PROFIBUS,PROFINET,Ethernet三者的区别

    PROFIBUS,PROFINET,Ethernet三者的区别 简单一点说,PROFINET=PROFIbus+etherNET,把Profibus的主从结构移植到以太网上,所以profinet会有C ...

  8. 6.20 NOI 模拟

    \(T1\ left\ xor\ right\) 考虑把询问离线,查询变成 \([0,x-1]\) 的 \([l,r]\) 的区间和与 \([0,y]\) 的 \([l,r]\) 的区间和的差 考虑线 ...

  9. Apache DolphinScheduler 1.2.1 发布说明

    Apache DolphinScheduler 于2020年2月24日正式发布 1.2.1 版,发布内容如下: 新特性: [#1497] 通过 API 创建的工作流在前端展示时自动调整布局. [#74 ...

  10. ASP.NET Core依赖注入系统学习教程:关于服务注册使用到的方法

    在.NET Core的依赖注入框架中,服务注册的信息将会被封装成ServiceDescriptor对象,而这些对象都会存储在IServiceCollection接口类型表示的集合中,另外,IServi ...