软考-系统架构设计师-第十六章 层次式架构设计理论与实践

article/2025/9/6 22:02:56

层次式架构设计理论与实践

      • 16.2 表现层框架设计
      • 16.3 中间层框架设计
      • 16.4 数据访问层设计
      • 16.5 数据架构规划与设计
      • 16.6 物联网层次架构设计

在这里插入图片描述

  1. 软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。层次式
    体系结构设计是一种常见的架构设计方法,它将系统组成为一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,
    内部的层接口只对相邻的层可见。层次式体系结构的每一层最多只影响两层,同时只要给相邻层提供相同的接口,也允许每层用不同的方法实现,这种方式也为
    软件重用提供了强大的支持。

2.层次式应用的组成
大部分的应用会分成表现层(或称为展示层)、中间层(或称为业务层)、访问层(或称为持久层)和数据层
在这里插入图片描述

3.特点与注意事项
采用分层架构设计的一个特点就是关注点分离。每层中的组件只负责本层的逻辑,组件的划分也很容易明确组件的角色和职责,比较容易开发、测试、管理和维护。
层次式体系结构是一个可靠的通用的架构,但是设计时要注意以下两点
1)容易成为污水池反模式(Architecture Sinkhole Anti-patter):请求流简单地穿过几个层,每层里面基本没有做任何业务逻辑,或者做了很少的业务逻辑。
比如一些 Java EE 例子,业务逻辑层只是简单地调用了持久层的接口,本身没有什么业务逻辑。
2)分层架构可能会让应用变得庞大。

16.2 表现层框架设计

  1. MVC(Model-View-Controller)模式
    MVC 是一种软件设计模式。MVC 把一个应用的输入、处理、输出流程按照视图、控制、模型的方式进行分离,形成了控制器、模型、视图 3
    个核心模块。其中:
    (1)控制器(Controller):接受用户的输入,并调用模型和视图去完成用户的需求。
    (2)模型(Model):应用程序的主体部分,表示业务数据和业务逻辑。
    (3)视图(View):用户看到并与之交流的界面。

三者协作关系如下图
在这里插入图片描述

使用 MVC 模式来设计表现层,可以有以下的优点:
(1)允许多种用户界面的扩展。
(2)易于维护。
(3)易于构建功能强大的用户界面。
(4)增加应用的可拓展性、强壮性、灵活性。

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

在 MVP 模式中 Model 提供数据,View 负责显示,Controller/Presenter 负责逻辑的处理。MVP不仅仅避免了 View 和 Model 之间的耦合,还进一步
降低了 Presenter 对 View 的依赖。MVP 设计模式如图
在这里插入图片描述

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

3.MVVM(Model-View-View Model)模式
MVVM 和 MVC、MVP 类似,主要目的都是为了实现视图和模型的分离。不同的是 MVVM 中,View 与 Model 的交互通过 ViewModel 来实现,也就是
View
和 Model 不能直接通信,两者的通信只能通过 ViewModel 来实现。ViewModel 是 MVVM 的核心,通过 DataBinding 实现 View 与 Model
之间的
双向绑定,其内容包括数据状态处理、数据绑定及数据转换。MVVM 流程设计模式如图

在这里插入图片描述

16.3 中间层框架设计

1.业务逻辑层组件设计
业务逻辑层组件分为接口和实现类两个部分。接口用于定义业务逻辑组件,定义业务逻辑组件必须实现的方法是整个系统运行的核心。通常按模块来设计业务逻辑组件,
每个模块设计一个业务逻辑组件,并且每个业务逻辑组件以多个数据访问对象(Data Access Object,DAO)组件作为基础,从而实现对外提供系统的业务逻辑服务。

2.业务逻辑层工作流设计
工作流管理联盟(Workflow Management Coalition,WFMC)将工作流定义为:业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程
规则流转,实现组织成员间的协调工作以达到业务的整体目标。工作流参考模型如图
在这里插入图片描述

3.业务逻辑层实体设计

逻辑层实体提供对业务数据及相关功能(在某些设计中)的状态编程访问。业务逻辑层实体可以使用具有复杂架构的数据来构建,这种数据通常来自数据库中的多个
相关表。业务逻辑层实体数据可以作为业务过程的部分 I/O 参数传递。业务逻辑层实体是可序列化的,以保持它们的当前状态。

4.业务逻辑层框架
业务逻辑框架位于系统架构的中间层,是实现系统功能的核心组件。采用容器的形式,便于系统功能的开发、代码重用和管理。在业务容器中,业务逻辑是按照
Domain Model-Service-Control 思想来实现的。其中:

1)Domain Model 是仅仅包含业务相关的属性的领域层业务对象。
2)Service 是业务过程实现的组成部分,是应用程序的不同功能单元,通过在这些服务之间定义良好的接口和契约联系起来。
3)Control 服务控制器,是服务之间的纽带,不同服务之间的切换就是通过它来实现的

16.4 数据访问层设计

1.数据访问模式
数据访问模式有 5 种,分别是:在线访问、Data Access Object、Data Transfer Object、离线数据模式、对象/关系映射(Object/Relation
Mapping)。
(1)在线访问:最常用的方式。访问占用一个数据库连接,读取数据,每个数据库操作都会通过这个连接不断地与后台的数据源进行交互。
(2)Data Access Object:DAO 是标准 J2EE 设计模式,这种方式将底层数据访问操作与高层业务逻辑分离开。一个典型的 DAO 实现通常会有一个
DAO
工厂类、一个 DAO 接口、一个实现了DAO 接口的具体类、数据传输对象。
(3)Data Transfer Object:DTO 属于 EJB 设计模式之一。DTO 是一组对象或容器,需要跨越不同的进程或是网络的边界来传输数据
(4)离线数据模式:离线数据模式是以数据为中心,数据从数据源获取之后,将按照某种预定义的结构存放在系统中,成为应用的中心。这种方式对数据的各种操作
独立于各种与后台数据源 之间的连接或是事务
(5)对象/关系映射:这种方式利用工具或平台能够帮助将应用程序中的数据转换成关系型数据库中的记录;或是将关系数据库中的记录转换成应用程序中代码便于操作的对象。

2.工厂模式在数据访问层的应用
工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。这里可能会处理对多种数据库的操作,因此,需要
首先定义一个操纵数据库的接口,然后根据数据库的不同,由类工厂决定实例化哪个类。

3.ORM,Hibernate 与 CMP2.0 设计思想
ORM(Object-Relation Mapping)在关系型数据库和对象之间作一个映射,这样,在具体操纵数据库时,就不需要再去和复杂的 SQL
语句打交道,只要像平时
操作对象一样操作即可。Hibernate 是一个功能强大,可以有效地进行数据库数据到业务对象的 O/R 映射方案。Hibernate 推动了基于普通
Java 对象模型,
用于映射底层数据结构的持久对象的开发。

4.XML Schema
XML Schema 用来描述 XML 文档合法结构、内容和限制,提供丰富的数据类型。

5.事务处理设计
事务必须服 从 ISO/IEC 所制定的 ACID 原则。 ACID 是原子性( Atomicity)、一致性 (Consistency)、隔离性(Isolation)和持久性(Durability)
的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务
执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。

6.连接对象管理设计
建立一个数据库连接池,提供一套高效的连接分配、使用策略,保证了数据库连接的有效复用。

16.5 数据架构规划与设计

(1)数据库设计与类的设计融合。对类和类之间关系的正确识别是数据模型的关键所在。好模型的目标是将工程项目整个生存期内的花费减至最小,同时也会考虑到
随时间的推移系统将可能发生的变化,因而设计时也要考虑能适应这些变化。

(2)数据库设计与 XML 设计融合。XML 文档的存储方式有两种:基于文件的存储方式和数据库存储方式。

16.6 物联网层次架构设计

(1)感知层:用于识别物体、采集信息。感知层包括二维码标签和识读器、RFID 标签和读写器、摄像头、GPS、传感器、M2M 终端、传感器网关等,主要功能是
识别对象、采集信息,与人体结构中皮肤和五官的作用类似。

(2)网络层:用于传递信息和处理信息。网络层包括通信网与互联网的融合网络、网络管理中心、信息中心和智能处理中心等。网络层将感知层获取的信息进行传递和
处理,类似于人体结构 中的神经中枢和大脑。

(3)应用层:实现广泛智能化。应用层是物联网与行业专业技术的深度融合,结合行业需求实现行业智能化,这类似于人们的社会分工。


http://www.hkcw.cn/article/qDbbZlmilg.shtml

相关文章

ZigBee 协议:开启物联网低功耗通信新时代

在物联网蓬勃发展的时代,无线通信技术犹如连接万物的桥梁,而 ZigBee 协议以其独特的优势,在众多通信协议中脱颖而出,成为构建低功耗、可靠物联网网络的关键技术之一。 一、ZigBee 协议的起源与发展 ZigBee 这个名字充满了自然的灵…

计算机网络常见体系结构、分层必要性、分层设计思想以及专用术语介绍

计算机网络体系结构 从本此开始,我们就要开始介绍有关计算机网络体系结构的知识了。内容包括: 常见的计算机网络体系结构 计算机网络体系结构分层的必要性 计算机网络体系结构的设计思想 举例说明及专用术语 计算机网络体系结构是计算机网络课程中…

React---day4

3、React脚手架 生成的脚手架的目录结构 什么是PWA PWA全称Progressive Web App,即渐进式WEB应用;一个 PWA 应用首先是一个网页, 可以通过 Web 技术编写出一个网页应用;随后添加上 App Manifest 和 Service Worker 来实现 PWA 的安装和离线…

初识高通平台收货总结(比较杂)

1、CameraHAL3数据流向 CamraHAL3数据流向图: Camera数据从sensor出来,首先会经过IFE,然后分预览/视频和拍照2种情况。 如果是预览或者录像,是先经过IPE处理,最后输出到显示。 如果是拍照,则是先经过BSP处理&#x…

小牛电动NLT Citi 2025 登场:重塑电自标准,媲美电摩性能

在电动车的世界里,小牛电动一直是创新与品质的代名词。2025 年,小牛 NLT Citi 震撼登场,重新定义了电动自行车的标准,带来前所未有的电摩级体验。 经典大牛电自版全面升级,NLT Citi 完美继承了小牛智能超满配的实力基…

下载jdk教程

首先登录Oracle账号,感谢一下老哥的账号分享 Oracle账号分享_oracle共享账号-CSDN博客 如下有三个版本的jdk下载 推荐下载中间那个 你可以根据自己的需求选择合适的下载方式,下面是每个选项的简要说明: 1. x64 Compressed Archiv…

中国头盔护具展在杭州举办合适

2024年,浙江的人均GDP超过2.5万美元,人均收入和人均消费更是全国第一;省外人口实际净流入达45.4万人,居各省份第一。杭州是浙江省会是中国第八座“两万亿之城”之一‌,城区总人口突破千万,实现从特大城市到…

SpringCloud

微服务 一:MP补充: 1.1.注解: 1.2.配置: 1.3.条件构造器: 1.4.自定义sql: 在有些业务中,需要我们手动来编写部分sql语句,但是在开发业务中,sql语句是不能直接暴露在业…

基于大数据的个性化购房推荐系统设计与实现(源码+定制+开发)面向房产电商的智能购房推荐与数据可视化系统 基于Spark与Hive的房源数据挖掘与推荐系统设计

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

GPU层次结构(Nvidia和Apple M芯片,从硬件到pytorch)

这里写目录标题 0、驱动pytorch环境安装验证1.window环境2.Mac Apple M芯片环境 1、Nvidia显卡驱动、CUDA、cuDNN关系汇总1**1. Nvidia显卡驱动(Graphics Driver)****2. CUDA(Compute Unified Device Architecture)****3. cuDNN&a…

Ubuntu 22.04 上安装 PostgreSQL(使用官方 APT 源)

Ubuntu 22.04 上安装 PostgreSQL(使用官方 APT 源) 步骤 1:更新系统 sudo apt update sudo apt upgrade -y步骤 2:添加 PostgreSQL 官方仓库 # 安装仓库管理工具 sudo apt install wget ca-certificates gnupg lsb-release -y#…

游戏盾在非游戏行业的应用实践与价值分析

游戏盾最初是为应对游戏行业的高并发、复杂协议攻击(如DDoS、CC攻击)而设计的网络安全解决方案,但随着技术演进,其分布式架构、智能调度和协议解析能力逐渐被扩展至其他高流量、高安全需求的非游戏领域。本文将结合实际案例&#…

R语言基础| 数据基本管理与操作

上次教程我们已经和大家一起完成了创建数据集的学习&#xff0c;在本次内容里我们将进一步对数据进行管理与操作。 示例展示&#xff08;本节均用它学习&#xff09; leadership <- data.frame(managerc(1,2,3,4,5),datec("10/24/08","10/28/08",&quo…

腾讯云国际站性能调优

全球化业务扩张中&#xff0c;云端性能直接决定用户体验与商业成败。腾讯云国际站通过资源适配、网络优化与存储革新&#xff0c;为企业提供全链路调优方案。 ​​资源精准适配​​ 实例选型需与业务场景深度耦合&#xff0c;计算优化型实例加速AI训练效率3倍&#xff0c;内存…

深度学习核心网络架构详解(续):从 Transformers 到生成模型

在上一篇文章中&#xff0c;我们详细介绍了卷积神经网络 (CNN)、循环神经网络 (RNN) 及其变体 LSTM 和 GRU。本文将继续探讨其他必须掌握的深度学习网络架构&#xff0c;包括 Transformers、生成对抗网络 (GAN)、自编码器 (Autoencoder) 以及强化学习基础。我们将深入讲解这些技…

HTML5 Canvas 星空战机游戏开发全解析

HTML5 Canvas 星空战机游戏开发全解析 一、游戏介绍 这是一款基于HTML5 Canvas开发的2D射击游戏&#xff0c;具有以下特色功能&#xff1a; &#x1f680; 纯代码绘制的星空动态背景✈️ 三种不同特性的敌人类型&#x1f3ae; 键盘控制的玩家战机&#x1f4ca; 完整的分数统…

oracle19C新特性自动索引优化测试

创建用户&#xff0c;表空间 alter session set containerpdbprod5;Session altered.SQL> create tablespace test_data datafile /u01/app/oracle/oradata/PRODCDB/PDBPROD5/test_data01.dbf size 100m autoextend on;Tablespace created.SQL> create tablespace test…

64、【OS】【Nuttx】任务休眠与唤醒:clock_nanosleep

背景 之前的 blog 63、【OS】【Nuttx】任务休眠与唤醒&#xff1a;sleep 分析了任务休眠中的 sleep 函数&#xff0c;下面继续来分析下 sleep 函数中的核心功能 clock_nanosleep clock_nanosleep usleep 上篇 blog 分析了 sleep 函数&#xff0c;其核心功能封装到了 clock_…