You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
p3c/p3c-gitbook/工程结构/应用分层.md

25 lines
2.9 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 六、工程结构
## (一) 应用分层
1. 【推荐】图中默认上层依赖于下层箭头关系表示可直接依赖开放接口层可以依赖于Web层也可以直接依赖于Service层依此类推
![应用分层](../images/alibabaLevel.png)
- 开放接口层可直接封装Service方法暴露成RPC接口通过Web封装成http接口进行网关安全控制、流量控制等。
- 终端显示层各个端的模板渲染并执行显示的层。当前主要是velocity渲染JS渲染JSP渲染移动端展示等。
- Web层主要是对访问控制进行转发各类基本参数校验或者不复用的业务简单处理等。
- Service层相对具体的业务逻辑服务层。
- Manager层通用业务处理层它有如下特征
<br>1 对第三方平台封装的层,预处理返回结果及转化异常信息;
<br>2 对Service层通用能力的下沉如缓存方案、中间件通用处理
<br>3 与DAO层交互对多个DAO的组合复用。
- DAO层数据访问层与底层MySQL、Oracle、Hbase等进行数据交互。
- 外部接口或第三方平台包括其它部门RPC开放接口基础平台其它公司的HTTP接口。
2. 【参考】分层异常处理规约在DAO层产生的异常类型有很多无法用细粒度的异常进行catch使用catch(Exception e)方式并throw new DAOException(e)不需要打印日志因为日志在Manager/Service层一定需要捕获并打印到日志文件中去如果同台服务器再打日志浪费性能和存储。在Service层出现异常时必须记录出错日志到磁盘尽可能带上参数信息相当于保护案发现场。如果Manager层与Service同机部署日志方式与DAO层处理一致如果是单独部署则采用与Service一致的处理方式。Web层绝不应该继续往上抛异常因为已经处于顶层如果意识到这个异常将导致页面无法正常渲染那么就应该跳转到友好错误页面加上用户容易理解的错误提示信息。开放接口层要将异常处理成错误码和错误信息方式返回。
3. 【参考】分层领域模型规约:
- DOData Object与数据库表结构一一对应通过DAO层向上传输数据源对象。
- DTOData Transfer Object数据传输对象Service或Manager向外传输的对象。
- BOBusiness Object业务对象。由Service层输出的封装业务逻辑的对象。
- AOApplication Object应用对象。在Web层与Service层之间抽象的复用对象模型极为贴近展示层复用度不高。
- VOView Object显示层对象通常是Web向模板渲染引擎层传输的对象。
- Query数据查询对象各层接收上层的查询请求。注意超过2个参数的查询封装禁止使用Map类来传输。