系统架构师考试学习笔记第四篇——架构设计实践知识(16)层次式架构设计理论与实践
本章考点:
大纲,本课时知识点会涉及单选为题型(约占2~5分)和案例题(25分),本课时内容偏重于方法的掌握和应用,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,概念知识的考查内容多数来源于实际应用,还需要灵活运用相关知识点。本课时知识架构如图16.1所示。
一、层次式体系结构概述
1.定义
软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。层次式体系结构设计是一种常见的架构设计方法,它将系统组成为一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层可见。层次式体系结构的每一层最多只影响两层,同时只要给相邻层提供相同的接日,也允许每层用不同的方法实现,这种方式也为软件重用提供了强大的支持。
2.层次式应用的组成
大部分的应用会分成表现层:(或称为展示层),中间层(或称为业务层)、访问层(或称为持久层)和数据层,如图16.2所示。
3.特点与注意事项
采用分层架构设计的一个特点就是关注点分离。每层中的组件只负责本层的逻辑,组件的划分也很容易明确组件的角色和职责,比较容易开发、测试、管理和维护。层次式体系结构是一个可靠的通用的架构,但是设计时要注意以下两点:
1)容易成为污水池反模式(Architecture Sinkhole Anti-patter):请求流简单地穿过几个层,每层里面基本没有做任何业务逻辑,或者做了很少的业务逻辑。比如一些Java EE 例子,业务逻辑层只是简单地调用了持久层的接口,本身没有什么业务逻辑。
2)分层架构可能会让应用变得庞大。
二、表现层框架设计
1. MVC (Model-View-Controller)模式
MVC是一种软件设计模式。MVC 把一个应用的输入、处理、输出流程按照视图、控制、模型的方式进行分离,形成了控制器、模型、视图3个核心模块。其中:
(1)控制器(Controller):接受用户的输入,并调用模型和视图去完成用户的需求。
(2)模型(Model):应用程序的主体部分,表示业务数据和业务逻辑。
(3)视图(View):用户看到并与之交流的界面。
三者协作关系如图16.3所示。
使用MVC模式来设计表现层,可以有以下的优点:
(1)允许多种用户界面的扩展。
(2)易于维护。
(3)易于构建功能强大的用户界面。
(4)增加应用的可拓展性、强壮性、灵活性。
2.MVP(Model-View-Presenter)模式
在MVP模式中Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理。MVP不仅仅避免了View和Model之间的耦合,还进一步降低了Presenter对View的依赖。MVP设计模式如图16.4所示。
使用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.5所示。
三、中间层框架设计
1.业务逻辑层组件设计
业务逻辑层组件分为接口和实现类两个部分。接口用于定义业务逻辑组件,定义业务逻辑组件必须实现的方法是整个系统运行的核心。通常按模块来设计业务逻辑组件,每个模块设计一个业务逻辑组件,并且每个业务逻辑组件以多个数据访问对象(Data Acces Object,DAO)组件作为基础,从而实现对外提供系统的业务逻辑服务。
2.业务逻辑层工作流设计
工作流管理联盟(Workflow Management Coalition,WFMC)将工作流定义为:业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协调工作以达到业务的整体目标。工作流参考模型如图16.6所示。
3.业务逻辑层实体设计
逻辑层实体提供对业务数据及相关功能(在某些设计中)的状态编程访问。业务逻辑层实体可以使用具有复杂架构的数据来构建,这种数据通常来自数据库中的多个相关表。业务逻辑层实体数据可以作为业务过程的部分I/O参数传递。业务逻辑层实体是可序列化的,以保持它们的当前状态。
4.业务逻辑层框架
业务逻辑框架位于系统架构的中间层,是实现系统功能的核心组件。采用容器的形式,便于系统功能的开发、代码重用和管理。在业务容器中,业务逻辑是按照 Domain Model-Service-Control思想来实现的。其中:
1)Domain Model 是仅仅包含业务相关的属性的领域层业务对象。
2)Service是业务过程实现的组成部分,是应用程序的不同功能单元,通过在这些服务之间定义良好的接口和契约联系起来。
3)Control服务控制器,是服务之间的纽带,不同服务之间的切换就是通过它来实现的。
四、数据访问层设计
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.连接对象管理设计
建立一个数据库连接池,提供一套高效的连接分配、使用策略,保证了数据库连接的有效复用。
五、数据架构规划与设计
(1)数据库设计与类的设计融合。对类和类之间关系的正确识别是数据模型的关键所在。好模型的目标是将工程项目整个生存期内的花费减至最小,同时也会考虑到随时间的推移系统将可能发生的变化,因而设计时也要考虑能适应这些变化。
(2)数据库设计与XML设计融合。XML 文档的存储方式有两种:基于文件的存储方式和数据库存储方式。
六、物联网层次架构设计
(1)感知层:用于识别物体、采集信息。感知层包括二维码标签和识读器、RFID 标签和读写器、摄像头、GPS、传感器、M2M 终端、传感器网关等,主要功能是识别对象、采集信息,与人体结构中皮肤和五官的作用类似。
(2)网络层:用于传递信息和处理信息。网络层包括通信网与互联网的融合网络、网络管理中心、信息中心和智能处理中心等。网络层将感知层获取的信息进行传递和处理,类似于人体结构中的神经中枢和大脑。
(3)应用层:实现广泛智能化。应用层是物联网与行业专业技术的深度融合,结合行业需求实现行业智能化,这类似于人们的社会分工。
七、课后练习
1.软件体系结构为软件系统提供了( )的高级抽象,由构成系统的元素描述这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
A.继承、多态、实现
B.关联、扩展、泛化
C.结构、行为、属性
D.构件定义、访问方式、组织部署
2.MVC模式是一种目前广泛流行的软件设计模式。近年来,随着Java EE的成熟,MVC成为了Java EE平台上推荐的一种设计模式。MVC强制性地把一个应用的()流程进行分离,形成了控制器、模型、视图三个核心模块。
A.启动、运行、结束
B.输入、处理、输出
C.前端/客户端、服务端、数据库
D.接受请求、处理请求、返回请求
3.工作流管理联盟(Workflow Management Coalition)将工作流定义为:业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协调工作以达到业务的整体目标。工作流参考模型包括的组件是()。
A.过程定义工具、工作流引擎、工作流客户端应用、相关应用、管理与监视工具
B.工作流定义工具、工作流引擎、工作流客户端应用、相关应用、管理与监视工具
C.工作流定义工具、工作流引擎、工作流客户端应用、工作流API、管理与监视工具
D.过程定义工具、工作流引擎、工作流客户端应用、工作流API、管理与监视工具
4.事务必须服从ISO/IEC 所制定的ACID原则。关于ACID,以下说法错误的是()。
A.事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效
B.一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态
C.隔离性表示在事务执行过程中对数据的修改,在事务提交之后对其他事务不可见
D.持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确
5.物联网的感知层用于识别物体、采集信息。下列()不属于感知层设备。
A.摄像头
B.GPS
C.扫描仪
D.指纹
答案解析:
1、解析:软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
答案:C
2、解析:MVC模式是一种目前广泛流行的软件设计模式。近年来,随着 Java EE 的成熟,MVC成为了Java EE平台上推荐的一种设计模式。MVC强制性地把一个应用的输入、处理、输出流程进行分离,形成了控制器、模型、视图三个核心模块。
答案:B
3、解析:工作流参考模型包括的组件是过程定义工具、工作流引擎、工作流客户端应用、相关应用、管理与监视工具。
答案:A
4、解析:隔离性表示在事务执行过程中对数据的修改,在事务提交之“前”对其他事务不可见。
答案:C
5、解析:感知层主要功能是识别对象、采集信息,与人体结构中皮肤和五官的作用类似。但指纹是人的特征属性,不是感知层设备。
答案:D
相关文章:

系统架构师考试学习笔记第四篇——架构设计实践知识(16)层次式架构设计理论与实践
本章考点: 大纲,本课时知识点会涉及单选为题型(约占2~5分)和案例题(25分),本课时内容偏重于方法的掌握和应用,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,概念知识的考查内容多数来源于实际应用,还需要灵活运用相关知识点。本课时知识架构如图1…...

顶踩Emlog插件源码
源码介绍 顶踩Emlog插件源码 前些天看到小刀娱乐网的文章页面有了一些变化,那就是增加了一个有价值/无价值的顶踩按钮。 样式也是非常的好看 再加上两个表情包是非常的有趣。 写到了Emlog系统,效果如上图。 如何使用: 需要在echo_log.…...

国庆出游季,南卡Runner Pro5骨传导耳机让旅途更完美!
国庆长假将至,无论是计划一场远行还是近郊的户外活动,一款适合的耳机都能让旅途更加愉快。南卡Runner Pro5骨传导耳机以其独特的设计和功能,成为了国庆出行的理想伴侣。 首先,骨传导耳机通过颅骨传递声音,避免了传统耳…...

HarmonyOS NEXT 封装实现好用的网络模块(基于最新5.0的API12)
在 HarmonyOS-NEXT 开发中,网络请求是应用开发中不可或缺的一部分。为了提高开发效率和代码复用性,我们可以封装一个好用的网络模块组件。本文将介绍如何在 HarmonyOS-NEXT 中封装一个功能强大且易于使用的网络模块组件。 封装目的 网络模块使用的频率最…...

Visual Studio提示:无法安装CPpython.Exe.x64
如果你需要在Visual Studio中使用python环境,而且你本身已经有一个python环境,则只需要将你自己的python环境配置到Visual Studio中即可,可以无视如题报错,将不会产生实质性的问题或影响。 解决办法: 工具->获取工…...

计算机网络 ---- 电路交换、报文交换、分组交换
目录 零、前言 一、计算机网络发展初期面临的问题 1.1 电路交换的主要特点【电话网络采用电路交换技术】 1.1.1 电路交换的基本知识介绍 1.1.2 电路交换的优缺点 1.3 报文交换技术的特点【电报网络采用报文交换技术】 1.3.1 报文交换的基本知识介绍 1.3.2 报文交换技术…...

OceanBase 基于企业版本OAT安装与OMS安装与InfluxDB的集成
一、前言与环境准备 说明:OceanBase V3 的OMS手动安装与V4的OMS手动安装是存在区别的,建议V4版本的OMS通过OAT进行安装。 前言: OAT 是 OceanBase V4是企业版本安装Web界面的简易安装工具。 InfluxDB 是OMS 的监控时序数据库。 OMS 是Ocea…...

【油猴脚本】tampermonkey 的使用方法,油猴脚本(tampermonkey )编写方法,油猴脚本(tampermonkey )获取脚本的方法
前言:哈喽,大家好,今天给大家分享【油猴脚本】tampermonkey 的使用方法,油猴脚本(tampermonkey )编写方法,油猴脚本(tampermonkey )获取脚本的方法!并提供具体…...

Keil MDK报错:Browse information of one or more files is not available----解决方法:
Keil MDK报错:Browse information of one or more files is not available----解决方法: 问题描述 最近在项目中遇到这样一个问题:拷贝过来添加到工程的.c文件在编译时报如下错误: 解决方案: 总结以下一些解决办法&…...

C# WPF编程-串口通信
C# WPF编程-串口通信 串口通信1. NuGet安装System.IO.Ports2. 界面布局XAML3. C#代码4. 运行效果源码下载 串口通信 1. NuGet安装System.IO.Ports 2. 界面布局XAML <Window x:Class"BlocksTools.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006…...

MybatisPlus中tableName、tableId 和 tableField
在MyBatis-Plus中,tableName、tableId 和 tableField 等注解主要用于自动映射实体类与数据库表之间的关系,以及指定表的主键、字段名等,以减少手动配置的工作量。这些注解是MyBatis-Plus为了简化开发而提供的强大特性之一。下面分别介绍这些注…...

《2024中国数据要素产业图谱2.0版》重磅发布
数据猿出品 本次“数据猿2024年度三大媒体策划活动——《2024中国数据要素产业图谱2.0版》”的发布,下一次版本迭代将于2024年12月底发布2024年3.0版,敬请期待,欢迎报名。 大数据产业创新服务媒体 ——聚焦数据 改变商业 随着技术不断革新&a…...

算法-图论(建图,拓扑排序)
文章目录 建图的三种方式邻接矩阵邻接表链式前向星 拓扑排序拓扑排序基础原理介绍拓扑排序步骤解析拓扑排序模板leetcode-课程表 建图的三种方式 我们建图的三种方式分别是邻接矩阵, 邻接矩阵, 链式前向星 邻接矩阵 假设我们的点的个数为N个, 我们就把他们的下标依次标为1, …...

天童教育:课外阅读图书推荐
新学期开始了,现在正是孩子培养良好的阅读习惯的关键时期。让孩子感受阅读,爱上阅读,无疑会丰富孩子的日常生活,开阔孩子的视野,帮助孩子更好地生活。今天西安天童教育就和大家推荐几本适合孩子看的课外阅读书目&#…...

“汉语新解” Prompt新高度,火爆的李继刚
“汉语新解” prompt 是由李继刚设计的一个用于启发人工智能模型进行创意性文本生成的指令模板。这个 prompt 的设计初衷是为了让AI能够以一种独特的方式解析和重新诠释常见的中文词汇,从而产生出具有深刻洞察力和幽默感的文本内容,仿佛是由鲁迅或林语堂…...

论文:AOP框架安全框架-系统架构师(六十六)
1详细论述安全架构设计中鉴别框架和访问控制框架设计内容,并论述鉴别框架和访问控制所面临的主要威胁,说明其危害。 解析: 鉴别框架有用户密码鉴别、生物特征鉴别和多因素鉴别。 用户密码鉴别可以采用验证登入的用户账号是否正确。 生物特…...

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:下(人物动画)
上个博客我们做出了人物的动画机和人物移动跳跃,接下来我们要做出人物展现出来的动画了 我们接下来就要用到动画机了,双击我们的动画机,进入到这样的页面,我这是已经做好的页面,你们是没有这些箭头的 依次像我一样连接…...

Android 优雅封装Glide
文章目录 Android 优雅封装Glide核心思想定义策略接口定义图片选项实现Glide策略图片管理类使用 Android 优雅封装Glide 核心思想 使用策略模式实现不同图片加载框架的切换,使用建造者设计模式处理不同参数,最后通过 ImageLoader 进行管理。 定义策略…...

智能优化算法-粒子群优化算法(PSO)(附源码)
目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 粒子群优化算法 (Particle Swarm Optimization, PSO) 是一种基于群体智能的元启发式优化算法,由Kennedy和Eberhart于1995年提出。PSO模拟了鸟群或鱼群的觅食行为,通过粒子之间的相互作用…...

vue系统获取授权平台授权码实现单点登录、注销功能
公司平台需要对接别的平台 实现单点登录 注销。简而言之,不需要在自己公司系统登录 统一在别的平台登录后获取到登录凭证(授权码) 在本公司系统实现免密登录的功能。 流程: 跳转授权页面和保存授权码的代码: hrefLog…...

Java之枚举
目录 枚举 引入 定义 代码示例 常用方法 代码示例 枚举的优缺点 枚举和反射 面试题 枚举 引入 枚举是在JDK1.5以后引入的。主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式: publicstaticintfinalRED1;…...

八、适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间进行合作。适配器模式通过创建一个适配器类来转换一个接口的接口,使得原本由于接口不兼容无法一起工作的类可以一起工作。 主要组成部分: 目标…...

关于E-R图
一 什么是E-R图 E-R图(Entity-Relationship Diagram)是一种数据建模工具,用于描述数据库中实体之间的关系。它使用实体(Entity)、属性(Attribute)和关系(Relationship&#…...

DVWA通关教程
Brute Force Low 先进行一下代码审计 <?php // 检查是否通过GET请求传递了Login参数(注意:这里应该是username或类似的,但代码逻辑有误) if( isset( $_GET[ Login ] ) ) { // 从GET请求中获取用户名 $user $_GET[ us…...

网络学习-eNSP配置VRRP
虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP) VRRP广泛应用在边缘网络中,是一种路由冗余协议,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及即使在实际…...

Kafka【九】如何实现数据的幂等性操作
为了解决Kafka传输数据时,所产生的数据重复和乱序问题,Kafka引入了幂等性操作,所谓的幂等性,就是Producer同样的一条数据,无论向Kafka发送多少次,kafka都只会存储一条。注意,这里的同样的一条数…...

JavaScript知识点1
目录 1.JavaScript中常用的数组方法有哪些? 2.JavaScript的同源策略? 3.JavaScript中的 NaN 是什么? 4.JavaScript中的split、slice、splice函数区别? 1.JavaScript中常用的数组方法有哪些? 在 JavaScript 中&…...

51单片机个人学习笔记11(AT24C02-I2C总线)
前言 本篇文章属于STC89C52单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 [1-1] 课程简介_哔哩…...

创建Java项目,可实现main方法运行,实现对性能数据的处理
1、Android Studio无法执行Java类的main方法问题及解决方法 Android Studio无法执行Java类的main方法问题及解决方法_delegatedbuild-CSDN博客 D:\workspaces\performanceTools\.idea 文件夹下,gardle.xml ,添加依赖 <option name"delegatedBuild"…...

JavaWeb(后端)
MVC MVC 就是 Model View Controller 的缩写,属于一种软件架构设计模式一种思想,把我们的项目分为控制器(Controller)、模型(Model)、视图(view)三个部分,model就是处理…...