当前位置: 首页 > news >正文

【系统架构师】-第13章-层次式架构设计

层次式体系结构设计是将系统组成一个层次结构,每一层 为上层服务 ,并作为下层客户。
在一些层次系统中,除了一些精心挑选的输出函数外, 内部的层接口只对相邻的层可见
连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。由于每一层最 多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。
关注分离、职责明确

1、表现层

1、MVC模式

1、控制器:接受用户的输入并调用模型和视图去完成用户的需求

2、模型:应用程序的主体部分。模型表示业务数据业务逻辑

3、视图:用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户输入的数据。视图可以向模型查询业务状态,但不能 改变模型

优点:

1、允许多种用户界面的扩展,只需改动视图、控制器。无需调整模型

2、易于维护

3、功能强大的用户界面

2、MVP模式

Controller/ Presenter 负责逻辑的处理, Model提供数据, View负责显示

在MVP 中 View并不直接使用 Model, 它们之间的通信 是通过 Presenter来进行的

 3、MVVM模式

为解决MVP 中U I种类变多,接口也会不断增加的问题而提出的

模型-视图-视图模型。

通过DataBinding实现View与 Model之间的双向绑定,其内容包括数据状态处理、数据绑定及数据转换

View和 Model 不能直接通信,两者的通信只能通过ViewModel 来实现。 ViewModel通常要实现一个观察者,当数据发生变化, ViewModel 能够监听到数据的变化,然 后通知对应的视图做自动更新;而当用户操作视图, ViewModel 也能监听到视图的变化,再通 知数据做改动,从而形成数据的双向绑定。

更适用于数据驱动的场景

4、使用XML设计

XML (可扩展标记语言)与 HTML 类似,是一种标记语言。适用于Android、WinForm,灵活的页面配置

主要三部分:

1)界面配置:对用户界面的静态定义

2)界面动态生成

3)界面定制:对用户界面的动态修改过程,软件运行过程中,支持用户动态修改后,保存样式、

5、UIP设计思想

应用程序需要维护一个状态,如状态存储在窗体中,代码需要访问这个窗体以重新恢复状态

类似于后台进程,可以重新唤起页面

1)● User Interface Components: 这个组件就是原来的表现层,用户看到的和进行交互都是这 个组件,它负责获取用户的数据并且返回结果。

2)● User Interface Process Components: 这个组件用于协调用户界面的各部分,使其配合后 台的活动,例如导航和工作流控制,以及状态和视图的管理。用户看不到这一组件,但 是这些组件为User Interface Components提供了重要的支持功能。

 2、中间层

1、业务逻辑层组件设计

业务逻辑组件分为接口和实现类两个部分。接口:定义业务逻辑组件,面向接口编程

2、业务逻辑层工作流设计

业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现组织成员间的协调工作以达到业务的整体目标。

含6个基本模块,分别是工作流执行服务、工作流引擎、流程定义工具、客户端应用、 调用应用和管理监控工具。

1)接口1:过程定义导入/导出接口

2)接口2:客户端应用程序接口

3)接口3:应用程序调用接口

4)接口4:工作流机协作接口。

5)接口5:管理和监视接口

3、业务逻辑层实体设计

以数据为中心的模型到更加面向对象 的表示法。如XML、 通用DataSet、 有类型的 DataSet

通用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中的数据和元数据的类。 

(1)代码易读。要访问有类型的DataSet 中的表和列,可以使用有类型的方法和属性。

(2)有类型的方法和属性的提供使得使用有类型的 DataSet 比使用通用 DataSet更方便。使 用有类型的DataSet时, IntelliSense将可用。

(3)编译时类型检查,无效的表名称和列名称将在编译时而不是在运行时检测。

 4、业务逻辑层框架

业务框架位于系统架构的中间层,是实现系统功能的核心组件。采用业务容器的形式,便于系统功能的开发、代码重用和管理

1)Domain Model 是领域层业务对象,它仅仅包含业务相关的属性

2)Service 是业务过程实现的组成部分,是应用程序的不同功能单元

3)Control 服务控制器,是服务之间的纽带,不同服务之间的切换就是通过它来实现的

3、 数据访问层设计

1)五种数据访问模式

1、在线访问

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

2、DataAccess Object

DAO模式:将底层数据访问操作与高层业务逻辑分离开

包含组件:

(1)一个D A O工厂类。

(2)一个D A O接口。

(3)一个实现了D A O接口的具体类。包含访问特定数据源的数据的逻辑

(4)数据传输对象

3、Data Transfer Object

D T O本身是这样一组对象或是数据的容器,它需要跨不同的进程或是网络的边界来传输数据

4、离线数据模式

以数据为中心。离线,对数据的各种操作独立于各种与后台数据源之间的连接或是事务;与 X M L集成,数据可以方便地与X M L格式的文档之间互相转换;独立于数据源

5、对象/关系映射ORM

对象/关系映射,将应用程序中的数据转换成关系型数据库中的记录

2)事务处理设计

事务必须服从 ISO/IEC所制定的ACID原则

原子性(Atomicity)、 一致性(Consistency)、 隔离性 (Isolation) 和持久性 (Durability)

事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。

一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。

隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。

持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确

3)连接对象管理设计

数据库资源池。该模式正是为了解决资源频繁分配、释放所造成的问题

4、数据架构规划与设计

1、数据库设计与类的设计融合

建立数据模型

2、数据库设计与 X M L 设计融合

以数据为中心的文档:以数据库存储

以文档为中心的文档:以文件存储

6、物联网层次架构设计

1、感知层

利用传感器、二维码、 RFID等设备随时随地获取物体的信息

2、网络层

数据传输处理,通过各种传感网络与互联网的融合

3、应用层

实现广泛智能化。解决的是信息处理和人机交互的问题

相关文章:

【系统架构师】-第13章-层次式架构设计

层次式体系结构设计是将系统组成一个层次结构,每一层 为上层服务 ,并作为下层客户。 在一些层次系统中,除了一些精心挑选的输出函数外, 内部的层接口只对相邻的层可见 。 连接件通过决定层间如何交互的协议来定义,拓扑…...

【操作系统】想要更好的学习计算机,操作系统的知识必不可少!!!

操作系统的概念 导言一、日常生活中的操作系统二、计算机系统层次结构三、操作系统的定义3.1 控制和管理计算机资源3.2 组织、调度计算机的工作与资源的分配3.3 给用户和其他软件提供方便接口与环境3.4 总结 四、操作系统的目标和功能4.1 作为管理者4.1.1 处理机管理4.1.2 存储…...

AtCoder Grand Contest 066 B. Decreasing Digit Sums(构造 打表找规律)

题目 给定一个n(n<50)&#xff0c;记f(x)是x各数位的加和&#xff0c;例如f(331)3317 要求输出一个x()&#xff0c;且对于任意i∈[1,n]&#xff0c;均有成立 思路来源 jiangly B站讲解 题解 首先n没啥用&#xff0c;构造一个n50成立的case即可&#xff0c; 给定一个x…...

Hadoop系列总结

一、Hadoop linux基本操作 前提掌握Linux基本操作 参考 Linux基本操作-CSDN博客 1、查看hadoop指定路径下文件大小前6的文件信息 hdfs dfs[hadoop fs] -du -h /path/to/directory|sort -hr|head -n 6...

【第三方登录】Twitter

创建应用 APPID 和 相关回调配置 重新设置api key 和 api secret 设置回调和网址 还有 APP的类型 拿到ClientID 和 Client Secret 源码实现 获取Twitter 的登录地址 public function twitterUrl() {global $db,$request,$comId;require "inc/twitter_client/twitte…...

C++经典面试题目(十七)

1、请解释拷贝构造函数的作用&#xff0c;并说明其调用时机。 拷贝构造函数是一种特殊的构造函数&#xff0c;用于创建一个新对象&#xff0c;其内容与另一个对象相同。它将一个已存在的对象作为参数&#xff0c;并使用该对象的值来初始化新创建的对象。拷贝构造函数的调用时机…...

DFS2 C++

一、指数型枚举 1、题目&#xff1a; 从 1∼n1∼ 这 n 个整数中随机选取任意多个&#xff0c;输出所有可能的选择方案。 输入格式 输入一个整数 n。 输出格式 每行输出一种方案。 同一行内的数必须升序排列&#xff0c;相邻两个数用恰好 11 个空格隔开。 对于没有选任何…...

2021-08-06

yarn的简介&#xff1a; Yarn是facebook发布的一款取代npm的包管理工具。 yarn的特点&#xff1a; 速度超快。 Yarn 缓存了每个下载过的包&#xff0c;所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率&#xff0c;因此安装速度更快。超级安全。 在执行代码…...

Centos服务器Open Gauss 部署

近期很多的项目由于信创要求使用一些国产的数据库&#xff0c;比如OpenGauss。OpenGuass是华为高斯DB的开源版&#xff0c;内核还是PostgreSQL&#xff0c;商业版是收费的。这里记录一下是如何安装部署 的。 官方中文文档 官方下载地址 部署要求 操作系统要求 ARM&#xff…...

Vue与Electron融合之道:从Web App到桌面App的华丽转身

Vue与Electron融合之道&#xff1a;从Web App到桌面App的华丽转身 引言Vue 与 Electron 的天然契合共享技术栈高效开发与部署用户体验升级 Vue 与 Electron 融合实战初始化项目调整Vue项目结构利用 Electron API 增强功能定制桌面应用外观构建与部署 结语 引言 Vue.js 作为一款…...

Higress 基于自定义插件访问 Redis

作者&#xff1a;钰诚 简介 基于 wasm 机制&#xff0c;Higress 提供了优秀的可扩展性&#xff0c;用户可以基于 Go/C/Rust 编写 wasm 插件&#xff0c;自定义请求处理逻辑&#xff0c;满足用户的个性化需求&#xff0c;目前插件已经支持 redis 调用&#xff0c;使得用户能够…...

Mysql的库函数

MySQL是一个流行的开源关系型数据库管理系统&#xff0c;它提供了大量的内置库函数&#xff0c;用于在查询时执行各种操作。这些函数可以帮助开发者在数据检索、转换和处理过程中实现更复杂的逻辑。 1 字符串函数 函数描述ASCII(s)返回字符串 s 的第一个字符的 ASCII 码。CHA…...

绿联 安装onlyoffice容器并启用Cloudreve的office在线预览与编辑功能

原文&#xff1a;绿联 安装onlyoffice容器并启用Cloudreve的office在线预览与编辑功能 本篇教程以配合Cloudreve扩展文档预览/编辑为目的编写&#xff0c;OnlyOffice的其他用途未深入研究也不做探讨&#xff0c;仅使用WOPI能力。 硬件要求 镜像大小&#xff1a;2.91Gb或更大 …...

金钱卦起卦

前言 本文目的&#xff1a; 1.了解什么是《易经》 2.了解什么是八卦/六十四卦 3.金钱卦起卦方法 4.如何解卦 一、什么是易经&#xff1f; 1、易经就是一本书、一本著作 2、它的成书经历了三个阶段 第一阶段&#xff1a;在5000多年前&#xff0c;由人类的始祖伏羲通过观察时…...

学透Spring Boot 003 —— Spring 和 Spring Boot 常用注解(附面试题和思维导图)

这是 学透 Spring Boot 专栏 的第三篇&#xff0c;欢迎关注我&#xff0c;与我一起学习和探讨 Spring Boot 相关知识&#xff0c;学透 Spring Boot。 从面试题说起 今天我们通过一道和Spring Boot有关的常见面试题入手。 面试题&#xff1a;说说 Spring Boot 中有哪些常用注解…...

新能源汽车充电桩常见类型及充电桩站场的智能监管方案

随着新能源汽车市场的迅猛发展&#xff0c;充电桩作为支持其运行的基础设施&#xff0c;也呈现出多样化的类型。这些充电桩不仅在外形和功能上存在差异&#xff0c;更在充电速度、充电方式以及使用场景等方面展现出独特的优势。 一、充电桩类型及区别 1、慢充桩&#xff08;交…...

让工作自动化起来!无所不能的Python

文章目录 前言一、Python是办公自动化的重要工具二、Python是提升职场竞争力的利器三、Python是企业数字化的重要平台四、Python是AI发展的重要通道之一编辑推荐内容简介作者简介目录前言为什么要写这本书 读者对象如何阅读本书赠书活动 前言 随着我国企业数字化和信息化的深入…...

Facebook轮播广告是什么?投放过程中有哪些需要注意的吗?

轮播广告是Facebook广告形式中的一种&#xff0c;可以把3—5个广告合并到一个可滚动的广告单元中。轮播广告会出现在新鲜事即News Feed中&#xff0c;是独立站卖家常用的一种广告形式 为什么选择轮播广告&#xff1f; 转化率更高&#xff1a;相较于单图广告&#xff0c;轮播广…...

3、jvm基础知识(三)

如何判断堆上的对象没有被引用&#xff1f; 常见的有两种判断方法&#xff1a;引用计数法和可达性分析法。 引用计数法会为每个对象维护一个引用计数器&#xff0c;当对象被引用时加1&#xff0c;取消引用时减1。 引用计数法的优点是实现简单&#xff0c;缺点有两点&#xff1…...

leetcode414-Third Maximum Number

这道题目求第三大数&#xff0c;如果第三大数不存在则返回最大数&#xff0c;且该数字最大值不超过2^31-1。从这个提示上就可以看出这个数字是用int类型表示的。我们当然可以通过排序的方式先给数组排序然后很容易的就能求解。但是有没有什么更好的办法呢&#xff1f;对于数组来…...

解决Quartus与modelsim联合仿真问题:# Error loading design解决,是tb文件中没加:`timescale 1ns/1ns

解决Quartus与modelsim联合仿真问题&#xff1a;# Error loading design解决&#xff0c;是tb文件中没加&#xff1a;timescale 1&#xff0c;一直走下来&#xff0c;在modelsim中出现了下面问题2&#xff0c;rtl文件、tb文件2.1&#xff0c;rtl代码2.2&#xff0c;tb测试2.3&a…...

vue使用elementui组件的的对话框;使用ref

1.第一步&#xff0c;先在父组件中引用&#xff0c;设置ref的值 <el-dialog :visible.sync"dialogEditVisible"append-to-body width"1000px" title"编辑":close-on-click-modal"false"><dialog-edit v-if"dialogEditV…...

第十四届蓝桥杯(八题C++ 题目+代码+注解)

目录 题目一&#xff08;日期统计 纯暴力&#xff09;&#xff1a; 代码&#xff1a; 题目二&#xff08;01串的熵 模拟&#xff09;&#xff1a; 代码&#xff1a; 题目三&#xff08;治炼金属&#xff09;&#xff1a; 代码&#xff1a; 题目四&#xff08;飞机降落 深度…...

HTTP协议格式详解之报头(HTTP header)、请求正文(body)

在之前文章中我们已经介绍了HTTP的首行信息&#xff0c;HTTP协议格式详解之首行信息解析-CSDN博客这篇文章中我们继续介绍HTTP协议的报头部分。 一、报头(HTTP header) a&#xff09;请求头部&#xff08;Request Headers&#xff09;&#xff1a; Host&#xff1a;指定服务器…...

[yolox]ubuntu上部署yolox的ncnn模型

首先转换pytorch->onnx->param模型&#xff0c;这个过程可以查资料步骤有点多&#xff0c;参考blog.51cto.com/u_15660370/6408303&#xff0c;这里重点讲解转换后部署。 测试环境&#xff1a; ubuntu18.04 opencv3.4.4(编译过程省略&#xff0c;参考我其他博客) 安装…...

YOLOv9改进策略 :IoU优化 | 提出一种新的Shape IoU,更加关注边界框本身的形状和尺度,对小目标检测也很友好

💡💡💡本文改进:一种新的Shape IoU方法,该方法可以通过关注边界框本身的形状和尺度来计算损失,解决边界盒的形状和规模等固有属性对边界盒回归的影响。 💡💡💡对小目标检测涨点明显,在VisDrone2019、PASCAL VOC均有涨点 《YOLOv9魔术师专栏》将从以下各个方向进…...

如何使用KST指标进行多头交易,Anzo Capital一个条件设置

在之前的文章中&#xff0c;我们进行分享了以下知识&#xff1a;什么是KST指标&#xff0c;以及如何进行计算KST指标。有聪明的投资者就在后台进行咨询Anzo Capital昂首资本了&#xff0c;我们知道这些知识有什么用呢&#xff1f; 当然有用了&#xff0c;只要理解背后的逻辑知…...

【QT进阶】第十三章QT动画类的使用QAbstractAnimation

❤️作者主页:凉开水白菜 ❤️作者简介:共同学习,互相监督,热于分享,多加讨论,一起进步! ❤️专栏目录:【零基础学QT】文章导航篇 ❤️专栏资料:https://pan.baidu.com/s/192A28BTIYFHmixRcQwmaHw 提取码:qtqt ❤️点赞 👍 收藏 ⭐再看,养成习惯 订阅的粉丝可通过…...

【机器学习】揭秘无监督学习:机器如何自我学习发现数据奥秘

无监督学习&#xff1a;全面解析 引言 在机器学习的众多分支中&#xff0c;无监督学习因其在未标记数据上发现隐藏模式的能力而独树一帜。它不依赖于事先标记的输出&#xff0c;而是通过分析数据本身的结构和分布来揭示内在的关系和分类。本文深入探讨无监督学习的核心概念、…...

鸿蒙(HarmonyOS)ArkTs语言基础教程(大纲)

鸿蒙&#xff08;HarmonyOS&#xff09;ArkTs语言基础教程 简介 ArkTS 是鸿蒙生态的应用开发语言。它在保持 TypeScript&#xff08;简称 TS&#xff09;基本语法风格的基础上&#xff0c;对 TS 的动态类型特性施加更严格的约束&#xff0c;引入静态类型。同时&#xff0c;提…...

网站的栏目和版块设计的原则/湘潭网站设计

今天是5月3日&#xff0c;百度联盟上月收入已经结算。以下是我的百度联盟后台显示的最近二个月的结算记录(4月份的收入预计在5月15日付款)。一、百度联盟个人用户扣税标准从上面图中可见&#xff0c;百度联盟支付给个人站长的金额&#xff0c;是从当月佣金中代扣个人劳务所得税…...

wordpress更改固定链接后无法登陆/网络营销策划模板

某些目录不想直接被公网访问&#xff0c;又不能墙掉端口&#xff0c;所以通过给某个目录增加访问密码的方式进行安全控制。1&#xff0c;生成密码文件&#xff0c;生成完毕后须将其属主改为nginx运行用户htpasswd -bdc /data/web/htpasswd username password2&#xff0c;被保护…...

公司使用威联通nas做网站存储/有没有免费推广平台

关注我们&#xff0c;下载更多资源刘伟刘伟&#xff0c;云和恩墨软件开发部研究院研究员&#xff1b;前微博DBA&#xff0c;主要研究方向为开源数据库&#xff0c;分布式数据库&#xff0c;擅长自动化运维以及数据库内核研究。◆◆前言◆◆即便是从数据库特性,SQL功能性等方面,…...

做西点网站/竞价外包

私信“干货”二字&#xff0c;即可领取138G伺服与机器人专属及电控资料&#xff01;高速永磁电机有体积小、效率高和功率密度高等优点&#xff0c;高速电机的研究目前已成为国际电工领域的研究热点。由于高速电机的旋转速度高达每分钟数万转甚至十几万转&#xff0c;其转子表面…...

wordpress特效主题/网站建设网络推广平台

关于分页显示方面的文章&#xff0c;网上搜索会有好几大箩&#xff0c;当然每个人都有自己的思路和出发点。我的基本思路也很简单&#xff0c;就是将搜索过程分为两个部分&#xff1a;“预搜索”和“分页显示”。预搜索负责查询记录主键ID集&#xff0c;并且在整个查询分页过程…...

东莞定制网站建设/企业网站网页设计

网络下载图片方法一&#xff1a;//处理图片url---下载图片---保存图片到相册 //-(void)dealDownloadImageStr{ // dispatch_queue_t queue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // dispatch_semaphore_t semaphore dispatch_semaphore_cre…...