因为基于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

最新文章

  1. 创建 Transact-SQL 作业步骤
  2. ubuntu16.04源码编译安装wine1.8.6安装不上引来的错误
  3. git 教程(12)--分支管理
  4. TCP中需要了解的东西
  5. JSON 之 SuperObject(4): 增、删、改
  6. JPBM4.4基础及数据库说明
  7. OpenStack cloudCompute glassary术语project,tenant,user
  8. RTSP 消息拼装实例代码
  9. 開源sources
  10. [Machine Learning]学习笔记-Neural Networks
  11. Educational Codeforces Round 62 Div. 2
  12. JUnit学习笔记-0-JUnit启动类
  13. Java类加载双亲委托模式优点
  14. Jemter 压测基础(一)——基本概念、JMeter安装使用、分布式测试、导出测试结果、编写测试报告
  15. 微信jssdk批量添加卡券接口
  16. 设置VS2010和IE8 调试ATL控件<转>
  17. docker 创建镜像,并推送到私有仓库
  18. [HNOI2018]道路(DP)
  19. [ CodeVS冲杯之路 ] P1294
  20. 编程算法 - 求1+2+...+n(构造函数) 代码(C++)

热门文章

  1. Asp.NetCore3.1 WebApi 获取配置json文件中的数据
  2. 搭建本地yum源出现:mount: 在 /dev/sr0 上找不到媒体
  3. Nginx使用Lua模块实现WAF
  4. Python之requests模块-request api
  5. MySQL(四)——
  6. 微信支付 V3 开发教程(一):初识 Senparc.Weixin.TenPayV3
  7. 1.深入TiDB:初见TiDB
  8. 页面调用系统window打印
  9. 本地jvisualvm通过jstatd远程监控GC
  10. Java 扫描识别条形码图片