分层应用架构:子层层次结构与数据模型
分层架构通过将功能划分为隔离的层来构建应用:门面层用于外部访问,逻辑层处理业务规则,持久化层负责数据存储。每层进一步细分为子层——门面、逻辑和数据访问子层,实现层间单向交互和模型间双向数据交换。
单层应用的核心组件
单层应用整合了三大关键功能组:
- 分层功能:隔离的层,层与层、子层之间采用单向交互。
- 横切功能:所有层可共享的机制,如日志记录或安全控制。
- 数据流功能:数据传输操作,包括:
- 数据映射:在不同数据模型间转换。
- 数据绑定:将数据与用户界面链接。
- 数据序列化:通过数据传输通道与外部系统交换。
层间交互遵循严格层次:相邻层单向交换数据,数据模型间双向通信。应用通过应用输入接口与外部消费者(数据消费者/生产者)连接,通过应用输出接口与外部数据源(本地或远程)交互。
本地数据源包括文件、USB/COM/LPT端口。远程源涵盖数据库、FTP、LDAP、Web服务和消息代理。
层与子层结构
每层包含功能及其关联数据模型。子层包括:
- 门面子层:外部API(公共方法)。
- 逻辑子层:内部层逻辑。
- 数据访问子层:访问外部源。
交互示例:
- 门面层:UI事件处理器或API端点。
- 逻辑层:协调业务逻辑(应用逻辑)。
- 持久化层:数据访问对象(DAO)。
门面层的逻辑子层生成UI内容(如ASP.NET MVC中的视图模板)和验证器(如UniqueValueValidator通过数据访问子层查询数据库)。
逻辑层的逻辑子层实现领域逻辑,与持久化层交互获取参考数据或执行递归算法。
外部接口与应用边界
- 应用上边界:通过输入接口(可视表单、服务器端套接字、定时器)通往外部消费者。
- 应用下边界:通过输出接口(套接字、数据库驱动)通往数据源。
门面/逻辑层的数据访问:
- 直接访问本地源。
- 通过输出接口访问远程源。
- 通过持久化层访问数据库。
持久化层专注于存储和管理持久化数据。
架构示例
结构图展示了在Web服务、报表查看器和ASP.NET MVC中的应用。
在报表查看器中:
- 门面子层:包含报表查看组件的可视表单。
- 逻辑子层:报表生成器,使用模板(报表模板)和数据访问子层的数据。
- 数据访问子层:向持久化层查询报表数据。
多层架构扩展单层:每个层是一个分层应用,涵盖客户端-服务器、事件驱动、管道与过滤器、SOA和微服务。
关键要点
- 分层(门面、逻辑、持久化)确保隔离性和可扩展性。
- 子层(门面、逻辑、数据访问)标准化API和逻辑。
- 层间单向交互最小化依赖循环。
- 数据流(映射、绑定、序列化)简化数据传输。
- 明确的应用边界(输入/输出接口)分离内部与外部上下文。
— Editorial Team
暂无评论。