随笔 - 437  文章 - 0 评论 - 342 阅读 - 50万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

 

正文

4小时Dapr+.NET 5 +K8S 的实战  https://ke.qq.com/course/4000292?tuin=1271860f

Dapr进阶虚拟机集群实战(非K8S) https://ke.qq.com/course/4002149?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 DaprClient

app = 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 controllers

import (
    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


posted on   chester·chen  阅读(1343)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示