← 返回目录

六、工程结构

第 21 / 27 卷作者:guanbao yang日期:

六、工程结构

(一) 应用分层

1.【推荐】根据业务架构实践,结合业界分层规范与流行技术框架分析,推荐分层结构如图所示,默认上层依赖于下层,箭头关系表示可直接依赖,如:开放 API层可以依赖于 Web 层(Controller 层),也可以

直接依赖于 Service 层,依此类推:

图 40-1
图 40-1

⚫

开放 API 层:可直接封装 Service 接口暴露成 RPC 接口;通过 Web 封装成 http 接口;网关控制层等。

⚫

终端显示层:各个端的模板渲染并执行显示的层。当前主要是 velocity 渲染,JS 渲染,JSP 渲染,移动端展示等。

⚫

Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。

⚫

Service 层:相对具体的业务逻辑服务层。

⚫

Manager 层:通用业务处理层,它有如下特征 1)对第三方平台封装的层,预处理返回结果及转化异常信息,适配上层接口。

2)对 Service 层通用能力的下沉,如缓存方案、中间件通用处理。

3)与 DAO 层交互,对多个 DAO 的组合复用。

⚫

DAO 层:数据访问层,与底层 MySQL、Oracle、Hbase、OceanBase等进行数据交互。

⚫

第三方服务:包括其它部门 RPC 服务接口,基础平台,其它公司的 HTTP 接口,如淘宝开放平台、支付宝付款服务、高德地图服务等。

⚫

外部数据接口:外部(应用)数据存储服务提供的接口,多见于数据迁移场景中。

2.【参考】(分层异常处理规约)在 DAO 层,产生的异常类型有很多,无法用细粒度的异常进行 catch,使用 catch(Exception e) 方式,并 throw new DAOException(e),不需要打印日志,因为日志在

Manager 或 Service 层一定需要捕获并打印到日志文件中去,如果同台服务器再打日志,浪费性能和存储。在 Service 层出现异常时,必须记录出错日志到磁盘,尽可能带上参数和上下文信息,相当于保护案

发现场。Manager 层与 Service 同机部署,日志方式与 DAO 层处理一致,如果是单独部署,则采用与 Service 一致的处理方式。Web 层绝不应该继续往上抛异常,因为已经处于顶层,如果意识到这个异常

将导致页面无法正常渲染,那么就应该直接跳转到友好错误页面,尽量加上友好的错误提示信息。开放接口层要将异常处理成错误码和错误信息方式返回。

3.【参考】分层领域模型规约:

⚫

DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。

全站分卷索引 · 27 卷
  1. 1一、编程规约
  2. 2(二) 常量定义
  3. 3(三) 代码格式
  4. 4(四) OOP规约
  5. 5(五) 日期时间
  6. 6(六) 集合处理
  7. 7(七) 并发处理
  8. 8(八) 控制语句
  9. 9(九) 注释规约
  10. 10(十) 前后端规约
  11. 11(十一) 其他
  12. 12二、异常日志
  13. 13(二) 异常处理
  14. 14(三) 日志规约
  15. 15三、单元测试
  16. 16四、安全规约
  17. 17五、MySQL数据库
  18. 18(二) 索引规约
  19. 19(三) SQL语句
  20. 20(四) ORM映射
  21. 21六、工程结构
  22. 22(二) 二方库依赖
  23. 23(三) 服务器
  24. 24七、设计规约
  25. 25附1:版本历史
  26. 26附2:专有名词解释
  27. 27附3:错误码列表