Dapr + .NET Core實戰(十三)跨語言開發


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM