系统架构设计高级技能 · 层次式架构设计理论与实践

news2024/11/18 8:25:43

系列文章目录

系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】
系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】
系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.

系统架构设计高级技能 · 层次式架构设计理论与实践

  • 系列文章目录
  • 一、层次式体系结构概述
    • 1.1 定义
    • 1.2 层次式应用的组成
    • 1.3 特点与注意事项
  • 二、表现层框架设计
    • 2.1 MVC(Model-View-Controller)模式
    • 2.2 MVP(Model-View-Presenter)模式
    • 2.3 MVVM(Model-View-ViewModel )模式
  • 三、中间层框架设计
    • 3.1 业务逻辑层组件设计
    • 3.2 业务逻辑层工作流设计
    • 3.3 业务逻辑层实体设计
    • 3.4 业务逻辑层框架
  • 四、数据访问层框架设计
    • 4.1 数据访问模式
    • 4.2 工厂模式在数据数据访问层的应用
    • 4.3 ORM,Hibernate与CMP2.0设计思想
    • 4.4 XML Schema
    • 4.5 事务处理设计
    • 4.6 连接对象管理设计
  • 五、数据架构规划与设计
    • 5.1 数据库与类的设计融合
    • 5.2 数据库设计与XML设计融合
  • 六、物联网层次架构设计

在这里插入图片描述

一、层次式体系结构概述

1.1 定义

软件体系结构可定义为:软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理,是构建于软件系统之上的系统级复用。

分层式体系结构是一种最常见的架构设计方法,能有效地使设计简化,使设计的系统机构清晰,便于提高复用能力和产品维护能力。层次式体系结构设计是将系统组成一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层可见。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件
重用提供了强大的支持。

1.2 层次式应用的组成

在这里插入图片描述

1.3 特点与注意事项

二、表现层框架设计

2.1 MVC(Model-View-Controller)模式

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

如图,三者协作关系:
在这里插入图片描述
使用MVC模式来设计表现层,可以有以下优点:
(1)允许多种用户界面的扩展。
(2)易于维护。
(3)易于构件功能强大的用户界面。
(4)增加应用的可拓展性、强壮性、灵活性。

2.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中,就可以脱离用户接口来测试这些逻辑(单元测试)。

2.3 MVVM(Model-View-ViewModel )模式

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

三、中间层框架设计

3.1 业务逻辑层组件设计

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

3.2 业务逻辑层工作流设计

工作流管理联盟(Workflow Management Coalition,WFMC)将工作流定义为:业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协调工作已达到业务的整体目标。

如图,工作流参考模型:
在这里插入图片描述

3.3 业务逻辑层实体设计

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

3.4 业务逻辑层框架

业务逻辑框架位于系统架构的中间层,是实现系统功能的核心组件。采用容器的形式,便于系统功能的开发、代码重用和管理。在业务容器中,业务逻辑是按照Domain Model-Service-Contro思想来实现的。其中:
(1)Domain Model是仅仅包含业务相关的属性的领域层业务对象。
(2)Service是业务过程实现的组成部分,是应用程序的不同功能单元,通过在这些服务之间定义良好的接口和契约联系起来。
(3)Control服务控制器,是服务之间的纽带,不同服务之间的切换就是通过它来实现的。

四、数据访问层框架设计

4.1 数据访问模式

(1)在线访问
(2)Data Access Object
(3)Data Transfer Object
(4)离线数据模式
(5)对象/关系映射

4.2 工厂模式在数据数据访问层的应用

这就需要在实际开发过程中将这些数据库访问类再作一次封装。经过这样的封装,不仅可以达到上述的目标,还可以减少操作数据库的步骤,减少代码编写量。工厂设计模式是使用的主要方法。

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

4.3 ORM,Hibernate与CMP2.0设计思想

ORM(Object-Relation Mapping) 在关系型数据库和对象之间作一个映射,这样,在具体操纵数据库时,就不需要再去和复杂的 SQL语句打交道,只要像平时操作对象一样操作即可。当开发一个应用程序的时候(不使用OR Mapping), 可能会涉及许多数据访问层的代码,用来从数据库保存、删除和读取对象信息等,然而这些代码写起来总是重复的。一个更好的办法就是引入OR Mapping。 实质上,一个 OR Mapping会生成DAL。 与其自己写DAL代码,不如用OR Mapping, 开发者只需要关心对象就好。

4.4 XML Schema

XML Schema用来描述XML文档合法结构、内容和限制。 XML Schema由XML 1.0 自描述,并且使用了命名空间,有丰富的内嵌数据类型及其强大的数据结构定义功能,充分地改造了并且极大地扩展了 DTDs (传统描述XML文档结构和内容限制的机制)的能力,将逐步替代DTDs, 成为 XML体系中正式的类型语言,同 XML 规范、 Namespace 规范一起成为XML体系的坚实基础。

4.5 事务处理设计

事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚(回到最初的系统状态)。事务必须服从 ISO/IEC所制定的ACID原则。 ACID是原子性(Atomicity)、 一致性(Consistency)、 隔离性 (Isolation) 和持久性 (Durability) 的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。

4.6 连接对象管理设计

对于共享资源,有一个很著名的设计模式——资源池。该模式正是为了解决资源频繁分配、释放所造成的问题。把该模式应用到数据库连接管理领域,就是建立一个数据库连接池,提供一套高效的连接分配、使用策略。建立连接池的第一步,就是要建立一个静态的连接池。所谓静态,是指池中的连接是在系统初始化时就分配好的,并且不能够随意关闭。有了这个连接池,下面就可以提供一套自定义的分配、释放策略。当客户请求数据库连接时,首先看连接池中是否有未分配出去的连接。如果存在空闲连接则把连接分配给客户,并作相应处理。

五、数据架构规划与设计

5.1 数据库与类的设计融合

对类和类之间关系的正确识别是数据模型的关键所在。本节将讨论如何发现、识别以及描述类。要想将建模过程缩减为一个简单的、逐步进行的过程是不太可能的。从本质上讲,建模是一项艺术。对一个给定的复杂情况而言,不存在唯一正确的数据模型,然而却存在好的数据模型。一个企业或机构的某个数据模型可能会优于另一个数据模型,但就如何为一个特定的系统建立数据模型,却没有唯一的解决方案。

好模型的目标是将工程项目整个生存期内的花费减至最小,同时也会考虑到随时间的推移系统将可能发生的变化,因而设计时也要考虑能适应这些变化。因此,将目光集中在最大限度地降低开发费用上是一个错误。

5.2 数据库设计与XML设计融合

XML文档分为两类:一类是以数据为中心的文档,这种文档在结构上是规则的,在内容上是同构的,具有较少的混合内容和嵌套层次,人们只关心文档中的数据而并不关心数据元素的存放顺序,这种文档简称为数据文档,它常用来存储和传输 Web 数据。另一类是以文档为中心的文档,这种文档的结构不规则,内容比较零散,具有较多的混合内容,并且元素之间的顺序是有关的,这种文档常用来在网页上发布描述性信息、产品性能介绍和 E-mail信息等。

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

六、物联网层次架构设计

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/932862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PC上架货源的方式

PC上架货源的方式 第一步建立文档夹 给他发一个snipaste的文件包 1、第一步搜索1688 移动端上架货源的方式 货源上架 弄两个方框,上架货源,先下载软件

基于广义神经网络的网络入侵检测Matlab代码

1.案例背景 1.1 FCM 聚类算法 聚类方法是数据挖掘中经常使用的方法,它将物理的或抽象的对象分为几个种群,每个种群内部个体间具有较高的相似性,不同群体内部间个体相似性较低。模糊c均值聚类算法(Fuzzy C- Mean, FCM)是用隶属度确定每个元素属于某个类别程度的一种聚类算法&am…

[管理与领导-49]:IT基层管理者 - 8项核心技能 - 4 - 团队激励

目录 前言: 一、什么是团队激励 二、为什么需要激励 三、激励的误区 3.1 常见误区 3.2 以下是一些常见的激励错误做法: 四、如何正确地激励 五、关于激励的一些理念 六、常见障碍 前言: 管理者存在的价值就是制定目标,即…

用户端Web自动化测试_L4

目录: selenium多浏览器处理执行 javascript 脚本headless无头浏览器使用capability配置参数解析企业微信实战cypress测试框架介绍Playwright测试框架介绍 1.selenium多浏览器处理 多浏览器测试背景 用户使用的浏览器(firefox,chrome,IE 等)web 应用应该能在任何…

*如何筛选关键词*

*第一步:打开百度,搜索百度指数* *第二步 输入所选择产品的品类* *第三步 找到搜索热度的关键词* *第四步 第一个需要统计的关键词,搜索热度前五的关键词* 建立EXCEL表,写好日期,格式按照 20230206 那一天写得按照这个…

【算法专题突破】双指针 - 复写零(2)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:1089. 复写零 - 力扣(Leetcode) 我先来读题, 题目的意思非常的简单,其实就是, 遇到 0 就复制一个写进数组&a…

mongodb 添加加点 stateStr 停在 STARTUP

解决办法 PRIMARY 节点是的host 是否是内网IP,如果是内网IP 需要切换成外网IP 即可;

ARM开发,stm32mp157a-A7核中断实验(实现按键中断功能)

1.实验目的:实现KEY1/LEY2/KE3三个按键,中断触发打印一句话,并且灯的状态取反; key1 ----> LED3灯状态取反; key2 ----> LED2灯状态取反; key3 ----> LED1灯状态取反; 2.分析框图: …

STL-常用容器-Vector容器(数组)

1 vector基本概念 功能: vector数据结构和数组非常相似,也称为单端数组 vector与普通数组区别: 不同之处在于数组是静态空间,而vector可以动态扩展 动态扩展: 并不是在原空间之后续接新空间,而是找更大…

谷歌面试-扔鸡蛋

今天想跟大家分享一个有意思的面试题,这让我再一次感叹思维的奇妙,接下来我们一起看看吧~ 首先来看看题目: 你有2颗鸡蛋,需要以最少的尝试次数来判断在100层的高楼上,哪一层楼是鸡蛋的安全层。 换句话说&#xff0c…

如何在地图上寻找最密集点的位置?

最近我在工作中遇到了一个小的需求点,大概是需要在地图上展示出一堆点中的点密度最密集的位置。最开始没想到好的方法,就使用了一个非常简单的策略——所有点的坐标求平均值,这个方法大部分的时候好用,因为大部分城市所有点位基本…

深度学习6:自然语言处理-Natural language processing | NLP

目录 NLP 为什么重要? 什么是自然语言处理 – NLP NLP 的2大核心任务 自然语言理解 – NLU|NLI 自然语言生成 – NLG NLP(自然语言处理) 的5个难点 NLP 的4个典型应用 NLP 的 2 种途径、3 个核心步骤 总结 自然语言处理 NLP 为什么重要? “语言…

React入门 组件学习笔记

项目页面以组件形式层层搭起来,组件提高复用性,可维护性 目录 一、函数组件 二、类组件 三、 组件的事件绑定 四、获取事件对象 五、事件绑定传递额外参数 六、组件状态 初始化状态 读取状态 修改状态 七、组件-状态修改counter案例 八、this问…

4.16 TCP 协议有什么缺陷?

目录 升级 TCP 的工作很困难 TCP 建立连接的延迟 TCP 存在队头阻塞问题 网络迁移需要重新建立 TCP 连接 升级 TCP 的工作很困难;TCP 建立连接的延迟;TCP 存在队头阻塞问题;网络迁移需要重新建立 TCP 连接; 升级 TCP 的工作很…

Docker(md版)

Docker 一、Docker二、更换apt源三、docker搭建四、停启管理五、配置加速器5.1、方法一5.2、方法二 六、使用docker运行漏洞靶场1、拉取tomcat8镜像2、拉取成功3、开启服务4、查看kali的IP地址5、访问靶场6、关闭漏洞靶场 七、vulapps靶场搭建 一、Docker Docker是一个开源的应…

Pushmall 推熵共享电商平台 - 共享链盟

Pushmall 推熵共享电商平台 - 共享链盟以 Pushmall 推熵 B2B/B2C 批零采销订货商城系统为基础,以‘平台自营、供应商入驻、商家自营 商圈链盟 共享会员制,实现 S2B2B2C 商业模式’,是一款为实体商家服务的电商营销推广平台。以 “共创、共生…

算法笔记:球树

1 KD树的问题 算法笔记:KD树_UQI-LIUWJ的博客-CSDN博客 在kd树中,导致性能下降的最核心因素是因为kd-tree中被分割的子空间是一个个的超方体,而求最近邻时使用的是欧式距离(超球)。超方体与超球体相交的可能性是极高…

MTK6833_MT6833核心板_天玑700安卓5G核心板规格性能介绍

MTK6833安卓核心板采用台积电 7nm 制程的5G SoC,2*Cortex-A766*Cortex-A55架构,搭载Android12.0操作系统,主频最高达2.2GHz 。内置 5G 双载波聚合技术(2CC)及双 5G SIM 卡功能,实现优异的功耗表现及实时连网…

基于MATLAB的径向基函数插值(RBF插值)(一维、二维、三维)

基于MATLAB的径向基函数插值(RBF插值)(一维、二维、三维) 0 前言1 RBF思路2 1维RBF函数2.1 参数说明2.1.1 核函数选择2.1.2 作用半径2.1.3 多项式拟合2.1.4 误差项(光滑项) 3 2维RBF函数4 3维RBF函数 惯例声…

【头歌】构建哈夫曼树及编码

构建哈夫曼树及编码 第1关:构建哈夫曼树 任务描述 本关任务:构建哈夫曼树,从键盘读入字符个数n及这n个字符出现的频率即权值,构造带权路径最短的最优二叉树(哈夫曼树)。 相关知识 哈夫曼树的定义 设二叉树具有n个带权值的叶子结点{w1,w2,...,wn},从根结点到每个叶…