ASP.NET Core GRPC 和 Dubbo 互通
一.前言
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 互通的更多相关文章
- ASP.NET Core gRPC 入门全家桶
一. 说明 本全家桶现在只包含了入门级别的资料,实战资料更新中. 二.官方文档 gRPC in Asp.Net Core :官方文档 gRPC 官网:点我跳转 三.入门全家桶 正片: ASP.NET ...
- ASP.NET Core gRPC 健康检查的实现方式
一. 前言 gRPC 服务实现健康检查有两种方式,前面在此文 ASP.NET Core gRPC 使用 Consul 服务注册发现 中有提到过,这里归纳整理一下.gRPC 的健康检查,官方是定义了标准 ...
- 旧 WCF 项目迁移到 asp.net core + gRPC 的尝试
一个月前,公司的运行WCF的windows服务器down掉了,由于 AWS 没有通知,没有能第一时间发现问题. 所以,客户提出将WCF服务由C#改为JAVA,在Linux上面运行:一方面,AWS对Li ...
- ASP.NET Core gRPC 使用 Consul 服务注册发现
一. 前言 gRPC 在当前最常见的应用就是在微服务场景中,所以不可避免的会有服务注册与发现问题,我们使用gRPC实现的服务可以使用 Consul 或者 etcd 作为服务注册与发现中心,本文主要介绍 ...
- Dapr 运用之集成 Asp.Net Core Grpc 调用篇
前置条件: <Dapr 运用> 改造 ProductService 以提供 gRPC 服务 从 NuGet 或程序包管理控制台安装 gRPC 服务必须的包 Grpc.AspNetCore ...
- Asp.Net Core Grpc 入门实践
Grpc简介 gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. 在 gRPC 中,客户端应用程序可以直接调用不同计算机上的服务器应用程序上的方法,就像它是本地对象一样,从而更轻松地创 ...
- ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安 ...
- 使用 ASP.NET Core 的 gRPC 服务
将 gRPC 服务添加到 ASP.NET Core 应用 gRPC 需要gRPC包. 配置 gRPC 在 Startup.cs 中: gRPC 是通过AddGrpc方法启用的. 每个 gRPC 服务通 ...
- ASP.Net Core 3.1 使用gRPC入门指南
主要参考文章微软官方文档: https://docs.microsoft.com/zh-cn/aspnet/core/grpc/client?view=aspnetcore-3.1 此外还参考了文章 ...
随机推荐
- Linux一些错误总结
1.cannot verify <mydomainname> certificate, issued by '/C=US/O=Let's Encrypt/CN=R3': 解决1:wget ...
- Bert不完全手册6. Bert在中文领域的尝试 Bert-WWM & MacBert & ChineseBert
一章我们来聊聊在中文领域都有哪些预训练模型的改良方案.Bert-WWM,MacBert,ChineseBert主要从3个方向在预训练中补充中文文本的信息:词粒度信息,中文笔画信息,拼音信息.与其说是推 ...
- Luogu5367 【模板】康托展开 (康拓展开)
\(n^2\)暴力 #include <iostream> #include <cstdio> #include <cstring> #include <al ...
- 基于bert训练自己的分词系统
前言 在中文分词领域,已经有着很多优秀的工具,例如: jieba分词 SnowNLP 北京大学PKUse 清华大学THULAC HanLP FoolNLTK 哈工大LTP 斯坦福分词器CoreNLP ...
- Vue3 Transition 过渡效果之切换路由组件
复习作用域插槽 组件可以被插入些许节点作为其子节点,插槽<slot>就是一个接口(或桥梁)引导这些节点进入组件.这些节点应该被渲染到组件里的具体哪个位置,就是具名插槽的作用.就像是给手机冲 ...
- python必备基础
1. 基础函数 序号 函数 说明 1 print() 打印 2 input() 输入 3 int() 转化为整形 4 float() 转化为浮点型 5 str() ...
- APICloud AVM框架 封装车牌号输入键盘组件
AVM(Application-View-Model)前端组件化开发模式基于标准Web Components组件化思想,提供包含虚拟DOM和Runtime的编程框架avm.js以及多端统一编译工具,完 ...
- OpenJudge 1.5.39 与7无关的数
39:与7无关的数 总时间限制: 1000ms 内存限制: 65536kB 描述 一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数.现求所有小于等于n(n ...
- Hive 组件安装配置
下载和解压安装文件 基础环境和安装准备 Hive组件的部署规划和软件包路径如下: (1)当前环境中已安装 Hadoop全分布系统 (2)本地安装 MySQL数据库(账号 root,密码 Passwor ...
- Mac_linux_ssh防掉线
vi ~/.ssh/config 加入一条 ServerAliveInterval 60 #客户端主动向服务端请求响应的间隔