Dapr + .NET Core实战(十三)跨语言开发
因为基于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实战(十三)跨语言开发的更多相关文章
- 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 博客总结 : 设置SecureCRT ...
- 阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 博客总结 : 设置SecureCRT ...
- Dapr + .NET Core实战(七)Secrets
什么是Secrets 应用程序通常会通过使用专用的存储来存储敏感信息,如连接字符串.密钥等. 通常这需要建立一个密钥存储,如Azure Key Vault.Hashicorp等,并在那里存储应用程序级 ...
- Dapr + .NET Core实战(十二)服务调用之GRPC
什么是GRPC gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. gRPC 的主要优点是: 高性能轻量级 RPC 框架. 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的 ...
- Dapr + .NET Core实战(九)本地调试
前几节开发Dapr应用程序时,我们使用 dapr cli 来启动dapr服务,就像这样: dapr run --dapr-http-port 3501 --app-port 5001 --app-id ...
- Dapr + .NET Core实战(十四)虚拟机集群部署 mDNS + Consul
前面我们说了在单机模式下和K8S集群下的Dapr实战,这次我们来看看如何在不使用K8S的情况下,在一个传统的虚拟机集群里来部署Dapr. 1.环境准备 我们准备两台centos7虚拟机 Dapr1:1 ...
- Dapr + .NET Core实战(五)Actor
什么是Actor模式 Actors 为最低级别的"计算单元" 以上解释来自官方文档,看起来"晦涩难懂".大白话就是说Actors模式是一段需要单线程执行的代码块 ...
- Dapr + .NET Core实战(八)服务监测
服务监测 分布式服务性能指标,链路追踪,运行状况,日志记录都很重要,我们日常开发中为了实现这些功能需要集成很多功能,替换监控组件时成本也很高. Dapr 可观测性模块将服务监测与应用程序分离.它自动捕 ...
- Dapr + .NET Core实战(十一)单机Dapr集群
如何单机部署Dapr集群 第十篇讲过了K8S集群下如何使用Dapr运行程序,但是很多人一直在问如何单机下进行Dapr的负载,这节课我们来聊聊如何单机进行Dapr的负载. 首先要说的是单机下,通过 da ...
随机推荐
- 关于Mybatis中表中字段名和POJO中字段名不同的解决方法
项目结构: POJO中: package com.domain; /** * @author mzy * 定义orders表对应的实体类 */ public class Order { /** * C ...
- jQuery中的样式(七):addClass()、removeClass()、toggleClass()、hasClass()、css()、width()、height()等
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- Hibernate之检索方式
时间:2017-1-22 16:09 --检索方式Hibernate中提供了以下几种检索对象的方式: * 导航对象图检索方式 根据已经加载额对象导航到其他对象. ...
- webpack编译后的代码如何在浏览器执行
浏览器是无法直接使用模块之间的commonjs或es6,webpack在打包时做了什么处理,才能让浏览器能够执行呢,往下看吧. 使用commonjs语法 先看下写的代码, app.js minus.j ...
- ES6扩展——对象的扩展(简洁表示法与属性名表达式)
1.简洁表达法. 当属性名与属性值相同时,可省略属性值:例如:{name : name}可以写成 {name} 属性方法中,可省略冒号与function,直接 属性名(){}即可.例如{say : f ...
- Spring Boot 入门系列(二十三)整合Mybatis,实现多数据源配置!
d之前介绍了Spring Boot 整合mybatis 使用注解方式配置的方式实现增删改查以及一些复杂自定义的sql 语句 .想必大家对spring boot 项目中,如何使用mybatis 有了一定 ...
- Jenkins(6)- 新建用户
如果想从头学起Jenkins的话,可以看看这一系列的文章哦 https://www.cnblogs.com/poloyy/category/1645399.html 进入用户管理 点击新建用户 填写新 ...
- table头部固定,内容滚动,类似新闻一下向上滚动
html: <div class="ul_box"> <table class="table1"> <thead> < ...
- NOIP模拟51
樱花满地集于我心,楪舞纷飞祈愿相随 前言 太菜了,人手切掉两个题,我竟然一道都不会.. 改 T3 的时候整个人的心态都崩掉了,一部分原因可能是语文素养不高导致我看不懂题解. 另一部分可能就是系太不太好 ...
- window 日志的查看与清理
日志查看: 启动Windows实验台,点击:开始 - 控制面板 - 管理工具 - 事件查看器.如下图所示. 2.在事件查看器中右键应用程序(或安全性.系统.DNS服务器)查看属性可以得到日志存放文件的 ...