Skip to content

介绍

ACE 是什么

ACE(Agent for Cangjie to Engine) 是一个用 仓颉(Cangjie) 语言编写的服务端框架。它在定位上对标 Spring Boot / MidwayJS,在技术路线上对标 Micronaut / Quarkus——核心理念是编译期宏代替运行时反射:所有依赖注入、路由映射、AOP 切面均在编译阶段生成等价的显式代码,运行时零反射开销,原生二进制直接部署。

ACE 的目标是让仓颉开发者用熟悉的声明式注解风格(@Controller@Service@Inject)快速构建高性能微服务,同时享受 Native 编译带来的启动速度与内存优势。

核心特性

特性说明
编译期宏 / 零反射@Controller@Service 等宏在编译期展开为显式注册代码,无运行时扫描
洋葱中间件内核Koa 风格 compose 管道,支持 async/await 风格异步洋葱
IoC 容器基于宏的构造注入(@Inject)、配置注入(@Value)、作用域(单例 / prototype / request)
AOP 切面@Around@Timed@Log@Retry@CircuitBreaker 编译期织入
声明式路由@Get@Post@PathParam@Query@Body 参数绑定
ORM@Entity@Transactional@RequiresNew,底层 SQLite FFI,支持真实事务
WebSocket@WsController + JSR-356 风格消息处理
JWT / 安全JWT 鉴权中间件、安全响应头、CSRF 防护、限流插件
结构化日志@Log 宏注入 logger、MDC 上下文、JSON/text/simple 三种输出格式
可观测性@Timed 方法计时、Prometheus 指标端点、SSE 事件流
多环境配置config/application.toml + application.{env}.toml 按需合并

与传统框架对比

维度Spring BootMidwayJSACE
语言Java / KotlinTypeScript仓颉(Cangjie)
依赖注入运行时反射运行时反射编译期宏展开
启动时间秒级(JVM 预热)秒级(V8 JIT)毫秒级(原生二进制)
运行时JVMNode.js原生 Native
内存占用高(JVM 堆)低(栈 + 手动可控堆)
AOP 实现运行时动态代理装饰器 + Metadata编译期宏织入
配置方式application.ymlconfig/*.tsconfig/*.toml 声明式
可调试性反射黑盒TS 类型丢失--debug-macro 审计展开代码

编译期宏的优势

使用 cjc --debug-macro 可以审计所有宏展开后的等价代码,不存在"魔法黑盒",行为完全可预测。

架构层次

ACE 自底向上分为五层,每层均可独立引入:

┌─────────────────────────────────────────┐
│          ace-framework(声明式宏层)       │
│   @Controller @Service @Inject @Get …   │
├─────────────────────────────────────────┤
│          ace-router(路由中间件)          │
│   Router / pathToRegex / 参数绑定         │
├──────────────────┬──────────────────────┤
│  ace-bodyparser  │   ace-security       │
│  (请求解析)       │   (JWT/安全头/限流)    │
├──────────────────┴──────────────────────┤
│          ace-web(洋葱内核)               │
│   App / compose / Context / Middleware   │
├─────────────────────────────────────────┤
│          ace-http(stdx 适配层)           │
│   AceDistributor → stdx.net.http         │
└─────────────────────────────────────────┘

或用 Mermaid 表示依赖关系:

纯内核无 stdx 依赖

ace-webace-routerace-bodyparser 三个包不依赖 stdx,可独立单元测试,也可嵌入其他仓颉项目。只有 ace-httpace-framework-runtime 才接触 stdx。

适用场景

  • 微服务 / REST API:原生编译 + 低内存,适合容器化部署(镜像体积 < 20 MB)
  • 智能体后端ace-agent-runtime 提供 Agent 任务调度、工具调用、上下文管理
  • 边缘计算:毫秒级冷启动,适合 Serverless / FaaS 场景
  • 高并发网关:协程并发 + 零拷贝响应,吞吐量媲美 Go/Rust 框架
  • 企业内服务:完整的 IoC + AOP + ORM 技术栈,迁移 Spring 生态成本低

不适用场景

如果你的团队深度依赖 JVM 生态(Hibernate、Spring Data、各类 Java 库),或需要 GraalVM 多语言互操作,ACE 暂不覆盖这些场景。

下一步

基于 Apache-2.0 许可证发布