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

Dapr + .NET Core实战(十三)跨语言开发的更多相关文章

  1. 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)

    . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 博客总结 : 设置SecureCRT ...

  2. 阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)

    . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 博客总结 : 设置SecureCRT ...

  3. Dapr + .NET Core实战(七)Secrets

    什么是Secrets 应用程序通常会通过使用专用的存储来存储敏感信息,如连接字符串.密钥等. 通常这需要建立一个密钥存储,如Azure Key Vault.Hashicorp等,并在那里存储应用程序级 ...

  4. Dapr + .NET Core实战(十二)服务调用之GRPC

    什么是GRPC gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. gRPC 的主要优点是: 高性能轻量级 RPC 框架. 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的 ...

  5. Dapr + .NET Core实战(九)本地调试

    前几节开发Dapr应用程序时,我们使用 dapr cli 来启动dapr服务,就像这样: dapr run --dapr-http-port 3501 --app-port 5001 --app-id ...

  6. Dapr + .NET Core实战(十四)虚拟机集群部署 mDNS + Consul

    前面我们说了在单机模式下和K8S集群下的Dapr实战,这次我们来看看如何在不使用K8S的情况下,在一个传统的虚拟机集群里来部署Dapr. 1.环境准备 我们准备两台centos7虚拟机 Dapr1:1 ...

  7. Dapr + .NET Core实战(五)Actor

    什么是Actor模式 Actors 为最低级别的"计算单元" 以上解释来自官方文档,看起来"晦涩难懂".大白话就是说Actors模式是一段需要单线程执行的代码块 ...

  8. Dapr + .NET Core实战(八)服务监测

    服务监测 分布式服务性能指标,链路追踪,运行状况,日志记录都很重要,我们日常开发中为了实现这些功能需要集成很多功能,替换监控组件时成本也很高. Dapr 可观测性模块将服务监测与应用程序分离.它自动捕 ...

  9. Dapr + .NET Core实战(十一)单机Dapr集群

    如何单机部署Dapr集群 第十篇讲过了K8S集群下如何使用Dapr运行程序,但是很多人一直在问如何单机下进行Dapr的负载,这节课我们来聊聊如何单机进行Dapr的负载. 首先要说的是单机下,通过 da ...

随机推荐

  1. 带有附件及图片正文的JavaMail邮件发送

    1 package javamail; 2 3 import java.io.UnsupportedEncodingException; 4 import java.util.Properties; ...

  2. Consul 入门-初识

    背景 现状:单体架构逐渐被微服务架构所替代,原本两个功能模被拆分成了两个服务.原本两个模块块间的通信只需要函数调用就能够实现,现在却做不到了,因为它们不在同一个进程中,甚至两个服务都可能部署到不同的机 ...

  3. linux高级监控atop的使用

    一.centos安装 sudo yum -y install epel-release.noarch sudo yum -y install atop sudo systemctl enable at ...

  4. 跨平台APP推荐收藏

    时间:2019-04-11 整理:pangYuaner 标题:十大跨平台优秀软件 地址:https://www.cnblogs.com/the-king-of-cnblogs/p/3154758.ht ...

  5. RapidSVN设置diff和edit工具

      菜单栏 -> View -> Preferences -> Programs选择相应的配置页即可   需要配置的路径,默认都在 /usr/bin目录下的 editor可以用ged ...

  6. Python3-sqlalchemy-orm 回滚

    #-*-coding:utf-8-*- #__author__ = "logan.xu" import sqlalchemy from sqlalchemy import crea ...

  7. 手撕LRU缓存了解一下

    面试官:来了,老弟,LRU缓存实现一下? 我:直接LinkedHashMap就好了. 面试官:不要用现有的实现,自己实现一个. 我:..... 面试官:回去等消息吧.... 大家好,我是程序员学长,今 ...

  8. tar 命令简介

    tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar最初被用来在磁带上创建档案,现在,用户可以在 ...

  9. echo -e 命令详解

    echo在php中是输入那么在linux中是不是也是输入呢,当然echo在linux也是输入不过它的用法比php强大多了可以带参数及一些东西,下面我们来看一篇关于linux echo命令介绍及-n.- ...

  10. go案例:客户管理系统流程 mvc模式 分层设计

    下面是一个简要的客服系统,主要是演示分层计.. model : 数据部份: package model import "fmt" //声明一个结构体,表示一个客户信息 type C ...