第13章 - 层次式架构设计理论与实践

23 阅读10分钟

核心思想:将系统组成为一种层次结构,每一层为上一层服务,并作为下层客户。

一、层次式体系结构概述

image.png

设计时要注意以下两点:

  1. 污水池反模式(Architecture sinkhole anti-pattern)
  2. 考虑分层架构可能会让你的应用变得庞大

二、 表现层框架设计

2-1 表现层设计模式

2-1-1 MVC 模式

image.png   使用 MVC 模式来设计表现层,可以有以下的优点。

  1. 允许多种用户界面的扩展。在 MVC模式中,视图与模型没有必然的联系,都是通过控制器发生关系,这样如果要增加新类型的用户界面,只需要改动相应的视图和控制器即可,而模型则无须发生改动。
  2. 易于维护。控制器和视图可以随着模型的扩展而进行相应的扩展,只要保持一种公共的接口,控制器和视图的旧版本也可以继续使用。
  3. 功能强大的用户界面。用户界面与模型方法调用组合起来,使程序的使用更清晰,可将友好的界面发布给用户。

2-1-2 MVP(Model-View-Presenter) 模式

image.png

使用 MVP 模式来设计表现层,可以有以下的优点

  1. 模型与视图完全分离,可以修改视图而不影响模型。
  2. 可以更高效地使用模型,因为所有的交互都发生在一个地方--Presenter 内部。
  3. 可以将一个Presenter 用于多个视图,而不需要改变 Presenter 的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
  4. 如果把逻辑放在 Presenter 中,就可以脱离用户接口来测试这些逻辑(单元测试)。

2-1-3 MVVM 模式

image.png

2-2 使用XML设计表现层,统一Web Form与 Windows Form的外观

XML标记用于定义数据本身的结构和数据类型

2-3 表现层中UIP设计思想

  • UIP(Userlnterface Process Application Block)是微软社区开发的众多 Application Block 中的其中之一,它是开源的。
  • UIP 提供了一个扩展的框架,用于简化用户界面与商业逻辑代码的分离的方法,可以用它来写复杂的用户界面导航和工作流处理,并且它能够复用在不同的场景并可以随着应用的增加而进行扩展。  

2-4 表现层动态生成设计思想

image.png

三 中间层(业务逻辑层)框架设计

3-1 业务逻辑层组件设计

(一)分为接口和实现类

以DAO组件为基础

3-2 业务逻辑层工作流设计

image.png

用工作流的思想组织业务逻辑, 优点是:将应用逻辑与过程逻辑分离,在不修改具体功能的情况下,通过修改过程模型改变系统功能,完成对生产经营部分过程或全过程的集成管理,可有效地把人、信息和应用工具合理地组织在一起,发挥系统的最大效能。

3-3 业务逻辑层实体设计

业务逻辑层实体具有以下特点:

  1. 业务逻辑层实体提供对业务数据及相关功能(在某些设计中)的状态编程访问。
  2. 业务逻辑层实体可以使用具有复杂架构的数据来构建,这种数据通常来自数据库中的多个相关表。
  3. 业务逻辑层实体数据可以作为业务过程的部分 I/0 参数传递。
  4. 业务逻辑层实体可以是可序列化的,以保持它们的当前状态。例如,应用程序可能需要在本地磁盘、桌面数据库(如果应用程序脱机工作)或消息队列消息中存储实体数据。
  5. 业务逻辑层实体不直接访问数据库,全部数据库访问都是由相关联的数据访问逻辑组件提供的。
  6. 业务逻辑层实体不启动任何类型的事务处理,事务处理由使用业务逻辑层实体的应用程序或业务过程来启动。

3-4 业务逻辑层框架

是实现系统功能的核心组件。采用容器的形式,便于系统功能的开发、代码重用和管理

image.png

四、 数据访问层设计(DAL,Data Access Layer)- 数据持久层

 数据访问层的作用:使得在应用程序设计时,不会因为数据库种类的不同而受到影响,尽量做到与数据库无关。

4-1 5中数据访问模式

4-1-1 在线访问

这种数据访问模式会占用一个数据库连接,读取数据,每个数据库操作都会通过这个连接不断的与后台的数据源进行交互。

4-1-2 DataAccess Object (DAO)

标准J2EE 设计模式之一,开发人员常常用这种模式将底层数据访问操作与高层业务逻辑分离开。

一个典型的 DAO 实现通常有以下组件。 (1)一个 DAO 工厂类。 (2)一个 DAO 接口。 (3)一个实现了 DAO 接口的具体类。 (4)数据传输对象。

4-1-3 Data Transfer Object

经典EJB设计模式之一。

4-1-4 离线数据模式

4-1-5 对象/关系映射(object/Relation Mapping,O/R Mapping)

4-2 工厂模式在数据访问层应用

(一)工厂设计模式定义

定义了创建对象的接口,允许子类决定实例化哪个类,而且允许请求者无需知道要被实例化的特定类,这样可以在不修改代码的情况下引入新类.

(二)优点

1.没有了将应用程序类绑定到代码中的要求,可以使用任何实现了接口的类;

2.允许子类提供对象的扩展版本

(三)应用场景

1.类不能预料它必须创建的对象的类

2.类希望其子类指定它要创建的对象

(四)解释说明工厂模式在数据访问层中的应用

1.定义了统一的操纵数据库的接口,然后根据数据库的不同,由类工厂来决定实例化哪个类。

2.在具体类中实现特定的数据库访问类。

3.实现由客户端指定或根据配置文件来访问不同的数据库,从而实现应用程序与数据库无关。

4-3 ORM、Hibernate 与CMP2.0 设计思想

(一)Hibernate 架构(2023年考试)

image.png

4-4 灵活运用XML Schema

XML Schema用来描述 XML 文档合法结构、内容和限制

XML Schema 提供了创建 XML 文档必要的框架,详细说明了一个 XML 文档的不同元素和 属性的有效结构、限制和数据类型。

XML Schema 规范由如下三部分组成。

(1)XML Schema Part0:Primer。一个非标准化的文档,提供了 XML Schema 的一个简单可读的描述,目的是快速地理解如何利用 XML Schema 语言创建一个 Schema(框架)。

(2)XML Schema Parl: Structures。这一部分详细说明了 XML Schema 定义语言,这个语言为描述 XML 1.0 文档的结构和内容限制提供了便利,包括开发了XML Namespace(命名空间)的使用。

(3)XML Schema Part2:Datatypes。这一部分定义了可用于 XML Schema 和其他 XML 规范中的定义数据类型的方法。这个数据类型语言,本身由XML10自描述,提供了说明元素和属性数据类型的 XML 1.0 文档类型定义(DTDS)的一个超集。这部分提出了标准的数据类型内容集合,其中讲述了目的、需求、范围和术语。XML Schema与 DTD 相比,有其独特的特点,提供了丰富的数据类型,实现了继承和复用,与命名空间紧密联系,易于使用。

4-5 事务处理设计

事务必须服从ACID原则:ACID是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、和持久性(Durability)的缩写。

J2EE应用服务器支持JDBC事务、JTA(Java Transaction API)事务和容器管理事务。不要在程序中同时使用上述三种事务类型,事务要在经可能短的时间内完成,不要在不同方法中实现事务的使用。

(一)JavaBean 中使用JDBC方式进行事务处理

(二)SessionBean中的JTA事务

4-6 连接对象管理设计

五 数据架构规划与设计

5-1 数据库设计与类的设计融合

5-2 数据库设计与XML设计融合

XML文档的存储方式有两种:基于文件的存储方式和数据库存储方式

(一)基于文件的存储方式。特点是:

1.无法获取XML文档中的结构化数据;

2.通过附加所有可以定位具体某些关键字XML文档,一旦关键字不确定,将很难定位。

3.查询时,只能以原始文档的形式返回,即不能获取文档内部的信息

4.文件管理存在容量大、管理难得缺点

(二)数据库存储方式。

优点:管理方便、存储占用空间小、检索速度快、修改效率高、安全性好

特点:

1.能够管理结构化和半结构化数据

2.具有管理和控制整个文档集合本身的能力

3.可以对文档内部的数据进行操作

4.具有数据库技术的特性

5.管理方便、易于操作

 

六 物联网层次架构设计

物联网可以分为三个层次

  • 底层是用来感知数据的感知层,即利用传感器、二维码、RFID等设备随时随地获取物体的信息。
  • 第二层是数据传输处理的网络层,即通过各种传感网络与互联网的融合,将对象当前的信息实时准确地传递出去。
  • 第三层则是与行业需求结合的应用层,即通过智能计算、云计算等将对象进行智能化控制。

七 层次式架构案例分析****

7-1 电子商务

image.png  

7-2 基于物联网的电子小票服务系统

7-3 3层C/S架构

三层C/S体系结构包括表示层、功能层和数据层三个部分。

  • 表示层作为用户接口,用于输入和输出数据。
  • 功能层是应用的核心,负责具体业务处理逻辑。
  • 数据层是数据库管理系统,负责管理数据读写。这种架构解决了应用程序复杂性和开发效率之间的矛盾,使得不同层的构建相互独立,接口简洁,适合于复杂事务处理。

八 层次化架构风险

层次化架构具有低耦合、依赖关系简单等特点,上层只能依赖于下层,底层错误将导致整个系统无法运行,而上层错误只会影响错误的这一部分。其次,系统风险威胁利用了脆弱性而引起,而脆弱性是系统内部的薄弱点。