论坛
BBS
ASP
PHP
C语言
C++
net
JAVA
MYSQL
MSSQL
登录
|
注册
用户名
Email
自动登录
找回密码
密码
登录
立即注册
积分: 0
设置
道具
勋章
任务
退出
搜索
搜索
本版
文章
帖子
用户
3D网络
>
论坛
›
3D网络
›
ASP
返回列表
查看:
94
|
回复:
0
ASP.NET Core GRPC 和 Dubbo 互通
[复制链接]
万嘉福朱砂饰品有限公司
万嘉福朱砂饰品有限公司
当前离线
积分
9
3
主题
3
帖子
9
积分
新手上路
新手上路, 积分 9, 距离下一级还需 41 积分
新手上路, 积分 9, 距离下一级还需 41 积分
积分
9
发消息
发表于 2022-11-28 12:02:21
|
显示全部楼层
|
阅读模式
一.前言
Dubbo 是比较流行的服务治理框架,国内不少大厂都在使用。以前的 Dubbo 使用的是私有协议,采集用的 hessian 序列化,对于多语言生态来说是极度的不友好。现在 Dubbo 发布了新版本 v3,推出了基于 gRPC 的新协议 Triple,完全兼容 gRPC。目前和几个小伙伴正在探索 http://ASP.NET Core 接入 Dubbo 生态的可行性,本文算是一个先行测试。
Triple 协议说明:dubbo-go 3.0 新特性 | Apache Dubbo
http://ASP.NET Core GRPC: Overview for gRPC on .NET | Microsoft Learn
二.测试说明
Dubbo 使用的是 dubbo-go 项目提供的 samples apache/dubbo-go-samples: Apache dubbo (http://github.com),使用 direct 直连例子。
http://ASP.NET Core Grpc 基于 .NET 5。
分别作为 client 和 server 来测试是否能相互调用。
临时加更干货分享
大家能看到这里,已是对我们的支持了。
分享一组9月录制的C#零基础教程。
我们喜欢做这样的分享,它足够的基础,对新手友好。如果需要的话,就来免费领取吧!
快来领取吧
资料免费自取:
由于内容过多不便呈现,
需要视频教程和配套源码的小伙伴,
可点击这里,添加我知乎主页个人说明处号码 免费分享
也可直接点击下方卡片:
点击后自动复制威芯号,并跳转到威芯。搜索威芯号添加,内容已做打包,
备注知乎
即可免费领取,注意查收!
兴致上来了做了张图,也是干货清单,需要的小伙伴直接来领就是了。
包含VS2022 / C#基础 .NET6/WPF/Winform零基础到各类实战!
三.测试一
dubbo-go 作为 client 通过 tri 协议调用,http://ASP.NET Core 作为 Server。
http://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-> http://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=&#34;..\GrpcService1\Protos\greet.proto&#34; GrpcServices=&#34;Client&#34; />
</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(&#34;https://localhost:20000&#34;);
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = &#34;GreeterClient&#34; });
Console.WriteLine($&#34;Reply: Age: {reply.Age}, Id: {reply.Id}, Name: {reply.Name}&#34;);
}
2.go
直接运行 server
3.运行测试
从日志输出我们可以看到成功进行了调用
dotnet-> dubbo = ok
五.总结
从上面测试,我们确定了 http://ASP.NET Core 结合 Grpc 接入 Dubbo 生态,和 dubbo 互通的可能性,我们也在积极的朝这一方向进行努力(大家都比较忙,推进慢)。
临时加更干货分享
大家能看到这里,已是对我们的支持了。
分享一组9月录制的C#零基础教程。
我们喜欢做这样的分享,它足够的基础,对新手友好。如果需要的话,就来免费领取吧!
快来领取吧
资料免费自取:
由于内容过多不便呈现,
需要视频教程和配套源码的小伙伴,
可点击这里,添加我知乎主页个人说明处号码 免费分享
也可直接点击下方卡片:
点击后自动复制威芯号,并跳转到威芯。搜索威芯号添加,内容已做打包,
备注知乎
即可免费领取,注意查收!
兴致上来了做了张图,也是干货清单,需要的小伙伴直接来领就是了。
包含VS2022 / C#基础 .NET6/WPF/Winform零基础到各类实战!
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
Archiver
手机版
Powered by
Discuz!
X3.4
© 2001-2015
Comsenz Inc.
快速回复
返回顶部
返回列表