常用的项目架构方法
大部分开发对项目架构都不会陌生,有过几年开发经验的同学更是深有体会,在这里分享我曾使用过的3套项目架构,并且谈一谈其中的优劣。
一、MVC架构
MVC模式三要素:
- 视图 View:页面渲染、数据展示
- 模型 Model:业务逻辑、数据库操作
- 控制器 Controller:接收请求、视图跳转
流程图如下:
不过现在通常使用Spring作为开发框架,SpringMVC可以理解为一个MVC模式的实现,流程图如下:
MVC项目简易结构如下:
- model模块
com.demo.model
vo #页面数据对象
mybatis
config #mybatis相关配置
entity #实体类
mapper #mybatis接口
resources
mappers #mybatis xml文件
- service模块
com.demo.service #业务逻辑接口
impl # 业务逻辑类
- web模块
com.demo.web # 启动类
contrller # controller类
二、COLA架构
COLA 是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”。作者是CSDN博主张建飞(Frank),博客上详细的内容,在此就不介绍了。
说一下使用感受:概念清晰、层次分明、有点复杂,懒人用起来会比较费劲,适合有追求的团队
三、分层架构
这是《阿里巴巴Java开发手册》推荐的分层架构,也是我推荐使用的架构,特别适合微服务项目分层,架构图如下:
- 开放接口层:可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 http 接口;进行网关安 全控制、流量控制等。
- 终端显示层:各个端的模板渲染并执行显示的层。当前主要是 velocity 渲染,JS 渲染,JSP 渲染,移
动端展示等 - Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。
- Service 层:相对具体的业务逻辑服务层。
- Manager 层:通用业务处理层,它有如下特征:
1)对第三方平台封装的层,预处理返回结果及转化异常信息。
2)对 Service 层通用能力的下沉,如缓存方案、中间件通用处理。
3)与 DAO层交互,对多个 DAO 的组合复用。 - DAO 层:数据访问层,与底层 MySQL、Oracle、Hbase 等进行数据交互。
- 外部接口或第三方平台:包括其它部门 RPC 开放接口,基础平台,其它公司的 HTTP 接口。
分层架构简易目录如下:
- api模块
com.demo.api # RPC接口
model # RPC接口返回对象
- dao模块
com.demo.dao # RPC接口
do # 数据库实体类
mapper # mapper接口
vo # 页面视图实体
- manager模块
com.demo.manager
cache # 缓存
mq # 消息队列
oss # 对象存储
sms # 短信
email # 邮箱
- service模块
com.demo.service
impl # 业务逻辑类
- web模块
com.demo.web
controller # http接口
rpc # rpc接口类