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

news2024/11/23 22:45:15

目录

五、层次架构风格

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.coloradmin.cn/o/1929054.html

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

相关文章

PostgreSQL安装/卸载(CentOS、Windows)

说明:PostgreSQL与MySQL一样,是一款开源免费的数据库技术,官方口号:The World’s Most Advanced Open Source Relational Database.(世界上最先进的开源关系数据库),本文介绍如何在Windows、Cen…

【c++11】什么情况下需要封装set/get

文章目录 一、平凡类型与非平凡类型什么时候使用set/get1.平凡类型2.非平凡类型 二、构造函数参数较多解决办法1.把所有参数放到一个结构体里面2.使用build设计模式 三、如果构造函数众多(参数很多)1.模仿make_unique,就地构造2.基于build设计…

【Typescript】Interface和type的区别;探讨为什么interface赋值给Record需要索引签名

一、Interface与type的区别 1、Interface可以声明合并,type不行 声明同名的类型,Interface同名会合并,而type重名会报错 2、类型扩展的方式不同 Interface基于extends继承扩展基类类型,而type利用 & 扩展 3、type可以被基础…

使用geoipupdate自动更新GeoIP数据库

一、 什么是 GeoIP? 通过在数据库中将地理位置和 IP 地址相互映射,软件程序便可以使用 IP 地址来确定其对应的地理位置,其中包括国家/地区、州/省、城市、邮政编码、纬度/经度、ISP、区号和其他信息。 很多软件都使用 MaxMind 的数据库对 IP…

Hive的基本操作(查询)

1、基础查询 基本语法 select 字段列表|表达式|子查询 from 表(子查询|视图|临时表|普通表) where [not] 条件A and|or 条件B --先:面向原始行进行筛选 group by 字段A[,字段B,...] > 分组【去重处理】 having 聚合条件(非原始字段条件) --再&#x…

超市管理系统 需求分析与设计 UML 方向

一、项目介绍 1.1项目背景 随着经济一体化和电子商务的迅速发展,网络传播信息的速度打破了传统信息传递的模式,互联网的高速发展和计算机应用在各个高校进展迅速,更多信息化产品的突飞猛进,让现代的管理模式也发生了巨大的变化&…

Catena-x标准解读:CX-0005 Item Relationship Service API 2.1.1 项目关系服务

1 介绍 如今,大量数据存储在一个行业供应链的不同参与者之间。通过将数据与其相关上下文连接起来,可以极大地提高数据的价值。 为了实现跨企业链接数据,应用了方面模型、标准化协议和连接数据的标准化方法等标准。Catena-X为访问跨企业链接…

Python学习:实现Python项目并学习如何进行(附70个项目源码)

实现Python项目并学习如何进行,是一个循序渐进的过程,涵盖了多个方面,包括基础知识的学习、技能的提升、项目的规划和实施等。以下是一个基本的指南,帮助你开始学习并实现Python项目: 1. 学习Python基础知识 语法与基…

Linux介绍以及常用命令

目录 1. 什么是Linux 2. Linux的种类 3. CentOS7 超详细的CentOS7.4下载与图文安装 4. 常用的网络适配器种类 5. 安装ssh客户端软件 6. CentOS7的目录结构 7. Linux常用命令详解 1.目录切换命令 -- cd 2. 查看目录下的内容 -- ls 3. 查看当前所在的目录 -- pwd 4. 创…

如何在gitee上创建远程仓库?

登录gitee网站后 填写自己的仓库信息后点击创建 然后来到一个新的界面可以看到自己的仓库地址 这样一个空白的仓库就建立好了 也可以按需选择初始化仓库

结合类型信息(1)——特征丰富的知识库补全网络

1 引言 1.1 问题 首先,隐式对应关系的问题。在联合嵌入模型中,知识库和文本数据之间的关系并不是直接给出的,而是需要通过实体在文本中的共现来推断。这意味着模型必须从上下文中学习实体之间的潜在关联,而不是基于显式的标签或…

利用css设计一套漩涡式网格(grid)布局

在Web开发中,CSS Grid布局系统为我们提供了前所未有的灵活性和控制力,使得创建复杂的二维布局变得轻而易举。今天,我们将探讨一种特殊的Grid布局——漩涡式布局,并通过一个具体的HTML和CSS示例来深入了解其实现方式。 漩涡式Grid布局概述 漩涡式Grid布局是一种视觉上呈现出…

【Linux】Ubuntu 漏洞扫描与修复的吃瘪经历

自从上次“劫持”事情后,项目经理将所有跟安全相关的都推给我了(不算 KPI 又要被白嫖,烦死了)。这次客户又提了一个服务器安全扫描和漏洞修复的“活”,我这边顺手将过程记录一下,就当经验总结跟各位分享一下…

一群追星星的人,对 AI 的盼与怕

面对 AI,有人害怕,有人期盼。 “AI 和画画的、开网约车的、写东西的人有仇吗?”近来成了很多从业者的心声。大模型技术驱动了 AI 的能力进化过临界点,我们普通人根本就跟不上,或快或慢被淘汰。看起来,AI 正…

[ACM独立出版] 2024年虚拟现实、图像和信号处理国际学术会议(VRISP 2024,8月2日-4)

2024年虚拟现实、图像和信号处理国际学术会议(VRISP 2024)将于2024年8月2-4日在中国厦门召开。 VRISP 2024将围绕“虚拟现实、图像和信号处理”的最新研究领域,为来自国内外高等院校、科学研究所、企事业单位的专家、教授、学者、工程师等提供…

SpringBoot中动态注册Bean的方式

测试环境,本文源码 Java:8SpringBoot:2.5.14示例场景:动态注册ProxyServlet,间接实现类似于Nginx的反向代理功能 先理解如何实现动态注册 Bean 。 由于在 SpringBoot 中,先进行 Bean 的定义,…

【前端4】表单 编辑模式、只读模式:HTML的`readonly`、el-input的v-if=“isEdit“

【前端】表单 编辑模式、只读模式 写在最前面一、什么是编辑模式与只读模式&#xff1f;应用场景编辑模式只读模式 二、编辑模式的实现例子只读模式的实现动态切换模式使用HTML的readonly属性使用Vue.js的v-if指令 三、前后端交互 <template>代码块两个字段独立是否直接与…

Auto CAD 2020下载安装教程怎么安装如何使用

Auto CAD 2020下载安装教程 下载链接&#xff1a;https://pan.baidu.com/s/16WR6WdkWqn8WnShZHu8S5Q?pwdhdh7 提取码&#xff1a;hdh7 解压后看到这些文件 进入第一个文件夹后看到安装包&#xff0c;如果缺少了第二个文件&#xff0c;先关闭杀毒软件后重新解压即可 进入…

超全整理,数据管理CDMP认证介绍

CDMP认证概述 CDMP&#xff08;Certified Data Management Professional&#xff09;认证&#xff0c;全称数据管理专业人士认证&#xff0c;是由国际数据管理协会&#xff08;DAMA International&#xff09;推出的权威认证。该认证旨在全面评估个人在数据管理和治理领域的专…

PyMongo Sort 操作:提升你的数据查询效率

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…