Skip to content

Latest commit

 

History

History
176 lines (131 loc) · 4.24 KB

README-ch.md

File metadata and controls

176 lines (131 loc) · 4.24 KB

TAC

What is TAC ?

  • TAC (Tiny API Cloud ) 是与 tangram 配套的服务端解决方案。当然也支持脱离 tangram 使用;
  • TAC 不是平台,也不是框架,而是一种开发模式;

Features

  • 快速发布;
  • 无需部署;
  • 灵活修改;
  • 快速添加数据源;
  • 客户端开发人员直接参与服务端逻辑;

Why TAC?

TAC 之前

  • 在 TAC 诞生之前,天猫 app 大多数页面服务端的开发模式是这样的 。以首页为例:
    • 1.客户端与服务端同学约定接口数据类型,字段;
    • 2.服务端提供 mock 接口,两端并行开发;
    • 3.测试、部署、发布。
  • 这种模式的弊端在于,由于页面依赖了各种数据源,发布是一个漫长的过程,如果遇到字段修改,整个应用重新编译、打包部署流程太长;不同的页面部署在不同的应用中,无法共享数据源

TAC 之后

  • TAC 接入各个常用数据源;
  • 客户端同学直接在 TAC 上提交源码,编译、测试、并发布生效;
  • 客户端页面开发不需要服务端同学参与,免去沟通过程;
  • 服务端同学专注开发业务逻辑;

tac流程

Quick Start

安装redis

运行 container

java -jar tac-container.jar

运行 console 控制台

java -jar tac-console.jar --admin
  • 成功后可打开控制台
http://localhost:7001/#/tacMs/list

代码开发

        <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"
}