软件体系结构课件_(第六课)其它常见类型的体系结构风格

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

体系结构风格TheBlackboardModelKnowledgeSources把问题分成几个部分,每个部分独立计算响应黑板上的变化向黑板中添加知识松耦合BlackboardDataStructure包含解域的全部状态知识源互相作用的唯一媒介其中的知识一般以层次的形式组织Control让知识源随机的响应事件完全由黑板驱动,决策解决问题的步骤一般用于:专家系统(没有现成、直接的解的情况下)黑板中的知识可能相互矛盾或者有错误Data-centered/shareddataImpliesthatdataisatthecentreofthearchitectureeitherdatabases,web-serversystemsorblackboardsystems.ClientClientClientClientDataStore•Clientsworkindependently.•Allowssystemchange.•Easilymaintainable.•Newclientscanbeadded(dependingontheloadlimitsofthedatastore)Otherstyle…Client-ServerStyle适用于这样的应用系统:它的数据和处理分布在一定范围的多个构件上,构件之间通过网络连接。简单的客户机/服务器系统结构中,应分成两部分。客户机负责用户输入和展示,服务器则处理低层的功能,例如数据库的运作等。如果一个系统被划分为两类不同的但相互联系的组成部分,其中一方提出对信息或服务的请求,而另一方提供这种信息或者服务,那么这种体系结构就可看作是一种客户机/服务器模型。2-tier客户机/服务器结构客户程序直接访问数据库,因而每一台客户机都必须安装数据库驱动程序,增加了系统安装与维护的工作量。由于数据库由众多的客户程序直接访问,造成系统数据的完整性与安全性难以维护。两层的结构可扩展性较差,由于客户端组件含有数据库访问功能,对软件系统的业务逻辑、数据库访问,甚至数据库本身的任何修改常常导致要求在所有客户机上重新部署客户端组件。数据库服务器客户机Client/Servers表示一种把客户应用程序和它们使用的服务分离开的系统视图。一种基于功能的分解。serverclientclientclient方法调用方法调用方法调用构件之间通过网络相连接数据和处理分布在一定范围内的多个构件上Component:server(服务器组件)client(客户组件)Connector:某种进程间的通信机制,通常是基于RPC的交互协议;请求-应答的非对称形式。Server组件server拥有接口,接口能描述它提供的服务向多个客户提供服务,它永远处在激活状态,监听用户请求被动在收到服务请求之前不了解客户机的身份client向服务器请求服务主动通信一般是成对的,且由客户组件发起;往返风格客户需了解服务器的身份说明通信一般是成对的,且由客户组件发起理想情况下,这种访问是透明的,即客户和服务器可以运行在同一台机器上,也可以跨进程、跨机器运行。是编程语言中过程/函数/方法调用的一种泛化Client和Server都是软件的组件,而非两台机器例子:远程文件系统,客户端向网络上的文件服务器请求并取得所需文件。数据库服务器接收客户发送的sql请求。C/S模型和socket概念Socket编程:使用tcp/ip协议或者udp协议与网络中的其它计算机进行通信。一个server多个client的情况;为了区分应用程序(client),引入“端口”的概念,每个端口有一个16位的标识符,称为端口号。端口号和主机的ip地址合起来,就构成了套接字socket,它能在全网范围内唯一标示某个主机的某个端口,也即套接字能唯一标识某个应用程序的位置。Tcp/ip协议也采用了client/server模型,使用tcp/ip协议的程序分为两类。客户程序一般可以任意选择其进行通信的端口的端口号,而服务程序往往使用较固定的端口号。客户程序如要使用某台主机相应的服务,就只要往该服务对应的套接字上发送数据即可。Multi-databasesBroker风格(代理风格)clientclientclientserverserverbroker优点有利于分布式的数据组织构件间位置透明,客户和服务器都不用考虑对方的运行位置具有良好的可扩展性,易于对服务器进行修改、扩展或增加服务。C2风格C2风格CCCCC构件连接件通信链接CCCC2风格是一种基于构件和消息的体系结构风格是一种层次网络某一构件只能感知层次高于自己的构件所提供的服务,而不能感知层次比自己更低的构件的服务C2风格的通信规则要求,构件之间的所有交互必须以消息传递的方式实现。C2风格主要用于具有图形化用户界面的应用程序C2风格中的构件对话和约束内部对象域转换器请求通知对话模块接收所有的通知和请求,并将它们映射到内部对象模块的操作。域转换器把构件的请求转化为接收方能够接收的特定形式,同时也把通知转化为构件能够理解的形式。当内部对象的状态发生改变时,内部对象会向下发送一个通知。下层构件的对话模块会对此做出反应,并在适当的情况下调用其自身的内部对象模块。C2风格有以下几个特点:(1)组成规则:C2也是以构件和连接件为基础的。C2风格中定义了构件和连接件的顶端和底端。构件的顶端与连接件的底端相连接构件的底端与连接件的顶端相连接对连接到某个连接件上的构件或连接件的数目没有限制如果是两个连接件发生联系,必须要从一者的底端到另一者的顶端构件和构件之间不能直接相连C2风格(2)通信规则所有构件间的通信必须通过消息来实现,这是构件之间的唯一通信途径。每个构件都有一个顶端域、底端域。构件的顶端域定义了构件可以对哪些通知做出响应,以及可以发出哪些请求;构件的底端域定义了可以向下层发出哪些通知,以及可以响应下层的哪些请求。C2风格的例子——KLAX分为三个逻辑组在最顶层,是封装了游戏状态的组件;这些组件在内部状态改变的时候发出通知;gamelogic组件request游戏状态的改变以和游戏规则相一致;Artist组件也捕获游戏状态改变的通知,引起对自身描述的改变。每一个Artist组件都维护了一套抽象图形对象,当状态改变时,发送状态改变notify给下层,以期更底层的图形组件能实施这种改变;截获关于tile对象的notifyLayoutManaget组件接受所有来自于artist的notify消息,并且弥补坐标误差以使得图形对象画在正确的位置。Graphicsbinding组件接收所有关于artist图形对象的通知,并将它们转换为对windows系统的相关的调用。用户的事件,例如,按下键盘的键,被转换为对artist对象的相应的request。特点1.基于组件的风格。可以使用任何程序设计语言开发组件,并且易于重用或替换它。2.可扩展能力。可以有多种粒度的组件。它们可以在一个分布的、异构的环境中运行。对组件没有共享地址空间的要求。组件可以是多线程的3.组件相对独立,组件之间的依赖比较少。4.所有组件之间的通信都通过以连接件为中介的异步消息交换机制实现。

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功