ASP.NET Core GRPC 和 Dubbo 互通

ce5fb3ed93febeea3ab7ec4688cdcedf.png一.前言

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

3f7130124f89d2bb359071afa3dfa94e.png

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

69036ac94c8ca8a7c832a8acf9a13c6d.png

2.同步 proto文件

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

946bb1a31e72129a1636de13b5c1290f.png

7ab41653a7f195c19aa114cf90a38469.png

然后编译 Grpc 修改 Service 代码

ade5f5bb3d495a29999100a6affe0ce7.png

3.dubbo-go 调用

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

958c8cd8f3ddd8c9c8d713a808ac24f8.png

然后运行 client

a54e13892ebb789e7e0dbf82393f723d.png

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

dubbo-> asp.net core grpc = ok

四.测试二

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

1.dotnet

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

包名说明
Grpc.Net.Client.NET 客户端
Google.Protobufprotobuf 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

eff93f646c88762dd7504d350adc395a.png

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

f4438d2a2e49bdd6b2fbd71f78b30742.png

3.运行测试

28d1a3af63a598eb94385bbb1a1680a5.png

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

dotnet-> dubbo = ok

五.总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解C# 迭代器

[引用&#xff1a;https://www.cnblogs.com/yangecnu/archive/2012/03/17/2402432.html] 迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子&#xff0c;他是一种简化对象间通讯的模式&#xff0c;也是一种非常容易理解和使用的模式。简单来说&#xff0c;迭代器模…

利用redis List队列简单实现秒杀 PHP代码实现

一 生产者producer部分 --------------------------------producer 部分注释------------------------------------------------------------ 用户在页面请求之后, 获取到用户uid , 跳转到这个加入队列的方法 (这里直接在producer中模拟了多个uid) 在方法内部判断redis队列长…

使用Filezilla 与 linux远程服务器传输文件时,设置默认打开编辑器

1. 点击编辑 2. 选择设置&#xff0c;点击文本编辑 3. 设置编辑器目录 4. 确定作用&#xff1a; 这样设置之后&#xff0c;可以实现在远程站点栏直接下载并使用phpstorm编辑的作用 正常需要下载之后&#xff0c;再去本地相应下载目录打开&#xff0c;然后再进行上传文件&#x…

SDOI2017 新生舞会

01规划 a1a2a3...ai/b1b2b2..bi最大 设一个k 使得 a1a2a3...ai/b1b2b3...bi>k 变换式子得到 a1a2a3...ai>(b1b2b3..bi)*k a1-b1*ka2-b2*ka3-b3*k...ai-bi*k>0 ai-bi*k即流量 最大费用流二分答案 来&#xff0c;上代码&#xff1a; #include <cmath> #include &l…

在 .NET 中使用 FluentValidation 进行参数验证

不用说&#xff0c;参数验证很重要&#xff0c;无效的参数&#xff0c;可能会导致程序的异常。如果使用Web API或MVC页面&#xff0c;那么可能习惯了自带的规则验证&#xff0c;我们的控制器很干净&#xff1a;public class User {[Required]public string FirstName { get; se…

在win10系统下怎样快速切换任务视图

2019独角兽企业重金招聘Python工程师标准>>> 切换窗口&#xff1a;Alt Tab 任务视图&#xff1a;Win Tab (松开键盘界面不会消失) 切换任务视图&#xff1a;Win Ctrl 左/右 创建新的虚拟桌面&#xff1a;Win Ctrl D 关闭当前虚拟桌面&#xff1a;Win Ctrl F4…

uwp应用在debug模式下运行正常,编译为release版本的时候抛出异常

原因是在代码中使用了dynamic关键字&#xff0c;导致release时.net native优化了代码造成元数据丢失 所以在代码中要尽量不用dynamic。转载于:https://www.cnblogs.com/poison/p/7532142.html

Linux上搭建Samba,实现windows与Linux文件数据同步

一 环境介绍 1. 本地win10 2. Linux (centos7.4) 注&#xff1a;因为运营商方面禁止smb协议&#xff0c;导致无法在云服务器上使用smb&#xff0c;如果不是在虚拟机上操作&#xff0c;而是在云服务器上操作&#xff0c;建议还是使用 filezillaxshell组合 或者 使用finalshell等…

A5-1和DES两个加密算法的学习

A5-1加密算法 1、基本原理 A5-1加密算法是一种流password&#xff0c;通过密钥流对明文进行加密。然后用密钥流进行对密文的解密操作。 这样的算法主要用于GSM加密。也就是我们平时打电话的时候。通信数据发送到基站&#xff0c;基站发送到还有一个基站&#xff0c;基站发送到接…

从0到1简易区块链开发手册V0.3-数据持久化与创世区块

Author: brucefeng Email: brucefengbrucefeng.com 编程语言:Golang 1.BoltDB简介 Bolt是一个纯粹Key/Value模型的程序。该项目的目标是为不需要完整数据库服务器&#xff08;如Postgres或MySQL&#xff09;的项目提供一个简单&#xff0c;快速&#xff0c;可靠的数据库。 Bolt…

ELK之elasticsearch5.6的安装和head插件的安装

这里选择的elasticsearch为5.6的新版本&#xff0c;根据官方文档有几种暗装方式&#xff1a; https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html 这里选择rpm包安装https://www.elastic.co/guide/en/elasticsearch/reference/curre…

Nginx 基础(一)

一 、Nginx简述 Nginx是一个开源、高性能、可靠的HTTP中间件、代理服务。二 、常见的HTTP服务 1. HTTPD-Apache基金会 2. IIS-微软 3. GWS-Google 4. Nginx三、为什么选择Nginx 原因一&#xff1a;IO多路复用epoll &#xff08;主要解决了并发性的问题&#xff09; 注1&#xf…

Ajax基本案例详解之load的实现

Ajax的load实现&#xff1a; 看这篇之前建议大家去看看前面两篇文章&#xff1a; 1.Ajax基本案例详解之$.ajax的实现 2.Ajax基本案例详解之$.get的实现 现在写一下$.load()里面的主要内容&#xff1a; $("#semail").load("doindex.jsp","email1&q…

ASP.NET Core高性能服务器HTTP.SYS

如果我们只需要将ASP.NET CORE应用部署到Windows环境下&#xff0c;并且希望获得更好的性能&#xff0c;那么我们选择的服务器类型应该是HTTP.SYS。Windows环境下任何针对HTTP的网络监听器/服务器在性能上都无法与HTTP.SYS比肩。[本文节选《ASP.NET Core 6框架揭秘》第18章]一、…

神经网络- receptive field

记录一下感受野的理解&#xff1a; 在神经网络中&#xff0c;感受野的定义是&#xff1a; 神经网络的每一层输出的特征图&#xff08;Feature ap&#xff09;上的像素点在原图像上映射的区域大小。 1. 神经网络中&#xff0c;第一个卷积层的 感受野大小&#xff0c;就等于filt…

734. [网络流24题] 方格取数问题 二分图点权最大独立集/最小割/最大流

问题描述&#xff1a;在一个有m*n 个方格的棋盘中&#xff0c;每个方格中有一个正整数。现要从方格中取数&#xff0c;使任意2 个数所在方格没有公共边&#xff0c;且取出的数的总和最大。试设计一个满足要求的取数算法。编程任务&#xff1a;对于给定的方格棋盘&#xff0c;按…

Nginx 基础 ( 二)

一、HTTP请求 http请求包括客户端请求服务端 以及 服务端响应数据回客户端&#xff0c;如下 请求&#xff1a;包括请求行、请求头部、请求数据 响应&#xff1a;包括状态行、消息报头、响应正文 比如在Linux中curl请求网站获取请求信息和响应信息 curl -v http://www.kugou.com…

《金融行业应用解决方案白皮书》发布,金融自主创新未来可期!

日前&#xff0c;以“聚势赋能 行业共创”为主题的金融行业解决方案发布会在线上举行。麒麟软件发布《金融行业应用解决方案白皮书》&#xff0c;并发起成立“金融机具生态圈俱乐部”&#xff0c;助力金融行业用户高质量发展。金融信息系统曾经被国外厂商垄断金融信息系统作为国…

leetcode53 Maximum Subarray 最大连续子数组

题目要求 Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [-2,1,-3,4,-1,2,1,-5,4], the contiguous subarray [4,-1,2,1] has the largest sum 6.即&#xff1a;寻找数列中的一个子…

黑马程序员-WEB前端与移动开发就业班

Web前端 — IT互联网的“门面”有人的地方就有江湖&#xff0c;有网站的地方就有Web前端&#xff0c;无所不用&#xff0c;互联网大势所在。课程循序渐进&#xff0c;技术小白课快速上手课程结构由浅入深&#xff0c;基础课程讲解充分&#xff0c;了解网页的结构组成、分析页面…