Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ASP.NET Core GRPC 和 Dubbo 互通

ASP.NET Core GRPC 和 Dubbo 互通

作者头像
晓晨
发布于 2022-10-04 13:42:35
发布于 2022-10-04 13:42:35
47200
代码可运行
举报
文章被收录于专栏:晓晨的专栏晓晨的专栏
运行总次数:0
代码可运行

一.前言

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 文件引用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ItemGroup>
        <Protobuf Include="..\GrpcService1\Protos\greet.proto" GrpcServices="Client" />
</ItemGroup>

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

编写 client 调用代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 互通的可能性,我们也在积极的朝这一方向进行努力(大家都比较忙,推进慢)。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ASP.NET Core 3.0 使用gRPC
gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架。 gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建。它使用HTTP/2作为通信协议,使用 Protocol Buffers 作为序列化协议。
晓晨
2019/09/25
2.2K0
ASP.NET Core 3.0 使用gRPC
ASP.NET Core 3.0 使用gRPC
gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架。 gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建。它使用HTTP/2作为通信协议,使用 Protocol Buffers 作为序列化协议。
梁规晓
2019/09/26
7810
ASP.NET Core 3.0 使用gRPC
ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把。同时记录体验的过程。如果你也想按照本文的步骤体验的话,那你得先安装.NET Core3.0预览版的SDK。至于开发工具我用的时VS2019,当然你也可以使用VS Code进行。
依乐祝
2019/04/09
1.7K0
ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
【gRPC】 在.Net core中使用gRPC
最近在学习.net core的微服务体系架构。微服务之间的通信常常通过gRPC进行同步通信,但是需要注意的是,大多数微服务之间的通信是通过事件总线进行异步通信。在微软介绍.net微服务体系架构的项目eShop中,微服务之间进行同步通信的场景很多,大多数都是HTTP/REST,目前只有自定义聚合器与微服务之间通信是使用的gRPC。整套微服务架构体系,其实除了客户端与网关(BFF)之间,使用HTTP/REST,均可使用gRPC(只要网关支持HTTP/REST与gRPC的转换)
DDGarfield
2022/06/23
8700
【gRPC】 在.Net core中使用gRPC
.NET CORE 构建 gRPC 服务
gRPC 使用协定优先方法进行 API 开发。 在 .proto 文件中定义服务和消息
全栈研发知识库
2024/12/24
1150
.NET gRPC核心功能初体验
gRPC是高性能的RPC框架, 有效地用于服务通信(不管是数据中心内部还是跨数据中心)。
有态度的马甲
2021/03/12
1.9K0
.NET gRPC核心功能初体验
.NET7 gRPC JSON转码+OpenAPI
gRPC JSON 转码允许浏览器应用调用 gRPC 服务,就像它们是使用 JSON 的 RESTful API 一样。
Chester Chen
2022/12/19
1.4K0
.NET7 gRPC JSON转码+OpenAPI
ASP.NET Core 使用 gRPC 初探
为什么突然说到gRPC呢,其实以前就想说一说这个东西,也想尝试使用一下,一直没有机会,一直看我公众号的小伙伴肯定都知道,这几天一直在录制一个《eShopOnContainer微服务架构》系列,现在已经是8期了,里边涵盖了使用ASP.NETCore开发微服务的常用的基本的知识技能,具体的你可以看我的视频就行,B站也同步更新。
老张的哲学
2022/04/11
1.6K0
ASP.NET Core 使用 gRPC 初探
gRPC 与.NET 入门
从本质上来讲,API 就是服务器和客户端之间的一个协议,指定了服务器如何基于客户端的请求提供特定的数据。
深度学习与Python
2022/03/23
8010
gRPC 与.NET 入门
Blazor WebAssembly + Grpc Web=未来?
首先来说说WebAssembly是什么,WebAssembly是一个可以使C#,Java,Golang等静态强类型编程语言,运行在浏览器中的标准,浏览器厂商基于此标准实现执行引擎。
Chester Chen
2022/08/18
1K0
Blazor WebAssembly + Grpc Web=未来?
在 ASP.NET Core 中创建 gRPC 客户端和服务器
gRPC 是一种高性能、开源的远程过程调用(RPC)框架,它基于 Protocol Buffers(protobuf)定义服务,并使用 HTTP/2 协议进行通信。
吴晓阳
2024/11/24
1120
.NET领域最硬核的gRPC 核心能力一把梭
有关grpc更深层次的前世今生、底层原理、困惑点释疑请听下回分解, 欢迎菜鸟老鸟们提出宝贵意见。
有态度的马甲
2024/01/19
4340
.NET领域最硬核的gRPC 核心能力一把梭
【Python】建立gRPC服务端与.Net Core 客户端
由于需要接入其他平台的OAuth 2.0,还要提供RESTful API获取VMware vSphere的数据,这块内容,.net core我更熟悉,所以锁定ASP.NET Core,通过上两篇,我们知道这里只能通过python去获取数据了,那么我面临的问题就是python与.net core的数据通信:
DDGarfield
2022/06/23
7550
【译】gRPC vs HTTP APIs
本文翻译自 ASP.NET Blog | gRPC vs HTTP APIs,作者 James,译者 Edison Zhou。
Edison Zhou
2019/12/04
2.1K0
【译】gRPC vs HTTP APIs
基于VS2022在Windows上首次尝试开发C++ gRPC服务端和客户端的详细步骤
protoc -I=protos/ --grpc_out=protos/ --plugin=protoc-gen-grpc="C:\vcpkg\vcpkg\installed\x64-windows\tools\grpc\grpc_cpp_plugin.exe" protos/greet.proto生成greet.pb.h、greet.pb.cc、greet.grpc.pb.h、greet.grpc.pb.cc四个文件
码事漫谈
2025/02/15
1400
基于VS2022在Windows上首次尝试开发C++ gRPC服务端和客户端的详细步骤
.Net Core中使用Grpc
  gRPC 基于如下思想:定义一个服务, 指定其可以被远程调用的方法及其参数和返回类型。gRPC 默认使用protocol buffers作为接口定义语言,来描述服务接口和有效载荷消息结构。如果有需要的话,可以使用其他替代方案。
梁规晓
2020/11/05
9810
.Net Core中使用Grpc
ASP.NET Core 6框架揭秘实例演示[02]:基于路由、MVC和gRPC的应用开发
ASP.NET Core可以视为一种底层框架,它为我们构建出了基于管道的请求处理模型,这个管道由一个服务器和多个中间件构成,而与路由相关的EndpointRoutingMiddleware和EndpointMiddleware是两个最为重要的中间件。MVC和gRPC开发框架就建立在路由基础上。本篇提供了四个实例用来演示如何利用路由、MVC和gRPC来开发API/APP。(本篇提供的实例已经汇总到《ASP.NET Core 6框架揭秘-实例演示版》)
蒋金楠
2022/05/09
1.1K0
ASP.NET Core 6框架揭秘实例演示[02]:基于路由、MVC和gRPC的应用开发
gRPC遇见.NET SDK和Visual Studio:构建时自动生成编码
作为微软向其跨平台.NET产品发展的一部分,他们大大简化了项目文件格式,并允许第三方代码生成器与.NET项目的紧密集成。我们一直倾听,现在很自豪地介绍从Grpc.Tools NuGet包的1.17版本开始,.NET C#项目中的Protocol Buffer和gRPC服务.proto文件的集成编译。1.17版本现在可以从Nuget.org获得。
CNCF
2019/12/05
2.2K0
.NET 6 中 gRPC 的新功能
gRPC是一个现代的、跨平台的、高性能的 RPC 框架。gRPC for .NET 构建在 ASP.NET Core 之上,是我们推荐的在 .NET 中构建 RPC 服务的方法。
全球技术精选
2021/12/11
1.1K0
.NET 6 中 gRPC 的新功能
.NET Core ❤ gRPC
这篇内容主要来自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的全新完全托管实现。
张善友
2020/06/19
1.6K0
.NET Core ❤ gRPC
相关推荐
ASP.NET Core 3.0 使用gRPC
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验