欢迎大家参加4小时Dapr+.NET 5的实战课程
课程链接 https://ke.qq.com/course/4000292?tuin=1271860f
因为基于Dapr的服务架构是不限语言的,我们来看看Dapr的跨语言开发。我们使用golang,python,.NET来实现跨语言的服务调用,拓扑如下
我们继续使用.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服务,结构如下
指定服务端口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
项目结构如下
修改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的默认接口,调用成功!!
最后,实战源码 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 如此令人兴奋