如何开展软件架构之什么是业务逻辑层
在软件架构领域中,有一种很流行的分层方式,即三层架构,分为表现层,业务逻辑层,数据访问层。甚至在一些设计中,进一步将业务逻辑层再细分为应用服务层与业务服务层。
三层架构分层如下图1所示:
图1
很明显,以上三层架构是按逻辑分层,其中,
表现层:职责是负责接收用户数据,并展示处理结果,如软件中的各种窗口,页面等。
数据访问层:职责是负责封装数据文件(如数据库,文件等)的访问细节
业务逻辑层:职责是啥呢?
那么什么是业务逻辑层呢?一开始接触三层架构时,我很迷茫。翻看大多数的三层架构demo,业务逻辑层似乎就只是对数据访问层的简单委托调用而己。那什么是业务逻辑层呢?
其实要回答这个问题,应该从三层架构分层的由来说起,为什么要将软件分成三层。
首先,软件都是为某个领域的特定业务而服务,接收用户输入数据,以业务需求为规则对数据进行处理。简而言之,软件就是为了业务而生,其内部的所有逻辑均可认为是业务逻辑,所以在架构分层时,自然而然的分层方式是为二层架构,如下图2所示:
图2
表现层:职责是负责接收用户数据,并展示处理结果,如软件中的各种窗口,页面等。
业务逻辑层:职责是负责将接收的用户数据以特定的业务规则处理
然而在业务逻辑层中由于有大量的数据访问操作,特别时,如果数据是存储在数据库中的话,业务逻辑层中将遍历各种Sql语句的构造,执行等操作,不论是从通用性考虑还是从个人工作技能考虑,都有必要将数据访问操作从业务逻辑层中分离出来,应而三层架构由此诞生了。
那么业务逻辑层是什么就清晰了,其职责就是将接收的用户数据以特定的业务规则处理,主要包括以下三个部门:
业务实体:业务中各种参与的实体,如在考勤业务中,有打卡员工,打卡时间,打卡机,老板等
业务规则:业务的运行规则,业务实体按规则进行动作,如员工8:30分前未打卡要扣工资等。
业务完整性约束:业务规则与业务实体的约束,如不能代人打卡等。
在软件开发过程中,业务规则由工作流来承载,业务实体可能被部署在数据库或内存中。