【系统架构设计师】十一、系统架构设计(层次架构风格|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.mzph.cn/bicheng/46781.shtml

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

相关文章

【MAUI】生命周期

.NET Multi-platform App UI (.NET MAUI) 应用通常有四种执行状态:“未运行”、“运行中”、“已停用”和“已停止”。 当应用从未运行状态转换为运行状态、从运行状态转换为已停用状态、从已停用状态转换为已停止状态、从已停止状态转换为运行状态,以及…

new mars3d.graphic.FixedRoute({的position长度超过一百条浏览器会卡死的解决方案

问题场景描述: FixedRoute的position数据已经很精细时,会导致卡死的问题 解决方案: 1. 数据已经很精细时,可以不用autoSurfaceHeight来计算,如果非要用,可以加个minDistance: 200参数。 fixedRoute.auto…

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

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

BasicSR项目(通用图像超分、修复、增强工具库)介绍

项目地址:https://github.com/XPixelGroup/BasicSR 文档地址:https://github.com/XPixelGroup/BasicSR-docs/releases BasicSR 是一个开源项目,旨在提供一个方便易用的图像、视频的超分、复原、增强的工具箱。BasicSR 代码库从2018年4月20日…

【Memcached】Memcached的工作原理

目录 ​编辑 第2章:Memcached工作原理 2.1 数据存储与访问 2.2 分布式架构 2.3 数据过期机制 第2章:Memcached工作原理 2.1 数据存储与访问 Memcached是一种键值存储系统,其中数据以键值对的形式存储。键是用于定位数据的唯一标识符&am…

libyaml库的交叉编译

目录 1.Ubuntu环境中安装libyaml库 2.交叉编译 3.success 1.Ubuntu环境中安装libyaml库 官方地址:https://pyyaml.org/wiki/LibYAML 下载路径:http://pyyaml.org/download/libyaml/yaml-0.2.5.tar.gz 2.交叉编译 官方的下载路径为/usr/local下&am…

【unity实战】使用unity制作一个红点系统

前言 注意,本文是本人的学习笔记记录,这里先记录基本的代码,后面用到了再回来进行实现和整理 素材 https://assetstore.unity.com/packages/2d/gui/icons/2d-simple-ui-pack-218050 框架: RedPointSystem.cs using System.…

PHP全功能微信投票迷你平台系统小程序源码

🔥让决策变得超简单!🎉 🚀【一键创建,秒速启动】 嘿小伙伴们,你还在为组织投票而手忙脚乱吗?来试试这款全功能投票迷你微信小程序吧!只需轻轻一点,无论是班级选举、社团…

【postgresql】pg_dump备份数据库

pg_dump 介绍 pg_dump 是一个用于备份 PostgreSQL 数据库的实用工具。它可以将数据库的内容导出为一个 SQL 脚本文件或其他格式的文件,以便在需要时进行恢复或迁移。 基本用法 pg_dump [选项] [数据库名] 命令选项 -h 或 --host:指定数据库服务器的主…

2024年大数据高频面试题(上篇)

文章目录 HDFS读流程和写流程HDFS读数据流程NameNode和Secondary NameNode工作机制FsimageEdits文件Seen_txidnamenode工作机制HA NameNode如何工作ZKFCHealthMonitorActiveStandbyElectorJouranlNode集群DataNode工作机制DataNode数据损坏压缩MapReduce工作流程MapTask工作流R…

Visual Studio远程调试工具

路径:Visual Studio安装路径/Common7/IDE/Remote Debugger/平台/msvsmon.exe。 平台有x86、x64,x64即可调试x86进程也可调试x64进程。 将平台路径下的所有文件拷贝至其他PC,运行msvsmon.exe。 工具栏选择“工具(T)”…

Ubuntu18.04安装ROS

1.添加ROS软件源 sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.listcurl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc输入指令:curl -s https:…

Python中EMD的安装教程

第一步:首先安装两个包 pip install pyemd pip install EMD-signal第二步:然后,进行改名 安装完之后,找到包所在的位置,然后要将原来pyemd的文件夹名称改为PyEMD:

cleanshot Mac 上的截图工具

笔者闲来无事,最近在找一些mac上好用的工具其中一款就是cleanShot。为什么不用原有的mac自带的呢。因为相对来说编辑功能不算全面,不支持长截图。那有没有一款软件支持关于截图的好用工具呢。 所以笔者找了这款。安装包是直接安装就可使用的。请大家点赞…

Golang | Leetcode Golang题解之第237题删除链表中的节点

题目: 题解: func deleteNode(node *ListNode) {node.Val node.Next.Valnode.Next node.Next.Next }

Python中的UnboundLocalError是什么错误?如何解决?

如果代码报错UnboundLocalError, 大概率犯了以下错误: money 10000 # 当前存款def add_money(value):money valueif __name__ __main__:print(当前存款:, money)add_money(1000)print(当前存款:, money)其中,变量money表示当前存款;函数…

DialogFragment 开发手游sdk代替透明的activity

前言 各位同学大家好 有段时间没有给各位更新文章了,最近在写新的项目 之前的手游sdk 都是用透明的activity 效果有缺陷,现在我改成用这个dialogfragment 来实现 , 废话不多说我们正式开始 效果图 : 为什么要使用dialogfragment: 之前开发手游sdk的时候 我这边都是使用透…

【区块链 + 智慧政务】区块链 +ETC 下一代公路联网收费关键技术优化项目 | FISCO BCOS应用案例

2020 年,我国取消省界收费站项目完成后,随着收费模式与收费方式的变化,形成了以门架为计费单元的新收 费体系:按照车辆通行门架数,RSU 天线读取 ETC 卡、电子标签 OBU 或 CPC 卡内标识的车型信息,车型门架计…

ALlegro批量替换封装?

1,此种情况批量修改同名封装,即改前改后的封装名相同 2,首先将改好后的封装放于库路径下 3,place ----update symbols —package symbols ----选择修改的封装名 4,refresh 完成

开源PS2模拟器 PCSX2 2.0版发布 性能与功能全面升级

时隔多年之后,备受玩家喜爱的PS2模拟器PCSX2迎来了重大更新,2.0版本正式发布!此次更新包含了大量改进,几乎涵盖了模拟器各个方面,为玩家带来更流畅、更便捷的游戏体验。 下载地址: https://pcsx2.net/ 界…