- 最新稳定版本: v1.0
- 使用文档详见官网,点击跳转使用手册
Once架构是一套后端应用的顶层架构,架构本身只约束了工程结构和开发过程,对后端应用的基础技术无任何改造和深度封装。
Once架构关注的是开发效率和维护成本,保证业务开发人员以近似千人一面的方式完成业务功能的开发。
Once架构是具备成长性的,A项目积累下来的模块代码,可以直接使用在B项目中,实现项目复利。
虽然Once架构提倡代码生成,但是,在排查错误时,仍然建议从代码本身找出出错原因,再重新生成正确的代码。
此架构是一种顶层架构,架构本身只约束了工程结构和开发过程,对基础技术无任何改造和深度封装。
架构中采用的基础技术如下:
其中,由于Once架构只是一种规则,基础技术甚至是开发语言都是可以替换的,可联系官方打造个性化架构。
在使用Once架构前,请学习SpringBoot、Java程序、Http请求等相关知识。
Once架构只是一种规则,实际上还是一个SpringBoot工程,要想真正使用起来、或者排查一些错误,还是需要先学习这些知识。
Once架构的设计**可以直白地理解为:所有代码只写一次,如果不能,则用代码生成器生成它。另外,对于同样使用Once架构的两个项目,A项目积累下来的模块代码,可以直接使用在B项目中。
从宏观上讲,后端应用程序是多个请求的集合。而对单个请求来讲,是多个步骤的集合。
以一个审核博客的接口为例,可以对其理解为:第一步“用户鉴权”、第二步“检查必要参数”、第三步“填充默认参数”、第四步“数据库操作”。
如果从“单个请求就是多个步骤的集合”出发的话,代码可以分成两层:
- 业务代码:指定该业务请求的步骤,且指定每一步调用的模块,例如:第一步“调用xx模块”、第二步“调用yy模块”;
- 模块代码:实现某种具体功能的代码块,例如用户鉴权模块、检查必要参数模块等。模块代码与业务功能无关,只关心被使用的场景。
这样的话,模块代码是可以只写一次的(所有接口都可以使用)。但是,业务代码部分仍然需要编写大量的代码,而这些代码其实是高度重复的。那么,如果加入“数据池”的话,则可以进一步简化业务代码。
业务代码每次调用模块时,都把“数据池”和模块参数传入模块中,模块代码根据模块参数实现逻辑,模块代码可直接对“数据池”进行处理(可以从“数据池”中获取或更新数据),当模块发生错误时,错误码会被存放到数据池中。模块处理完后,把数据池返回业务代码,业务代码判断是否需要截断下一步逻辑(数据池中是否有错误码)。工作原理如图所示。
经过以上规范化后,业务代码可以简化为json的表达形式,如代码所示。简化业务代码后,即可通过代码生成器把业务代码还原成Java代码。这样,即可减少重复代码的编写,又让业务代码更加清晰明了。
"接口列表"{
"接口一": {
"接口路径": "/xx/xx" ,
"请求方式": "POST" ,
"调用模块": [
{
"模块名":"检查必要参数",
"模块参数":{ //模块代码会自动识别数据池中是否有以下字段
"abc":"abs", //abc字段为必填
"bcd":"opt" //bcd字段为选填
}
},
{
"模块名":"数据库操作",
"模块参数":{
"control":"update", //更新操作
"query":"UPDATE t_blog SET state='pass' WHERE id='@id@'" //sql语句,其中@id@会替换成数据池中的id的值
}
],
},
"接口二":{
...
}
}