Dapr + .NET 实战(十三)跨语言开发

欢迎大家参加4小时Dapr+.NET 5的实战课程

课程链接     https://ke.qq.com/course/4000292?tuin=1271860f

36ed5e732d9f075d29788fdc67c4e5db.png

278af23c194ddddcb50c37da9b1d1dbe.png

 因为基于Dapr的服务架构是不限语言的,我们来看看Dapr的跨语言开发。我们使用golang,python,.NET来实现跨语言的服务调用,拓扑如下

89affdba195e42966d45c0bc42ec547a.png

 我们继续使用.NET 5的fontend和backend,新增python的flask服务,新增golang的beego服务。

1.新增python的flask服务

新增python虚拟环境flask_env

mkvirtualenv flask_env

进入flask_env,安装flask和dapr

pip install flask
pip install dapr

新增简单的flask服务,结构如下

c70f14c8ca6407e14e34599f1e42280f.png

指定服务端口5003,并调用frontend的Dapr/ip接口

from flask import Flask
from dapr.clients import DaprClientapp = Flask(__name__)@app.route("/")
def call_frontend():with DaprClient() as d:res = d.invoke_method('frontend','Dapr/ip',None)return res.text()app.run(port=5003)

2.新增golang的beego服务

安装beego

go get github.com/beego/bee/v2

新增beego服务

bee new goapi

项目结构如下

922ca2f7275d397252d7afc9bf08410f.png

修改conf/app.conf中的监听端口5004

appname = daprapi
httpport = 5004
runmode = dev

修改controllers/default.go api,调用pythonapi的接口/

package controllersimport (beego "github.com/beego/beego/v2/server/web"dapr "github.com/dapr/go-sdk/client""context"
)type MainController struct {beego.Controller
}func (c *MainController) Get() {ctx := context.Background()client, err := dapr.NewClient()if err != nil{c.Data["json"] = err.Error()c.ServeJSON()}// defer client.Close()resp, err := client.InvokeMethod(ctx, "pythonapi", "/", "get")if err != nil{c.Data["json"] = err.Error()c.ServeJSON()}c.Data["json"] = string(resp)c.ServeJSON()
}

3.启动服务并测试

启动backend

dapr run --dapr-http-port 3511 --app-port 5000 --app-id backend dotnet  .\BackEnd\bin\Debug\net5.0\BackEnd.dll

启动frontend

dapr run --dapr-http-port 3501 --app-port 5001  --app-id frontend dotnet  .\FrontEnd\bin\Debug\net5.0\FrontEnd.dll

启动pythonapi

dapr run --dapr-http-port 3503 --app-port 5003  --app-id pythonapi python ./flaskapi/app.py

启动goapi

dapr run --dapr-http-port 3504 --app-port 5004  --app-id goapi bee run

现在调用goapi的默认接口,调用成功!!

6f67bf66a7623f6c570315d6d755a4b6.png

最后,实战源码 https://github.com/cysnet/dapr-aspnetcore-demo

相关文章:

  • Dapr实战(一) 基础概念与环境搭建

  • Dapr + .NET Core实战(二) 服务调用

  • Dapr + .NET Core实战(三)状态管理

  • Dapr + .NET 实战(四)发布和订阅

  • Dapr + .NET 实战(五)Actor

  • Dapr + .NET 实战(六)绑定

  • Dapr + .NET 实战(七)Secrets

  • Dapr + .NET 实战(八)服务监测

  • Dapr + .NET 实战(九)本地调试

  • Dapr + .NET 实战(十-终篇)K8S运行Dapr

  • Dapr + .NET实战(十一)单机Dapr集群负载均衡

  • Dapr + .NET 实战(十二)服务调用之GRPC

  • 为什么 Dapr 如此令人兴奋

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

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

相关文章

linux 压缩成bz2,linux 将文件压缩成bz2格式 命令:bzip2

bzip2命令用于创建和管理(包括解压缩)“.bz2”格式的压缩包。我们遇见Linux压缩打包方法有很多种,以下讲解了Linux压缩打包方法中的Linux bzip2命令的多种范例供大家查看,相信大家看完后会有很多收获。语法bzip2 (选项 ) (参数)选项-c或——stdout&am…

飞机上的排泄物都去哪里了?直接冲下来?

全世界只有3.14 % 的人关注了爆炸吧知识火车想必大家都知道,上完厕所,来也冲冲,去也冲冲,直接拥抱大地!所以进站都会锁厕所门~那么飞机上也是这样吗?飞机上早期的厕所 早期,飞机上的马桶和普通…

Android去掉顶部的阴影

首先定义一个style <style name"Theme.IOSched" parent"android:style/Theme.Light"> <item name"android:windowNoTitle">true</item><item name"android:windowContentOverlay">null</item></sty…

.NET 基金会项目介绍 - ReactiveUI

ReactiveUI 是属于 .Net 基金会的一个项目&#xff0c;本文将简要介绍该项目相关的信息。中文介绍中文介绍内容翻译自英文介绍&#xff0c;主要采用意译、如与原文存在出入&#xff0c;请以原文为准。ReactiveUIReactiveUI 是一个可用于所有 .Net 平台的可组合的 MVVM 框架&…

NPOI 删除指定的行

http://jiajietieren.blog.163.com/blog/static/60186942201261673517542/转载于:https://www.cnblogs.com/ajie1212/archive/2012/07/16/2594125.html

最具体的历史centos下一个 postfix + extmail + dovecot + maildrop 安装注意事项2014更新...

这篇文章原本是2008年发表的&#xff0c;近期几天照此笔记又安装了一遍系统。这里更新一下记录。作者&#xff1a;wangdy本文发表于 http://blog.csdn.net/aryang/article/details/40593283 转载请注明&#xff01;1. 概述 安装环境是CentOS6.5&#xff0c;拿到server的时候仅…

android 只能输入汉字,EditText限制输入的几种方式及只显示中文汉字的做法

前段时间项目中有个需求是要求只能输入汉字&#xff0c;并且不能输入偏旁部首&#xff0c;于是总结了下EditText限制输入的几种方式&#xff0c;但是对于语音输入的还没找到好的解决方案&#xff1a;通过设置EditText的inputType来限制&#xff0c;可以在xml或者java代码中设置…

plsql导出表结构到excel_plsql怎么导出表格!如何用plsql从oracle中导入导出数据

如何将plsql内多个窗口查询结果同时导出到excel内在PL/SQL工具中执行得到的可以导出放在同一个EXCEL的多个Sheet页签的&#xff0c;操骤为&#xff1a;选中其中一个结果集中数据→右键→复制到Excel→作为xls复制所有(or作为xlsx复制所有)→完成。操作截图&#xff1a;Excel展示…

史上最强悍的一张图,没有任何一个中国人能躲得开!

▲ 点击查看几乎每个家庭都会有两张地图&#xff1a;一张世界地图&#xff0c;一张中国地图。薄薄的两张纸&#xff0c;蕴藏着让每个人学会“看世界”的磅礴力量。哈佛上一任校长&#xff0c;也是300多年来唯一一位女校长德鲁吉尔平福斯特&#xff08;Drew Gilpin Faust&#x…

解决vista/win7安装windows live messenger 2011找不到wlidcli.dll及错误800488eb .

问题一&#xff1a;找不到文件wlidcli.dll。 这个问题可能是由于修改了默认的Common Files 文件夹所在磁盘造成的。默认的位置是“C:/Program Files (x86)/Common Files/microsoft shared/Windows Live”&#xff0c;比如被改到了“D:/Program Files (x86)/Common Files/micros…

Dapr牵手.NET学习笔记:可观测性-分布式跟踪

分布式跟踪在dapr里是开箱即用的&#xff0c;不需要对应用作任何一丁点的侵入式编程。之前的开发&#xff0c;如果想实现分式跟踪&#xff0c;就得在应用中埋点&#xff0c;这是一个与业务无关系的动作。dpar通过sidecar可以轻松做到这点&#xff0c;从而让程序员更多精力投入到…

mysql cookbook 1

show databases; use [database]; show tabels;GRANT ALL ON database.* TO user localhost IDENTIFIED BY password;>mysql -h localhost -p -u user;转载于:https://www.cnblogs.com/chhyong88/archive/2012/07/22/2603592.html

新人入职培训有关职场沟通的总结分享

沟通 不要越级沟通言必成三&#xff0c;超过3点记不住的。kiss原则&#xff0c;keep it simple and stupid说事实观点先说结论与重点&#xff0c;再说细节支撑结论&#xff1a;mece原则&#xff0c;穷尽且不交叉提问最好不要问是或否的问题&#xff0c;而是开放性问题。 是或否…

Android带三角形的弹窗,Android实现三角形气泡效果方式汇总

在开发过程中&#xff0c;我们可能会经常遇到这样的需求样式&#xff1a;这张图是截取京东消息通知的弹出框&#xff0c;我们可以看到右上方有个三角形的气泡效果&#xff0c;这只是其中一种&#xff0c;三角形的方向还可以是上、下、左、右。通过截图可以发现&#xff0c;气泡…

ecno是什么的缩写_美国的英文缩写是什么简写

利坚合众国简称美国&#xff0c;它的英文也是有简写的&#xff0c;就算我们不知道它的全称其缩写也不会忘记。以下是学习啦小编给大家带来美国的英文缩写&#xff0c;以供参阅。美国的英文简写美国的英文缩写&#xff1a;the United States of America (U.S.A.)美国的英文缩写&…

GDI+ 设置文本对齐方式

可通过以下语句来设置文本的对齐方式&#xff1a;StringFormat sF new StringFormat()sF.Alignment StringAlignment.Far; sF.LineAlignment StringAlignment.Far;代码&#xff1a;、View Code privatevoidForm1_Paint(objectsender, PaintEventArgs e) { …

那些视觉上骗了你的东西,你上当了吗?

全世界只有3.14 % 的人关注了爆炸吧知识世界上最离谱的错觉图&#xff0c;看完我瞎了还能不能好好的玩耍了啊&#xff01;1

微服务组件记事本:本地搭建Skywalking

最近一直在研究微服务&#xff0c;完全避免不了的是各种中间件的使用&#xff0c;打算把过程简要记录下来&#xff0c;过程很简单&#xff0c;也不会有原理和源代码级别的讲解&#xff0c;只是做下简单的知识备份。今天开始研究下链路追踪Skywalking&#xff0c;还记得之前在《…

linux nodejs 采集器,Linux记录-jstack采集namenode gc信息

#!/bin/bash#以hdfs用户执行jstack每分钟采集一次namenode gc日志#mkdir -p /tmp/jstackcd /log/hadoop/jstack_nnpid$(jps | grep -i "namenode" | awk NR1{print $1})dir/log/hadoop/jstack_nn/jstack_nn_date "%Y-%m-%d-%H"if [ ! -d ${dir} ]thenmkdir…

1.1-1.5-vim编辑器

vim是vi的升级版共有3种工作模式&#xff1a;1一般模式 2编辑模式 3命令模式a在光标后插入 i在光标前插入 o在光标下插入新行A在光标行末插入 I在光标行首插入 O在光标上插入新行$光标移动到行尾 0光标移动到行首gg光标到第一行 G光标到最后一行…