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

【系统架构设计师】十一、系统架构设计(层次架构风格|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.4k次,点赞28次,收藏27次。软件体系结构风格(软件系统架构)是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族,即一个架构定义、一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。架构设计的一个核心问题是能否达到架构级的软件复用。架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。https://shuaici.blog.csdn.net/article/details/140371088

【系统架构设计师】十一、系统架构设计(基于体系结构的软件设计|特定应用领域软件架构)-CSDN博客文章浏览阅读525次,点赞9次,收藏7次。基于体系结构(架构)的软件设计(ABSD)方法是体系结构驱动的,即指构成体系结构的商业、质量和功能需求的组合驱动的。在基于体系结构的软件设计方法中,采用视角与视图来描述软件架构,采用用例来描述功能需求,采用质量场景来描述质量需求。DSSA 就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合。DSSA 就是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考体系结构等组成的开发基础,其目标就是支持在一个特定领域中多个应用的生成。https://shuaici.blog.csdn.net/article/details/140434104 

历年真题练习

        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
 


 

        

相关文章:

  • 解决 Failed to get nested archive for entry BOOT-INF/lib/xxx.jar
  • 【编程语言】C++和C的异同点
  • DBA 数据库管理 表管理 数据批量处理。表头约束
  • SAC-IA粗配准算法记录
  • 景联文科技构建高质量心理学系知识图谱,助力大模型成为心理学科专家
  • AI艺术创作:掌握Midjourney和DALL-E的技巧与策略
  • python爬虫实现简单的代理ip池
  • 微信小程序-实现跳转链接并拼接参数(URL拼接路径参数)
  • 网络安全相关竞赛比赛
  • C语言 杂项笔记
  • 【hadoop大数据集群 2】
  • R语言学习笔记9-数据过滤-分组-融合
  • OpenCV 轮廓检测
  • PyTorch 深度学习实践-逻辑斯蒂回归
  • Three.JS 使用RGBELoader和CubeTextureLoader 添加环境贴图
  • 分享一款快速APP功能测试工具
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Android 架构优化~MVP 架构改造
  • Electron入门介绍
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • laravel5.5 视图共享数据
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Linux中的硬链接与软链接
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • SpringBoot 实战 (三) | 配置文件详解
  • 大型网站性能监测、分析与优化常见问题QA
  • 订阅Forge Viewer所有的事件
  • 给github项目添加CI badge
  • 跨域
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 数据科学 第 3 章 11 字符串处理
  • 用jquery写贪吃蛇
  • 优化 Vue 项目编译文件大小
  • 自制字幕遮挡器
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​一些不规范的GTID使用场景
  • #QT(QCharts绘制曲线)
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (C++)八皇后问题
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (二)JAVA使用POI操作excel
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .NET C# 配置 Options
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .net 获取url的方法