- TAC (Tiny API Cloud ) 是与 tangram 配套的服务端解决方案。当然也支持脱离 tangram 使用;
- TAC 不是平台,也不是框架,而是一种开发模式;
- 快速发布;
- 无需部署;
- 灵活修改;
- 快速添加数据源;
- 客户端开发人员直接参与服务端逻辑;
- 在 TAC 诞生之前,天猫 app 大多数页面服务端的开发模式是这样的 。以首页为例:
- 1.客户端与服务端同学约定接口数据类型,字段;
- 2.服务端提供 mock 接口,两端并行开发;
- 3.测试、部署、发布。
- 这种模式的弊端在于,由于页面依赖了各种数据源,发布是一个漫长的过程,如果遇到字段修改,整个应用重新编译、打包部署流程太长;不同的页面部署在不同的应用中,无法共享数据源
- TAC 接入各个常用数据源;
- 客户端同学直接在 TAC 上提交源码,编译、测试、并发布生效;
- 客户端页面开发不需要服务端同学参与,免去沟通过程;
- 服务端同学专注开发业务逻辑;
安装redis
java -jar tac-container.jar
java -jar tac-console.jar --admin
- 成功后可打开控制台
http://localhost:7001/#/tacMs/list
- 仓库地址 oss.sonatype.org
- 添加 SDK 依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>tac-sdk</artifactId>
<version>${project.version}</version>
</dependency>
- 编写代码
public class HelloWorldTac implements TacHandler<Object> {
/**
* 引入日志服务
*/
private TacLogger tacLogger = TacInfrasFactory.getLogger();
/**
* 编写一个实现TacHandler接口的类
*
* @param context
* @return
* @throws Exception
*/
@Override
public TacResult<Object> execute(Context context) throws Exception {
// 执行逻辑
tacLogger.info("Hello World");
Map<String, Object> data = new HashMap<>();
data.put("name", "hellotac");
data.put("platform", "iPhone");
data.put("clientVersion", "7.0.2");
data.put("userName", "tac-userName");
return TacResult.newResult(data);
}
}
cd tac-dev-source
java -jar tac-console.jar --package --msCode=helloworld
-
预发布
-
测试预发布
- 线上验证
curl http://localhost:8001/api/tac/execute/helloworld -s|json
- 结果
{
"success": true,
"msgCode": null,
"msgInfo": null,
"data": {
"helloworld": {
"data": {
"name": "hellotac",
"clientVersion": "7.0.2",
"userName": "tac-userName",
"platform": "iPhone"
},
"success": true,
"msCode": "helloworld"
}
},
"hasMore": null,
"ip": "127.0.0.1"
}