13.3 中间层架构设计 ★★★☆☆
13.3.1 业务逻辑层组件设计
业务逻辑组件分为接口和实现类两个部分。
接口用于定义业务逻辑组件,定义业务逻辑组件必须实现的方法是整个系统运行的核心。 通常按模块来设计业务逻辑组件,每个模块设计一个业务逻辑组件,并且每个业务逻辑组件以多个DAO(Data Access Object) 组件作为基础,从而实现对外提供系统的业务逻辑服务。
1.业务逻辑组件的实现类
业务逻辑组件以DAO组件为基础,需要为业务逻辑组件的实现类提供对应的 setter方法。
2.业务逻辑组件的配置
DAO 组件初始化是由 Spring 的反向控制 (Inverse of Control,IoC) 或者称为依赖注入 (Dependency Injection, DI) 机制完成的。需要在applicationContext.xml里面配置 FacadeManager 组件。
13.3.2 业务逻辑层工作流设计
工作流管理联盟 (Workflow Management Coalition) 将工作流定义为:业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协调工作以达到业务的整体目标。工作流参考模型
(1)interface 1: 过程定义导入/导出接口。特点:转换格式和 API调用,从而支持过程定义信息间的互相转换。也支持已完成的过程定义或过程定义的一部分之间的互相转换。早期标准是WPDL , 后来发展为XPDL。
(2)interface 2: 客户端应用程序接口。通过这个接口工作流机可以与任务表处理器交互,代表用户资源来组织任务。然后由任务表处理器负责,从任务表中选择、推进任务项。由任务表处理器或者终端用户来控制应用工具的活动。
(3)interface 3: 应用程序调用接口。允许工作流机直接激活一个应用工具,来执行一个活动。典型的是调用以后台服务为主的应用程序,没有用户接口。当执行活动要用到的工具,需要与终端用户交互,通常是使用客户端应用程序接口来调用那个工具,这样可以为用户安排任务时间表提供更多的灵活性。
(4)interface 4: 工作流机协作接口。其目标是定义相关标准,以使不同开发商的工作流系 统产品相互间能够进行无缝的任务项传递。WFMC定义了4个协同工作模型,包含多种协同工作能力级别。
(5)interface 5: 管理和监视接口。提供的功能包括用户管理、角色管理、审查管理、资源控制、过程管理和过程状态处理器等。
用工作流的思想组织业务逻辑,优点是:将应用逻辑与过程逻辑分离,在不修改具体功能的情况下,通过修改过程模型改变系统功能,完成对生产经营部分过程或全过程的集成管理,可有效地把人、信息和应用工具合理地组织在一起,发挥系统的最大效能。
13.3.3 业务逻辑层实体设计
业务逻辑层实体具有以下特点:
提供对业务数据及相关功能(在某些设计 中)的状态编程访问。
可以使用具有复杂架构的数据来构建,数据通常来自数据库中的多个相关表。
数据可以作为业务过程的部分 I/O 参数传递。
可以是可序列化的,以保持它们的当前状态。例如,应用程序可能需要在本地磁盘、桌面数据库(如果应用程序脱机工作)或消息队列消息中存储实体数据。
不直接访问数据库,全部数据库访问都是由相关联的数据访问逻辑组件提供的。不启动任何类型的事务处理,事务处理由使用业务逻辑层实体的应用程序或业务过程来启动。
在应用程序中表示业务逻辑层实体的方法:XML、 通用DataSet、 有类型的 DataSet等。
将业务逻辑层实体表示为XML 的优点
(1)标准支持。XML是 World Wide Web Consortium(W3C) 的标准数据表示格式。
(2)灵活性。XML 能够表示信息的层次结构和集合。
(3)互操作性。在所有平台上, XML都是与外部各方及贸易伙伴交换信息的理想选择。
通用 DataSet 是DataSet类的实例,DataSet 对象包含一个或多个 DataTable对象,用于表示数据访问逻辑组件从数据库检索到的信息。
将业务逻辑层实体表示为通用 DataSet 的优点
(1)灵活性。DataSet可以包含数据的集合,能够表示复杂的数据关系。
(2)序列化。在层间传递时, DataSet本身支持序列化。
(3)数据绑定。可以把DataSet绑定到ASP.NET应用程序和Windows 窗体应用程序的任意用户界面控件。
(4)排序与过滤。可以使用 DataView对象排序和过滤DataSet。应用程序可以为同一个 DataSet 创建多个DataView对象,以便用不同方式查看数据。
(5) 与 XML 的互换性。可以用XML格式读写DataSet。
(6)开放式并发。在更新数据时,可以配合使用数据适配器与DataSet 方便地执行开放式并发检查。
(7)可扩展性。如果修改了数据库架构,则适当情况下数据访问逻辑组件中的方法可以创建包含修改后的DataTable 和 DataRelation对象的DataSet。
有类型的DataSet 是包含具有严格类型的方法、 属性和类型定义以公开DataSet中的数据和元数据的类。
将业务逻辑层实体表示为有类型的 DataSet 的优点。
(1)代码易读。要访问有类型的DataSet 中的表和列,可以使用有类型的方法和属性。
(2)有类型的方法和属性的提供使得使用有类型的DataSet 比使用通用 DataSet更方便。使用有类型的DataSet 时, IntelliSense将可用。
(3)编译时类型检查,无效的表名称和列名称将在编译时而不是在运行时检测。
13.3.4 业务逻辑层框架
业务框架位于系统架构的中间层,是实现系统功能的核心组件。采用容器的形式,便于系统功能的开发、代码重用和管理。
业务层采用业务容器 (Business Container) 的方式,大大降低业务层和相邻各层的耦合,在业务容器中,业务逻辑是按照 Domain Model—Service—Control 思想来实现的。
(1)Domain Model 是领域层业务对象,它仅仅包含业务相关的属性。
(2)Service 是业务过程实现的组成部分,是应用程序的不同功能单元,通过在这些服务之间定义良好的接口和契约联系起来。
(3)Control 服务控制器,是服务之间的纽带,用来实现不同服务之间的切换。
三者互动关系
(1)Service 的运行会依赖于 Domain Model的状态,反之, Service也会根据业务规则改变 Domain Model 的状态。
(2)Control作为服务控制器,根据 Domain Model 的状态和相关参数决定 Service 之间的执行顺序及相互关系Domain Model—Service—Control 的互动关系