欢迎光临
我的个人博客网站

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

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

 

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

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

 

 我们继续使用.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服务,结构如下

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

指定服务端口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

项目结构如下

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

修改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  .BackEndbinDebugnet5.0BackEnd.dll

启动frontend

dapr run --dapr-http-port 3501 --app-port 5001  --app-id frontend dotnet  .FrontEndbinDebugnet5.0FrontEnd.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的默认接口,调用成功!!

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

 

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

赞(0) 打赏
未经允许不得转载:张拓的天空 » Dapr + .NET Core实战(十三)跨语言开发
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专业的IT技术经验分享 更专业 更方便

联系我们本站主机

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏