




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021/8/141软件体系结构 软件体系结构的基本概念软件体系结构的基本概念 典型的软件体系结构风格典型的软件体系结构风格 基于网络的软件体系结构基于网络的软件体系结构2021/8/142模式分类 低层模式:惯用法低层模式:惯用法(idiom) 中层模式:设计模式中层模式:设计模式(design pattern) 高层模式:体系结构模式高层模式:体系结构模式(architecture pattern)2021/8/143惯用法 惯用法的特点:惯用法的特点: 是与具体语言密切相关的编程经验的总结是与具体语言密切相关的编程经验的总结 描述如何使用给定的语言特征来实现构件的特描述如何使用给定的语言
2、特征来实现构件的特定方面及其关系定方面及其关系 代表最底层的模式代表最底层的模式 惯用法更关注设计的实现惯用法更关注设计的实现 可能是一种特定设计模式的具体实现可能是一种特定设计模式的具体实现2021/8/144设计模式范围范围目的目的创建型模式创建型模式结构型模式结构型模式行为型模式行为型模式类模式类模式工厂方法模式(类)适配器模式解释器模式模板方法模式对象模式对象模式抽象工厂模式建造者模式原型模式单例模式(对象)适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式职责链模式命令模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式访问者模式2021/8/145基本概念 什么是体
3、系结构什么是体系结构目前还没有一个公认的关于软件体系结构的定义,许多专家目前还没有一个公认的关于软件体系结构的定义,许多专家学者从不同角度对软件体系结构进行了描述。学者从不同角度对软件体系结构进行了描述。Bass、Clements和和Kazman给出了如下定义:给出了如下定义:“一个程序或计算机一个程序或计算机系统的软件体系结构是指系统的软件体系结构是指系统的一个或者多个结构。结构中系统的一个或者多个结构。结构中包括软件的构件、构件的外部可见属性以及它们之间的相互包括软件的构件、构件的外部可见属性以及它们之间的相互关系。外部可见属性则是指软件构件提供的服务、性能、使关系。外部可见属性则是指软件
4、构件提供的服务、性能、使用特性、错误处理、共享资源使用等用特性、错误处理、共享资源使用等。”这一定义强调在任一体系结构表述中这一定义强调在任一体系结构表述中“软件构件软件构件”的角色。的角色。2021/8/146 Dewayne Perry和和A1exander Wo1f曾这样定义:曾这样定义:“软件软件体系结构是具有一定形式的结构化元素,即构件的集合,包体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的行加工,数据构件是被加工的信息,连
5、接构件把体系结构的不同部分组合连接起来。不同部分组合连接起来。” 基本概念2021/8/147基本概念框架框架 随着应用的发展和完善,某些带有整体性的应用模式被随着应用的发展和完善,某些带有整体性的应用模式被逐渐固定下来,形成特定的框架,包括逐渐固定下来,形成特定的框架,包括基本构成元素基本构成元素和和关关系系。框架框架是特定应用领域问题的体系结构模式,框架定义是特定应用领域问题的体系结构模式,框架定义了基本构成单元和关系后,开发者就可以集中精力解决业了基本构成单元和关系后,开发者就可以集中精力解决业务逻辑问题。务逻辑问题。 在组织形式上,在组织形式上,框架是一个待实例化的完整系统框架是一个待
6、实例化的完整系统,定义,定义了软件系统的元素和关系,创建了基本的模块,定义了涉了软件系统的元素和关系,创建了基本的模块,定义了涉及功能更改和扩充的插件位置。典型的框架例子有及功能更改和扩充的插件位置。典型的框架例子有MFC框框架架和和Struts框架框架。2021/8/148 体系结构的重要作用体现在以下三个方面体系结构的重要作用体现在以下三个方面 :(1)体系结构的表示有助于风险承担者(项目干系)体系结构的表示有助于风险承担者(项目干系 人)进行人)进行交流交流。 (2)体系结构突出了早期设计决策。)体系结构突出了早期设计决策。 (3)软件体系结构是可传递和可复用的)软件体系结构是可传递和可
7、复用的模型模型。 基本概念 体系结构的重要作用体系结构的重要作用2021/8/149体系结构风格 传统的体系结构传统的体系结构数据流风格数据流风格 (Dataflow):批处理序列、管道过滤器风格批处理序列、管道过滤器风格 (Pipe-and-Filter)调用调用/返回风格返回风格:主程序主程序/子程序、面向对象风格子程序、面向对象风格 (ADT)、层次系统、层次系统 (Layered Systems)事件系统风格事件系统风格:进程通信、事件系统进程通信、事件系统仓库风格仓库风格:数据库系统、超文本系统、黑板系统数据库系统、超文本系统、黑板系统MVC软件体系结构软件体系结构2021/8/14
8、10体系结构风格 基于网络的体系结构基于网络的体系结构客户端(服务器)客户端(服务器)/服务器体系结构服务器体系结构:一层一层/两层两层/三层结构、三层结构、Java EEP2P软件体系结构软件体系结构网格计算体系结构网格计算体系结构SOA与与Web Services云计算体系结构云计算体系结构2021/8/1411当输入数据经过一系列的计算和操作构件的变换形成输当输入数据经过一系列的计算和操作构件的变换形成输出数据时,可以应用这种体系结构。出数据时,可以应用这种体系结构。管道管道/ /过滤器过滤器、批处理序列批处理序列都属于数据流风格。都属于数据流风格。管道管道/ /过滤器结构如下图所示:过
9、滤器结构如下图所示:数据流风格 数据流风格数据流风格 管道管道/ /过滤器结构过滤器结构 Linux系统中的命令序列堆叠的数据过程(图像处理)2021/8/1412 从上图可看出,管道从上图可看出,管道/过滤器结构拥有一组被称为过滤器结构拥有一组被称为过滤过滤器器(filter)的构件,这些构件通过)的构件,这些构件通过管道管道(pipe)连接,管)连接,管道将数据从一个构件传送到下一个构件。道将数据从一个构件传送到下一个构件。 每个过滤器独立于其上游和下游的构件而工作,过滤器每个过滤器独立于其上游和下游的构件而工作,过滤器的设计要针对某种形式的数据输入,并且产生某种特定形的设计要针对某种形式
10、的数据输入,并且产生某种特定形式的数据输出。式的数据输出。 如果数据流退化成为单线的变换,则称为如果数据流退化成为单线的变换,则称为批处理序列批处理序列(batch sequential)。这种结构接收一批数据,然后应)。这种结构接收一批数据,然后应用一系列连续的构件(过滤器)变换它。用一系列连续的构件(过滤器)变换它。数据流风格2021/8/1413管道管道/ /过滤器风格具有以下过滤器风格具有以下优点优点:(1 1)使得软构件具有良好的隐蔽性和高内聚、低耦合的特)使得软构件具有良好的隐蔽性和高内聚、低耦合的特 点。点。(2 2)允许设计者将整个系统的输入)允许设计者将整个系统的输入/ /输
11、出行为看成是输出行为看成是多个过多个过 滤器的行为的简单合成滤器的行为的简单合成。 (3 3)支持软件复用支持软件复用。只要提供适合在两个过滤器之间传送。只要提供适合在两个过滤器之间传送 的数据,任何两个过滤器都可被连接起来。的数据,任何两个过滤器都可被连接起来。(4 4)系统维护和增强系统性能简单。)系统维护和增强系统性能简单。新的过滤器新的过滤器可以添加可以添加 到现有系统中来;到现有系统中来;旧的旧的可以被改进的过滤器替换掉。可以被改进的过滤器替换掉。(5 5)允许对一些如吞吐量、死锁等属性的分析。)允许对一些如吞吐量、死锁等属性的分析。(6 6)支持并行执行支持并行执行。每个过滤器是作
12、为一个单独的任务完。每个过滤器是作为一个单独的任务完 成,因此可与其他任务并行执行。成,因此可与其他任务并行执行。数据流风格2021/8/1414管道管道/过滤器风格主要过滤器风格主要缺点缺点如下:如下:(1)通常导致进程成为批处理的结构。这是因为虽然过滤)通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换。将每个过滤器看成一个完整的从输入到输出的转换。(2)不适合处理交互不适合处理交互 的应用。当需要增量地显示改变时,的应用。当需要增量地显示改变时,
13、这个问题尤为严重。这个问题尤为严重。(3)因为在数据传输上没有通用的标准,每个过滤器都)因为在数据传输上没有通用的标准,每个过滤器都增增加了解析和合成数据的工作加了解析和合成数据的工作,这样就导致了系统性能下降,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。并增加了编写过滤器的复杂性。数据流风格2021/8/1415在此类体系结构中,存在以下在此类体系结构中,存在以下3种子风格种子风格。 主程序主程序/子程序体系结构子程序体系结构(C语言?)语言?) 这种传统的程序结构将功能分解为一个控制层次,其这种传统的程序结构将功能分解为一个控制层次,其中中“主主”程序调用一组程序构件,这些程序构
14、件又去调用别程序调用一组程序构件,这些程序构件又去调用别的程序构件,如下图所示。这种结构总体上为树状结的程序构件,如下图所示。这种结构总体上为树状结构,可以在底层存在公共模块。构,可以在底层存在公共模块。调用返回风格 调用调用返回风格返回风格(常见,发挥主要作用)(常见,发挥主要作用) 2021/8/1416主程序主程序/子程序体系结构的子程序体系结构的优点优点如下如下:(1)可以使用)可以使用自顶向下自顶向下,逐步分解逐步分解的方法得到体系结构的方法得到体系结构图,典型的拓扑结构为树状结构。基于定义图,典型的拓扑结构为树状结构。基于定义使用关系对子使用关系对子程序进行分解,使用过程调用作为程
15、序之间的交互机制。程序进行分解,使用过程调用作为程序之间的交互机制。(2)采用程序设计语言支持的单线程控制。)采用程序设计语言支持的单线程控制。其主要其主要缺点缺点如下如下:(1)子程序的正确性难于判断。需要运用层次推理来判断)子程序的正确性难于判断。需要运用层次推理来判断子程序的正确性,因为子程序的正确性取决于它调用的子程子程序的正确性,因为子程序的正确性取决于它调用的子程序的正确性。序的正确性。(2)子系统的结构不清晰。通常可以将多个子程序合成为)子系统的结构不清晰。通常可以将多个子程序合成为模块。模块。调用返回风格2021/8/1417 面向对象的调用面向对象的调用返回风格返回风格 系统
16、的构件系统的构件(类类/对象对象)封装了数据和必须应用到该数据上的操封装了数据和必须应用到该数据上的操作,构件间通过消息传递进行通信与合作。与主程序作,构件间通过消息传递进行通信与合作。与主程序/子程子程序的体系结构相比,面向对象风格中的对象交互会复杂一序的体系结构相比,面向对象风格中的对象交互会复杂一些。面向对象风格与网络应用的需求在分布性、自治性、些。面向对象风格与网络应用的需求在分布性、自治性、协作性、演化性等方面具有内在的一致性。协作性、演化性等方面具有内在的一致性。 面向对象风格具有以下面向对象风格具有以下优点优点: :(1 1)因为对象对其他对象隐藏它的表示,所以可以改变一)因为对
17、象对其他对象隐藏它的表示,所以可以改变一 个对象的表示,而不影响其他对象。个对象的表示,而不影响其他对象。(2 2)设计者可将一些数据存取操作的问题分解成一些交互)设计者可将一些数据存取操作的问题分解成一些交互 的代理程序的集合。的代理程序的集合。调用返回风格2021/8/1418其其缺点缺点如下如下:(1)为了使一个对象和另一个对象通过过程调用等进行)为了使一个对象和另一个对象通过过程调用等进行 交互,必须知道对象的标识。只要一个对象的标识交互,必须知道对象的标识。只要一个对象的标识 改变了,就必须修改所有其他明确调用它的对象。改变了,就必须修改所有其他明确调用它的对象。(2)必须修改所有显
18、式调用它的其他对象,并消除由此)必须修改所有显式调用它的其他对象,并消除由此 带来的一些副作用。例如,如果带来的一些副作用。例如,如果A使用了对象使用了对象B,C 也使用了对象也使用了对象B,那么,那么,C对对B的使用所造成的对的使用所造成的对A 的影响可能是料想不到的。的影响可能是料想不到的。 调用返回风格2021/8/1419 层次结构层次结构 层次结构的基本结构如下图所示。在这种体系结构中,整层次结构的基本结构如下图所示。在这种体系结构中,整个系统被组织成一个分层结构,每一层为上层提供服务,并个系统被组织成一个分层结构,每一层为上层提供服务,并作为下一层的客户。作为下一层的客户。调用返回
19、风格 各种构件 过程调用 各类网络协议栈层级之间的调用-返回避免复杂性2021/8/1420 这种风格支持基于可增加抽象层的设计。允许将复杂问这种风格支持基于可增加抽象层的设计。允许将复杂问题分解成一个增量步骤序列的实现。题分解成一个增量步骤序列的实现。由于每一层最多只影响由于每一层最多只影响两层两层,同时只要给相邻层提供,同时只要给相邻层提供相同的接口相同的接口,允许每层用不同,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。的方法实现,同样为软件复用提供了强大的支持。 调用返回风格2021/8/1421调用返回风格2021/8/1422调用返回风格765网络层网络层321应用层应
20、用层表示层表示层会话层会话层报文流报文流报文流报文流报文流报文流应用层应用层表示层表示层会话层会话层4传输层传输层段流段流传输层传输层转接节点转接节点网络层网络层网络层网络层 网络层网络层协议协议链路层链路层 链路层链路层 链路层链路层协议协议转接节点转接节点分组流分组流子子 网络层网络层网网内内 链路层链路层 帧流帧流 链路层链路层部部物理层物理层物理层物理层协议协议协协物理层物理层 议议 物理层物理层通信子网通信子网比特流比特流物理层物理层分层系统实例:分层系统实例: ISO/OSI网络的分层模型网络的分层模型2021/8/1423调用返回风格用户用户Shell解释运行解释运行语言处理、系
21、统工具、系统应用程序语言处理、系统工具、系统应用程序系统调用系统调用操作系统内核操作系统内核(System kernel)基本输入输出基本输入输出(BIOS)计算机硬件计算机硬件(CPU、存储器、存储器、I/O等等)分层系统实例:计算机操作系统分层系统实例:计算机操作系统(OS)的层次结构的层次结构2021/8/1424层次结构具有以下层次结构具有以下优点优点:(1)支持基于抽象程度递增的系统设计,使设计者可以把)支持基于抽象程度递增的系统设计,使设计者可以把 一个复杂系统按递增的步骤进行分解。一个复杂系统按递增的步骤进行分解。 (2)支持功能增强,因为每一层至多和相邻的上下层交)支持功能增强
22、,因为每一层至多和相邻的上下层交 互,因此,功能的改变最多影响相邻的内外层。互,因此,功能的改变最多影响相邻的内外层。(3)支持复用。支持复用。只要提供的服务接口定义不变,同一层的只要提供的服务接口定义不变,同一层的 不同实现可以交换使用。这样,就可以定义一组标准不同实现可以交换使用。这样,就可以定义一组标准 的接口,从而允许各种不同的实现方法。的接口,从而允许各种不同的实现方法。调用返回风格2021/8/1425其其缺点缺点如下如下:(1)并不是)并不是每个系统都可以很容易地划分为分层的模式每个系统都可以很容易地划分为分层的模式, 甚至即使一个系统的逻辑结构是层次化的,出于对系甚至即使一个系
23、统的逻辑结构是层次化的,出于对系 统性能的考虑,系统设计师不得不把一些低级或高级统性能的考虑,系统设计师不得不把一些低级或高级 的功能综合起来。的功能综合起来。(2)很难找到一个合适的、正确的层次抽象方法。)很难找到一个合适的、正确的层次抽象方法。调用返回风格2021/8/1426数据流与调用-返回2021/8/1427事件系统风格 事件系统风格(独立构件)事件系统风格(独立构件) GUI编程 Windows操作系统中Hook机制 Jquery中的回调2021/8/1428事件系统风格2021/8/1429事件系统风格 事件系统风格事件系统风格 2021/8/1430典型的体系结构风格2021
24、/8/1431事件系统风格2021/8/1432事件系统风格为何称为为何称为“独立构件独立构件”风格?风格? 这种风格的主要特点是:这种风格的主要特点是:事件的触发者并不知道哪事件的触发者并不知道哪些构件会被这些事件影响,相互保持独立些构件会被这些事件影响,相互保持独立。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用;各个构件之间彼此之间无连接关系,各自独立存在,通过对事件的发布和注册实现关联对事件的发布和注册实现关联;2021/8/1433事件系统风格遇到断点,编辑器将源代码滚动到断点处,变量监测器则更新当前变量值遇到断点,编辑器将源代码滚动到断点处,变量监测器则更新当前变量值并显示
25、出来。并显示出来。如何完成如何完成 ?2021/8/1434事件系统风格事件系统的基本构成与工作原理事件系统的基本构成与工作原理2021/8/1435事件系统风格 EventSource: debugger (调试器调试器) EventHandler: editor and variable monitor (编辑器与变量监视器编辑器与变量监视器) EventManager: IDE (集成开发环境集成开发环境) 编辑器与变量监视器向调试器注册,接收编辑器与变量监视器向调试器注册,接收“断点事件断点事件”; 一旦遇到断点,调试器发布事件,从而触发一旦遇到断点,调试器发布事件,从而触发“编辑器编
26、辑器”与与“变量监测变量监测器器” ; 编辑器将源代码滚动到断点处,变量监测器则更新当前变量值并显示编辑器将源代码滚动到断点处,变量监测器则更新当前变量值并显示出来出来。其他的例子?Windows本身就是事件驱动的2021/8/1436事件系统风格事件分发的策略事件分发的策略2021/8/1437事件系统风格无独立的事件派遣模块无独立的事件派遣模块 通过通过“观察者模式观察者模式”实现实现 模块向事件发送模块注册某些消息模块向事件发送模块注册某些消息 当某一模块发出某一事件时,它自动将这些事件发布给那些曾经当某一模块发出某一事件时,它自动将这些事件发布给那些曾经向自己注册过此事件的模块向自己注
27、册过此事件的模块有独立的事件派遣模块有独立的事件派遣模块 广播式广播式(All broadcasting) :派遣模块将事件广播到所有的模块,:派遣模块将事件广播到所有的模块,但只有感兴趣的模块才去取事件并触发自身的行为;但只有感兴趣的模块才去取事件并触发自身的行为; 选择广播式选择广播式(Selected broadcasting) :派遣模块将事件送到那些:派遣模块将事件送到那些已经注册了的模块中。已经注册了的模块中。2021/8/1438事件系统风格我对此事件感兴趣,触发我的行为我对此事件不感兴趣,不触发我的行为我们都得到了事件广播式事件派遣广播式事件派遣2021/8/1439事件系统风
28、格选择广播式事件派遣选择广播式事件派遣WIN32 Event HandlingApplications call the OS API(应用程应用程序调用操作系统的序调用操作系统的API 注册自身及事件注册自身及事件处理方法处理方法)OS creates events to notify the applications (操作系统根据应用系统的操作系统根据应用系统的行为,创建事件并通知其他已注册的应行为,创建事件并通知其他已注册的应用程序用程序)user input occurred (mouse, keyboard)messages from the network arrived, .t
29、ime-out happened, .application opened, system will be shut down, .2021/8/1441WIN32 Event Handling应用程序1 的消息循环: 循环接收属于应用程序1的消息Windows系统的消息循环: 循环接收属于操作系统的消息消息1消息2消息m应用程序2 的消息循环: 循环接收属于应用程序2的消息消息1消息2消息m应用程序n 的消息循环: 循环接收属于应用程序n的消息消息1消息2消息m用户产生的事件或其他应用程序发出的消息依据应用程序队列和消息确定向哪个应用程序发送消息1消息2消息m依据消息和对象控制序列找到对应该
30、消息的对象程序执行之对象2对象n对象1对象2对象n对象1对象2对象n对象113425672021/8/1442数据库系统数据库系统、超文本系统超文本系统和和黑板系统黑板系统都属于仓库风都属于仓库风格。在这种风格中,格。在这种风格中,数据数据仓库(如文件或数据库)仓库(如文件或数据库)位于这种体系结构的中心位于这种体系结构的中心,其他构件会经常访问该数其他构件会经常访问该数据仓库,并对仓库中的数据仓库,并对仓库中的数据进行增加、修改或删除据进行增加、修改或删除操作。右图为一个典型的操作。右图为一个典型的仓库风格的体系结构。仓库风格的体系结构。仓库风格 仓库风格仓库风格 2021/8/1443仓库
31、风格 仓库风格实例仓库风格实例注册表注册表 2021/8/1444仓库风格 仓库风格实例仓库风格实例注册表注册表 2021/8/1445仓库风格 仓库风格实例仓库风格实例剪贴板剪贴板2021/8/1446仓库风格 仓库风格实例仓库风格实例剪贴板剪贴板2021/8/1447仓库风格 仓库风格的连接件仓库风格的连接件2021/8/1448 黑板构件负责协调信息在客户间的传递黑板构件负责协调信息在客户间的传递,当用户感兴趣的,当用户感兴趣的数据发生变化时,它将数据发生变化时,它将通知客户软件通知客户软件。 黑板系统的组成如下图所示:黑板系统的组成如下图所示:仓库风格 黑板结构黑板结构2021/8/1
32、449 模型:包含核心功能和数据模型:包含核心功能和数据 (核心业务逻辑)(核心业务逻辑) 视图:向用户显示信息视图:向用户显示信息 控制器:处理用户输入控制器:处理用户输入MVC风格 MVC(Model-View-Controller)的组成)的组成2021/8/1450MVC风格 将将人机交互人机交互从核心功能中从核心功能中分离分离出来出来(M) 模型对用户来说是透明的,用户只需要观察视图模型对用户来说是透明的,用户只需要观察视图(V) 用户与模型的交互通过控制器提供的安全方法来实现用户与模型的交互通过控制器提供的安全方法来实现(C) MVC的目的的目的 具有灵活人具有灵活人-机界面的交互
33、式应用程序机界面的交互式应用程序 可以灵活选择不同的信息显示方式 可以灵活选择用户的输入方式 针对不同的用户角色,提供不同的用户界面针对不同的用户角色,提供不同的用户界面 不同用户具有不同权限,操作的方式也有所不同 MVC的应用领域的应用领域2021/8/1451 封装了内核功能和数据封装了内核功能和数据 业务逻辑(软件的核心) 数据以及访问它们的函数(视图组件使用) 执行特定应用程序处理的过程(控制器代表用户调用) 模型对于用户来说是不可见的模型对于用户来说是不可见的(M与与V独立独立) 模型独立于特定输出表示或者输入方式模型独立于特定输出表示或者输入方式(M与与C独立独立) 用户只能通过控
34、制器操作模型用户只能通过控制器操作模型(C是是M与与V之间的桥梁之间的桥梁)MVC风格 模型(模型(Model)2021/8/1452 向用户显示信息向用户显示信息 不同的视图使用不同的方法呈现信息 每个视图组件都有一个更新函数,这个函数被模型变更通知激活 这个函数被激活(此时模型已经改变)后,将使得视图重新和模型一致 在初始化阶段,视图向模型登记请求变更通知(表) 从模型获得数据从模型获得数据 通过状态查询函数实现 例如:定时刷新MVC风格 视图(视图(View)2021/8/1453每个视图有一个相关的控制器组件每个视图有一个相关的控制器组件(一一对应一一对应) 控制器组件接受控制器组件接
35、受事件事件,并翻译成输入,并翻译成输入 事件如何发送到控制器由用户界面平台决定 事件被翻译成为对模型或者视图的请求 如果控制器的行为依赖于模型的状态,那么控制器也需要向模型登记请求变更通知 例如:用户点击按钮,按钮的事件响应函数将采取相应的措施处理用户要求 用户仅仅通过控制器与系统交互用户仅仅通过控制器与系统交互MVC风格 控制器(控制器(Controller)2021/8/1454 一个模型可对应多个视图一个模型可对应多个视图 如果用户通过一个视图的控制器改变了模型中的数据,那么依赖于该数据的其他视图也应该反映出这样的变化 一旦模型的数据发生了变化,模型需要通知所有相关的视图做出相应的变化
36、工作原理:工作原理: 模型维护了一个表 所有视图还有一些控制器在这个表中登记了对变更通知的需求 模型状态的改变将触发变更-传播机制,每个在表中登记的视图和控制器都会收到变更通知MVC风格 变更变更-传播机制传播机制观察者模式?观察者模式?事件架构?事件架构?2021/8/1455 MVC是一种体系结构是一种体系结构 通过各类技术的组合来实现 通过各类框架实现(struts等) 最终实现:前台页面设计与核心业务逻辑分离。MVC风格 MVC的实现的实现2021/8/1456体系结构风格 基于网络的体系结构基于网络的体系结构客户端(浏览器)客户端(浏览器)/服务器体系结构服务器体系结构:一层一层/两
37、层两层/三层结构、三层结构、Java EESOA与与Web Services云计算体系结构云计算体系结构2021/8/1457 1965-1985:以大型机为核心的:以大型机为核心的集中式处理模式集中式处理模式; 1986-1990:以:以PC/文件服务器文件服务器为核心的为核心的文件共享计算模式文件共享计算模式; 1990-1996:以:以C/S结构结构为主流的为主流的分布式计算模式分布式计算模式; 1996- :以:以Web为核心、为核心、B/S结构结构为主流的为主流的分布式计算模式分布式计算模式; 2000- :以各类移动设备为核心的:以各类移动设备为核心的普适计算模式;普适计算模式;
38、2005- :以:以Grid、P2P、Web2.0等为核心的等为核心的分布式计算模式分布式计算模式;客户端/服务器体系结构 计算模式经历了以下六代:计算模式经历了以下六代:2021/8/1458 一个应用系统被分为两个逻辑上分离的部分,每一部分充当不同的角色、完成不同的功能,多台计算机共同完成统一的任务。 客户机客户机(前端,前端,front-end):业务逻辑、与服务器通讯的接口; 服务器服务器(后端:后端:back-end):与客户机通讯的接口、业务逻辑、数据管理。 一般的:一般的: 客户机为完成特定的工作向服务器发出请求;客户机为完成特定的工作向服务器发出请求; 服务器处理客户机的请求并
39、返回结果。服务器处理客户机的请求并返回结果。客户端/服务器体系结构 客户机客户机/服务器服务器 (Client-Server Architecture)2021/8/1459 两层C/S 三层C/S 多层C/S客户端/服务器体系结构 C/S结构发展历程结构发展历程客户界面数据库服务器客户界面数据库服务器业务逻辑服务器客户界面数据库服务器业务逻辑服务器Web服务器2021/8/1460客户端/服务器体系结构 两层两层C/S用户1用户2用户3用户4用户5Print ServerLink/RxLPT1LPT2COMPower/TXPWROKWIC0ACT/CH0ACT/CH1WIC0ACT/CH0A
40、CT/CH1ETHACTCOL其他公用设备打印机调制解调器InternetIntranet数据库服务器2021/8/1461客户端/服务器体系结构 两层两层C/SClientServer2021/8/1462客户端/服务器体系结构 两层两层C/S 基本构件:基本构件: 数据库服务器:存放数据的数据库、负责数据处理的业务逻辑; 客户机应用程序: GUI:用户界面 业务逻辑:利用客户机上的应用程序对数据进行处理; 连接件:连接件:经由网络的调用经由网络的调用-返回机制或隐式调用机制。返回机制或隐式调用机制。 客户机服务器:客户机向服务器发送请求,并接收返回结果。2021/8/1463客户端/服务器
41、体系结构 两层两层C/S 业务逻辑的划分比重:业务逻辑的划分比重:在客户端多一些还是在服务器端多一些?在客户端多一些还是在服务器端多一些? (胖客户端:客户端执行大部分的数据处理操作) (瘦客户端:客户端具有很少或没有业务逻辑)2021/8/1464客户端/服务器体系结构 两层两层C/S应用应用 两两层层C/S架构通常被用在那些管理与操作不太复杂的非实时的信息架构通常被用在那些管理与操作不太复杂的非实时的信息处理系统处理系统 适合于轻量级事务适合于轻量级事务 客户机对服务器的请求少,数据传输量少客户机对服务器的请求少,数据传输量少 当业务逻辑较少变化以及用户数当业务逻辑较少变化以及用户数少于少
42、于100时,两层时,两层C/S架构架构的性能的性能较好较好2021/8/1465客户端/服务器体系结构 三层三层C/S 在客户端与数据库服务器之间增加了一个中间层在客户端与数据库服务器之间增加了一个中间层 中间层可能为:事务处理监控服务器、消息服务器、应用服务器中间层可能为:事务处理监控服务器、消息服务器、应用服务器 中间层负责消息排队、业务逻辑执行、数据传输等功能中间层负责消息排队、业务逻辑执行、数据传输等功能2021/8/1466客户端/服务器体系结构 三层三层C/S应用应用输入数据输出数据请求按钮表示层业务处理开始SQL 请求结束SQL 请求开始业务处理结束数据存取请求业务处理程序业务处
43、理请求和业务处理所需的全部输入数据全部处理结束DBMS 执行SQL数据层业务处理开始数据存取请求业务处理结束数据存取程序数据登录/更新/读取的请求数据登录/更新/读取的结果功能层2021/8/1467客户端/服务器体系结构 三层三层C/S 表示层表示层: 用户接口部分,担负着用户与应用之间的对话功能;用户接口部分,担负着用户与应用之间的对话功能; 检查用户的输入,显示应用的输出;检查用户的输入,显示应用的输出; 通常使用通常使用GUI; 在变更时,只需要改写显示控制和数据检查程序,而不影响在变更时,只需要改写显示控制和数据检查程序,而不影响其他层;其他层; 不包含或包含一部分业务逻辑。不包含或
44、包含一部分业务逻辑。2021/8/1468客户端/服务器体系结构 三层三层C/S 表示层表示层: 用户接口部分,担负着用户与应用之间的对话功能;用户接口部分,担负着用户与应用之间的对话功能; 检查用户的输入,显示应用的输出;检查用户的输入,显示应用的输出; 通常使用通常使用GUI; 在变更时,只需要改写显示控制和数据检查程序,而不影响在变更时,只需要改写显示控制和数据检查程序,而不影响其他层;其他层; 不包含或包含一部分业务逻辑。不包含或包含一部分业务逻辑。2021/8/1469客户端/服务器体系结构 三层三层C/S 功能层功能层: 应用系统的主体,包括大部分业务处理逻辑应用系统的主体,包括大
45、部分业务处理逻辑 (通常以业务构件通常以业务构件的形式存在,如的形式存在,如JavaBean/EJB/COM等等); 从表示层获取用户的输入数据并加以处理;从表示层获取用户的输入数据并加以处理; 处理过程中需要从数据层获取数据或向数据层更新数据;处理过程中需要从数据层获取数据或向数据层更新数据; 处理结果返回给表示层。处理结果返回给表示层。2021/8/1470客户端/服务器体系结构 三层三层C/S 数据层数据层: DMBS; 接受功能层的数据查询请求,执行请求,并将查询结果返回接受功能层的数据查询请求,执行请求,并将查询结果返回给功能层;给功能层; 从功能层接受数据存取请求,并将数据写入数据
46、库;从功能层接受数据存取请求,并将数据写入数据库; 请求的执行结果也要返回给功能层。请求的执行结果也要返回给功能层。2021/8/1471客户端/服务器体系结构 三层三层C/S结构的物理结构结构的物理结构 两层两层C/S已经将数据层分离出来已经将数据层分离出来 三层三层C/S则要将则要将表示层与功能层分离开来表示层与功能层分离开来,形成独立的程序,并,形成独立的程序,并使二者之间的接口简洁明了。使二者之间的接口简洁明了。 问题:这三个层次在物理上是如何分布的?问题:这三个层次在物理上是如何分布的?2021/8/1472客户端/服务器体系结构 基于集群基于集群(Cluster)的的C/S物理分布
47、物理分布 事实上,功能层通常事实上,功能层通常不是只驻留在同一台服务器上不是只驻留在同一台服务器上,数据层也是,数据层也是如此;如此; 如果如果功能层功能层(或数据层或数据层)分布在多台服务器上分布在多台服务器上,那么就形成了基于,那么就形成了基于集群集群(Cluster)的的C/S物理分布模式。物理分布模式。2021/8/1473客户端/服务器体系结构 三层三层C/S结构的优点结构的优点 在用户数目较多的情况下,三层在用户数目较多的情况下,三层C/S结构将结构将极大改善性能与灵活极大改善性能与灵活性性(通常可支持数百并发用户,通过集群可达数万并发用户通常可支持数百并发用户,通过集群可达数万并
48、发用户); 允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能能提高系统和软件的可维护性和可扩展性提高系统和软件的可维护性和可扩展性 允许更灵活有效地选用相应的平台和硬件系统,并且这些平台和允许更灵活有效地选用相应的平台和硬件系统,并且这些平台和各个组成部分可以具有各个组成部分可以具有良好的可升级性和开放性良好的可升级性和开放性。2021/8/1474客户端/服务器体系结构 浏览器浏览器/服务器服务器(Browser/Server Architecture) 浏览器浏览器/服务器服务器(B/S)是三层是三层C/S风格的一种实现
49、方式。风格的一种实现方式。 表现层:浏览器 逻辑层: Web服务器 应用服务器 数据层:数据库服务器2021/8/1475客户端/服务器体系结构 浏览器浏览器/服务器服务器(Browser/Server Architecture) J2EE平台典型平台典型B/S结构的实现方式结构的实现方式2021/8/1476客户端/服务器体系结构 B/S架构的优点架构的优点 基于基于B/S体系结构的软件,系统安装、修改和维护全在服务器端体系结构的软件,系统安装、修改和维护全在服务器端解决,解决,系统维护成本低系统维护成本低: 客户端无任何业务逻辑,用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。 良好的灵活性和可扩展性:对于环境和应用条件经常变动的情况,只要对业务逻辑层实施相应的改变,就能够达到目的。 三层模式成为真正意义上的三层模式成为真正意义上的“瘦客户端瘦客户端”,从而具备了很高的稳,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁广告职业学院《精准医学和癌症》2023-2024学年第二学期期末试卷
- 天津医学高等专科学校《创业基础与创新思维》2023-2024学年第二学期期末试卷
- 湖南农业大学《环境工程专业实验废气》2023-2024学年第二学期期末试卷
- 青岛农业大学海都学院《中级财务会计1》2023-2024学年第二学期期末试卷
- 共青科技职业学院《C语言》2023-2024学年第二学期期末试卷
- 合肥科技职业学院《缅甸语翻译技能实训》2023-2024学年第二学期期末试卷
- 西安外国语大学《景观设计(二)》2023-2024学年第二学期期末试卷
- 西安音乐学院《网络舆情概论》2023-2024学年第二学期期末试卷
- 广东东软学院《集散控制与现场总线实验》2023-2024学年第二学期期末试卷
- 北京工商大学《汽车制造装备》2023-2024学年第二学期期末试卷
- 2025年医疗行业反垄断监管政策变化与合规经营关键指引报告
- 《支气管镜检查技术》课件
- 育肥猪考试试题及答案
- 肿瘤免疫治疗靶点发现与验证2025年新药研发案例研究报告
- 监考员招聘试题及答案
- 班组长管理培训讲义
- 2025年中考数学三轮冲刺训练一次函数中几何压轴题综合训练
- 2025-2030交通信息化产业规划专项研究报告
- 中考英语词汇电子版单选题100道及答案
- 北京民政局离婚协议书
- 2025年中考政治总复习必考重点知识复习提纲
评论
0/150
提交评论