【系统架构设计师】十一、系统架构设计(层次架构风格|MVC|面向服务的架构风格|ESB)

目录

五、层次架构风格

5.1 两层C/S架构

5.2 三层C/S架构

5.3 三层B/S架构

5.4 MVC架构

5.5 MVP架构

5.6 MVVM架构

六、面向服务的架构风格

6.1 SOA特征

6.2 Web Service

6.2.1 关键技术

6.2.2 WEB Service

6.3 企业服务总线ESB

相关推荐

历年真题练习


五、层次架构风格

5.1 两层C/S架构

        两层C/S 体系结构有3个主要组成部分:数据库服务器、客户应用程序和网络。服务器(Server,后台)负责数据管理,客户机(Client,前台)完成与用户的交互任务,称为“胖客户机,瘦服务器”。

        客户端和服务器都有处理功能,现在已经不常用,原因有:开发成本较高、客户端程序设计复杂、信息内容和形式单一、用户界面风格不软件移植困难、软件维护和升级困难、新技术不能轻易应用、安全性问题、服务器端压力大难以复用。

5.2 三层C/S架构

        将处理功能独立出来,表示层和数据层都变得简单。表示层在客户机上,功能层在应用服务器上,数据层在数据库服务器上。既然将两层C/S架构中的数据从服务器中独立出来了。其优点下面四点:

        (1)各层在逻辑上保持相对独立,整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性;
        (2)允许灵活有效的选用相应的平台和硬件系统,具有良好的可升级性和开放性;
        (3)各层可以并行开发,各层也可以选择各自最适合的开发语言;
        (4)功能层有效的隔离表示层与数据层,为严格的安全管理奠定了坚实的基础,整个系统的管理层次也更加合理和可控制。

        三层C/S架构设计的关键在于各层之间的通信效率,要慎重考虑三层间的通信方法、通信频度和数据量,否则即使分配给各层的硬件能力很强,性能也不高。

5.3 三层B/S架构

        B/S架构的全称为Browser/Server,即浏览器/服务器结构。三层B/S架构是三层C/S架构的变种,将客户端变为用户客户端上的浏览器,将应用服务器变,又称为0客户端架构,虽然不用开发客户端,但有很多为网络上的WEB服务器缺点:
        (1)B/S架构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能;
        (2)安全性难以控制;
        (3)在数据查询等响应速度上,要远远低于C/S架构;
        (4)数据提交一般以页面为单位,数据的动态交互性不强,不利于OLTP应用。

        OLTP(Online Transaction Processing,联机事务处理)是一种基于计算机处理事务的方式,主要用于处理企业级应用程序中的实时业务数据。

5.4 MVC架构

        (1)控制器(Controller):是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

        (2)模型(Model):是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。模型表示业务数据和业务逻辑。

        (3)视图(View):是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。

5.5 MVP架构

        MVP是把MVC中的Controller换成了Presenter(呈现)目的就是为了完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间通信的完全隔离。MVP特点:
        (1)M、V、P之间双向通信。
        (2)View与Mode!不通信,都通过 Presenter传递。Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。
        (3)View 非常薄,不部署任何业务逻辑,称为”被动视图”(PassiveView),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。
        (4)Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更view时候可以保持Presenter的不变,这样就可以重用。

5.6 MVVM架构

        是 Model-View-ViewModel 的简写。MVVM与MVP的结构还是很相似的,就是将Presenter升级为ViewModel。在MVVM中,View层和Model层进行了双向数据绑定(即Data Binding),所以Model数据的更改会表现在View上,反之亦然。ViewModel就是用来根据具体情况处理View或Model的变化。

Android 架构MVC MVP MVVM+实例_android mvvm 实例-CSDN博客文章浏览阅读3.3k次,点赞24次,收藏50次。MVC、MVP和MVVM是软件比较常用的三种软件架构,这三种架构的目的都是分离,避免将过多的逻辑全部堆积在一个类中。_android mvvm 实例https://shuaici.blog.csdn.net/article/details/119756280

六、面向服务的架构风格

        SOA是一种粗粒度、松耦合服务架构服务之间通过简单、精确定义接口进行通信,不涉及底层编程接口和通信模型

        在SOA中,服务是一种为了满足某项业务需求的操作、规则等的逻辑组合。它包含一系列有序活动的交互,为实现用户目标提供支持。

        SOA并不仅仅是一种开发方法,还具有管理上的优点,管理员可直接管理开发人员所构建的相同服务,多个服务通过企业服务总线(ESB)提出服务请求,由应用管理来进行处理,如下:

6.1 SOA特征

        实施SOA的关键目标是实现企业IT资产重用的最大化,在实施SOA过程中要牢记以下特征:

        (1)可从企业外部访问
        (2)随时可用(服务请求能被及时响应);
        (3)粗粒度接口(粗粒度提供一项特定的业务功能,而细粒度服务代表了技术构件方法);
        (4)服务分级
        (5)松散耦合(服务提供者和服务使用者分离);
        (6)可重用的服务及服务接口设计管理
        (7)标准化的接口(WSDL、SOAP、XML是核心);
        (8)支持各种消息模式
        (9)精确定义的服务接口

        从基于对象到基于构件再到基于服务,架构越来越松散耦合,粒度越来越粗,接口越来越标准

        基于服务的构件与传统构件的区别有四点:

        (1) 服务构件粗粒度,传统构件细粒度居多;
        (2)服务构件的接口是标准的,主要是WSDL接口,而传统构件常以具体API形式出现;
        (3)服务构件的实现与语言是无关的,而传统构件常绑定某种特定的语言;
        (4)服务构件可以通过构件容器提供QoS的服务,而传统构件完全由程序代码直接控制。 

注:QoS(Quality of Service,服务质量)是网络或通信系统中的一组技术和机制,用于确保在不同网络应用和服务之间分配和提供适当的服务质量水平。

6.2 Web Service

6.2.1 关键技术

        面向服务架构体现在Web 应用之间,就成为了Web Service,即两个互联网应用之间可以相互向对方开放一些内部“服务”(这种服务可以理解为功能模块、函数、过程等)。

功能协议
发现服务UDDI、 DISCO
描述服务WSDL、XML Schema
消息格式层SOAP、REST
编码格式层XML( DOM,SAX )
传输协议层HTTP、TCP/IP、SMTP等

        UDDI:是一套基于WEB的、分布式的、为WebService提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的WebService注册,以使别的企业能够发现的访问协议的实现标准,用于WEB服务注册统一描述、发现及集成

        WSDL(Web Service描述语言):将Web服务描述定义为一组服务访问点,客户端可以通过这些服务访问点对包含面向文档信息或面向过程调用的服务进行访问(类似远程调用),用于描述服务

        SOAP(简单对象访问协议):是用于交换XML编码信息的轻量级协议,用于传递信息

        XML(可扩展标记语言):是WebService平台中表示数据的基本格式,用于数据交换

6.2.2 WEB Service

        服务提供者、服务注册中心(中介,提供交易平台,可有可无)、服务请求者。服务提供者将服务描述发布到服务注册中心,供服务请求者查找,查找到后,服务请求者将绑定查找结果。如上图。

        服务注册表:

        (1)服务注册:应用开发者的功能(服务提供者)在注册表中公布服务。
        (2)服务位置:服务使用者(服务应用开发者),帮助他们查询注册服务,寻找符合自身要求的服务。
        (3)服务绑定:服务使用者利用检索到的服务接口来编写代码所编写的代码将与注册的服务绑定,调用注册的服务,以及与它们实现互动。

6.3 企业服务总线ESB

        企业服务总线ESB:简单来说是一根管道,用来连接各个服务节点ESB的存在是为了集成基于不同协议的不同服务,ESB 做了消息的转化、解释以及路由的工作,以此来让不同的服务互联互通

        ESB包括:客户端(服务请求者)、基础架构服务(中间件)、核心集成服务(提供服务)。

        ESB特点如下

        (1)SOA的一种实现方式,ESB在面向服务的架构中起到的是总线作用将各种服务进行连接与整合
        (2)描述服务的元数据和服务注册管理
        (3)在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力并支持由实践中总结出来的一些模式如同步模式、异步模式等
        (4)发现、路由、匹配和选择的能力,以支持服务之间的动态交互解耦服务请求者和服务提供者。高级一些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等

        ESB 的核心功能如下

        (1)提供位置透明性的消息路由和寻址服务。
        (2)提供服务注册和命名的管理功能。
        (3)支持多种消息传递范型(如请求/响应、发布/订阅等)。
        (4)支持多种可以广泛使用的传输协议。
        (5)支持多种数据格式及其相互转换。
        (6)提供日志和监控功能。

相关推荐

【系统架构设计师】十一、系统架构设计(软件架构概述|构件|软件架构风格|软件架构复用)-CSDN博客文章浏览阅读1.2k次,点赞24次,收藏18次。软件体系结构风格(软件系统架构)是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族,即一个架构定义、一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。架构设计的一个核心问题是能否达到架构级的软件复用。架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。https://shuaici.blog.csdn.net/article/details/140371088【系统架构设计师】九、软件工程(项目管理|进度管理|软件配置管理|软件质量管理|软件风险管理 )-CSDN博客文章浏览阅读1.4k次,点赞40次,收藏10次。面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、硬件/软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等进行预先计划和执行。:识别出项目中已知和可预测的风险,确定风险的来源、产生的条件、描述风险的特征以及哪些项目可以产生风险,形成一个风险列表。https://shuaici.blog.csdn.net/article/details/140344001

历年真题练习

        1.(1)是由中间件技术实现并支持SOA的一组基础架构,它提供了一种基础设施,其优势在于()。

                (1)A.ESB                B.微服务
                    C.云计算            D.Multi-Agont systm

        2.在三层C/S架构中,(1)是应用的用户接口部分,负责与应用逻辑间的对话功能;(2)是应用的本体,负责具体的业务处理逻辑。

                (1)A.表示层        B.感知层
                    C.设备层        D.业务逻辑层
                (2)A.数据层        B.分发层
                    C.功能层        D.算法层

        3.面向服务系统构建过程中,(1)用于实现Web服务的远程调用,(2)用来将分散的、功能单一的 Web服务组织成一个复杂的有机应用。

           (1)A.UDDl(Universal Description,Discovery and Integration)
                B.WSDL(Web Service Description Language)
                C.SOAP(Simple Object Access Protocol)
                D.BPEL(Business Process Execution Language)

           (2)A.UDDl(Universal Description,Discovery and Integration)
                B.WSDL(Web Service Description Language)
                C.SOAP(Simple Object Access Protocol)
                D.BPEL(Business Process Execution Language)

人工分割线-答案

        1. A

        2. A、C

        3. C、D
 


 

        

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Linux]添加sudoers

之前我们讲过sudo这个命令,它可以让我们普通用户进行短暂的提权,上回我们讲完了vim 本篇是个短篇,目的就是让我们之后的学习中可以使用sudo命令。 首先我们先登录root用户 ls /etc/sudoer 我们需要改的就是上面的这个文件 vim /etc/sudoers 我们用vim打开 把光标移动到这…

类和对象(中)-- 类的六个默认成员函数

目录 1.构造函数 1.1构造函数的特性 1.2 默认构造函数 1.3补丁 ​2.析构函数 2.1析构函数的特性 2.2构造函数与析构函数的调用顺序 3.拷贝构造函数(复制构造函数) 3.1拷贝构造函数的特征 4.赋值运算符重载 4.1运算符重载 4.2类内重载运算符 …

ChatGPT 深度解析:技术驱动的智能对话

在当今科技飞速发展的时代,ChatGPT 无疑成为了最耀眼的明星之一。它以其令人惊叹的智能对话能力,引发了全球范围内的广泛关注和热议。 ChatGPT 背后的技术堪称精妙绝伦。它基于深度学习算法,通过对海量数据的学习和分析,从而能够理…

浅谈Git

一:什么是 git git一种开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 下图是 git 的一个工作流程简图 二:什么是 分布/集中式版本控制系统 软件开发过程中,要解决多人协作的问题,需要…

【Linux】常见指令(下)

【Linux】常见指令(下) 通配符 *man指令cp指令echo指令cat指令(简单介绍)cp指令 mv指令alias指令which ctrl ccat指令linux下一切皆文件 more指令less指令head指令tail指令管道 通配符 ‘*’ 通配符’ *‘,是可以匹配…

Linux(CentOS7)离线安装Redis6

版本 CentOS-7、redis-6 1、下载redis离线包 下载地址:http://download.redis.io/releases/ 2、选择安装包 redis-6.2.5.tar.gz 3、上传安装包至服务器 cd /usr/local/redis #进入目录,没有redis目录则自行创建 tar -zxvf redis-6.2.5.tar.gz #…

【信息收集】域名信息收集

域名介绍 域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。 DNS&#xf…

解决RuntimeError: Couldn‘t load custom C++ ops. This can happen if your PyTorch

问题描述 刚下好yolov8的代码,想测一下能否成果,果然没成功,报错如下 RuntimeError: Couldnt load custom C ops. This can happen if your PyTorch and torchvision versions are incompatible, or if you had errors while compiling tor…

【python】Pandas运行报错分析:SettingWithCopyWarning及其处理

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

通用图形处理器设计GPGPU基础与架构(三)

一、前言 前两篇已经介绍了 GPGPU 的背景 和 GPGPU 的编程模型相关的内容,本文将在 SIMT 计算模型的基础上,介绍 GPGPU 控制核心架构和微体系结构的设计。 二、CPU-GPGPU 异构计算系统 一个由 CPU 和 GPGPU 构成的异构计算平台如下图所示,GP…

《昇思25天学习打卡营第23天|ResNet50迁移学习》

文章目录 ResNet50迁移学习数据准备下载数据集 加载数据集数据集可视化 训练模型构建Resnet50网络固定特征进行训练训练和评估可视化模型预测 总结打卡 ResNet50迁移学习 在实际应用场景中,由于训练数据集不足,所以很少有人会从头开始训练整个网络。普遍…

摸鱼大数据——Kafka——kafka tools工具使用

可以在可视化的工具通过点击来操作kafka完成主题的创建,分区等操作 注意: 安装完后桌面不会有快捷方式,需要去电脑上搜索,或者去自己选的安装位置找到发送快捷方式到桌面! 连接配置 创建主题 删除主题 主题下的数据查看 数据显示问题说明 修改工具的数据显示类型 发…

Laravel :如何将Excel文件导入数据库

文章目录 一、前提二、使用2.1、新建一个导入文件2.2、新建一个控制器和方法,调用导入文件2.3、 新建一个页面,支持文件上传 一、前提 想要将excel内容入库,laravel有扩展可以使用,常用的扩展是maatwebsite/excel,安装步骤参考上一篇&#x…

校园工会体育报名小程序的设计

管理员账户功能包括:系统首页,个人中心,赛事公告管理,球员管理,球队信息管理,比赛信息,比赛报名管理 微信端账号功能包括:系统首页,比赛信息,比赛报名&#…

7月考研数学的保底进度,警惕三个误区!

误区1. 不恰当的课程选择和学习计划 尤其25张宇36讲大改版,一些同学感到焦虑,担心自己的课程选择不适合自己。 或者担心学习计划不够高效,影响最终的成绩。 课程选择,看3方面: 1. 覆盖是否全面? 2. 是否…

element-ui dialog 嵌套

dialog 内部嵌套 dialog,内层的 dialog 层级显示会遮罩在内容的 dialog 内容区域之上,内层 dialog 添加 append-to-body 属性即可,如官方文档:

网安小贴士(11)VPN类型

前言 VPN(Virtual Private Network,虚拟专用网络)类型多样,主要根据其使用的协议、应用场景以及实现方式等因素进行分类。以下是对VPN类型的详细概述: 一、按协议分类 根据使用的隧道协议,VPN可以分为以下几…

java设计模式(十五)命令模式(Command Pattern)

1、模式介绍: 命令模式(Command Pattern)是一种行为设计模式,其主要目的是将请求封装成一个对象,从而允许使用不同的请求、队列或者日志来参数化其他对象。这种模式使得命令的请求者和实现者解耦。 2、应用场景&…

c++树笔记

树的定义 树(Tree)是n(n≥0)个结点的有限集。n0时称为空树。在任意一颗非空树中:①有且仅有一个特定的称为根(Root)的结点;②当n>1时,其余结点可分为m(m&g…

基于 jenkins 部署接口自动化测试项目!

引言 在现代软件开发过程中,自动化测试是保证代码质量的关键环节。通过自动化测试,可以快速发现和修复代码中的问题,从而提高开发效率和产品质量。而 Jenkins 作为一款开源的持续集成工具,可以帮助我们实现自动化测试的自动化部署…