本文为『Zino开发框架技术解读』系列的第一篇。
Zino定位为企业级应用框架,奉行“约定优于配置”的原则,借鉴Node的Egg.js、Java的Spring Boot、Gloang的Beego,提供与axum(已实现)、actix-web(计划中)等框架的集成,目前仍在快速迭代开发中。
1️⃣ 功能特色
开箱即用,快速开发应用。
✨ 极简设计、模块化架构、高层次抽象。
⚡ 兼顾开发效率和性能的平衡。
为PostgreSQL提供高度优化的ORM。
轻量级定时任务。
统一访问存储服务、数据源以及聊天机器人。
支持追踪、度量和日志。
2️⃣ 核心模块
zino-core
提供Zino框架的19个核心模块:
accessor
(可选)模块基于OpenDAL提供统一的存储服务操作。application
模块提供统一的应用接口定义以集成其他框架(如axum、actix-web等)。authentication
模块提供零信任身份认证相关功能,包括AccessKey、SecurityToken、SessionId以及HTTP签名。cache
(可选)模块提供基于内存的缓存,目前只支持LRU缓存。channel
模块实现CloudEvent规范和订阅功能。chatbot
(可选)模块提供统一的聊天机器人调用接口(目前仅支持OpenAI)。connector
(可选)模块提供统一的数据源连接、查询接口。database
(可选)模块为PostgreSQL数据库提供ORM。datetime
模块提供ISO 8601标准的日期处理功能。error
模块提供通用的错误类型。extend
模块通过扩展特性来提供辅助函数。i18n
模块提供多语言服务支持。model
模块提供应用模型的高层次抽象。request
模块提供请求上下文和请求验证功能。response
模块实现标准化的请求响应。schedule
模块实现轻量化的调度任务,支持异步任务。state
模块实现应用域和请求域的状态管理。trace
模块提供HTTP请求头用于性能度量和追踪。view
(可选)模块提供HTML模板渲染功能。
3️⃣ 应用目录约定规范
Zino开发框架采用了类似于Egg.js的应用目录约定规范:
Cargo.toml
为应用的Cargo配置文件。assets/
为可以通过网络访问的静态资源目录,index.html
为默认首页文件,404.html
为404文件,data/
为共享的数据目录。config/config.{env}.toml
用于编写不同运行环境的配置文件。config/locale/{lang-id}.ftl
于编写i8n多语言文件(目前仅支持Fluent规范)。data/
用于放置本地数据文件(不能通过网络访问)。logs/
用于日志文件输出。src/controller/
用于编写控制器。src/main.rs
用于启动应用。src/router/
用于配置URL路由规则。src/schedule/
用于编写定时任务。src/service/
用于编写业务逻辑层。templates/
用于编写HTML模板文件(目前仅支持Tera模板)。