常见体系结构介绍

标签: 常见 体系结构 | 发表时间:2013-01-27 21:15 | 作者:Richard Wei
出处:http://www.cppblog.com
数据流系统

概念:以算法和数据结构为中心, 像管道和过滤器般处理数据,每个组件都有相对独立的数据处理功能,数据依次经过各个组件,最后形成完整的数据处理系统。
优点:各个组件都是独立的, 可以放方便的组合、重用和扩展,流水线式的执行,支持大规模并行处理。
缺点:流水线式的处理, 所以一般要求数据有比较统一的输入和输出格式;各个组件都是独立的, 因此的很难提取共性;批处理方式,所以不适合和用户交互。
应用:一个最著名的实例是unix的shell编程,多个对数据进行处理的程序(组件)通过管道联结起来,产生总和的效果。
         还有传统的编译器,源代码经过词法分析、语法分析、中间代码生成、目标代码生成等步骤生成输出的目标代码。
         还有其他经过多步才能生成结果的程序,比如图像处理,数值解题等。


层次系统

概念:将系统功能和组件分成不同的功能层次,一般而言,只有最上层的组件和功能可以被系统外的使用者访问,只有相邻的层次之间才能够有函数调用。
优点:把复杂的问题逐层分解,使整体设计非常清晰;每层只依赖相连的里层,耦合性较弱。
缺点:有些划分清晰的层次比较困难;层次太多会使性能下降。
应用:层次系统是我们最常见的方式, 一般软件都有它的影子,比如程序典型的三层架构分为表示层(界面层)、业务逻辑层、数据访问层。
         操作系统一般分为内核层,API层, 应用层, 我在 理解 Windows API 调用过程中有相关介绍。
        各层之间的交互方式也值得我们探讨下, 一般调用方式有直接接口调用和消息发送二种方式,究竟什么时候该用哪种方式,可以参考我这篇 消息耦合还是接口耦合. 总的来说如果很强调弱耦合和可扩展性,可以用消息方式,我们看到Windows上在调用API进入内核时用的是中断消息的方式。


面向对象的系统

概念:
数据和数据上的操作被封装成抽象数据类型或者对象。系统由大量的对象组成,在物理上,对象之间通过函数或者过程调用相互作用;在逻辑上,对象之间通过集成、复合等方式实现设计的复用。
优点:符合人们认识事物的方式,支持封装,继承,多态。
缺点:通过函数调用,并且需要知道处理的对象,耦合性比较紧密,我这篇 范型编程杂谈中也有谈及。
应用:面向对象设计和开发基本上已经是每个程序员的必修课,各种流行的编程语言都有对它的支持,COM组件技术也是以此为基础。


基于事件的系统

概念:
这是面向对象和数据抽象体系的一种变形,系统同样是由大量的对象组成的,但是对象之间的交互不是通过明确指明对象的函数或者过程调用进行的,相反,系统提供事件的创建和发布的机制,对象产生事件,一个或者多个对象通过向系统注册关注这个事件并由此触发出相应的行为或者产生新的事件。
优点:用于函数和过程的调用调用不需要指明特定的对象,所以系统具有非常好的灵活性和扩展性,新的组件只需要向系统的事件处理部分注册就可以立刻加入系统中,同样,老的组件也可以方便的从系统中删除。
缺点:由于函数调用是通过事件发送进行的,所以,发出事件的对象不能确认是否有对象处理了这个事件、是否是期望的对象处理了这个事件、是否获得期望的结果,同样也无法控制事件发生的次序,系统的逻辑和时序的正确性必须通过复杂的时序逻辑和前后条件的断言加以保证。
应用:Windows的鼠标键盘消息,窗口消息等都是基这种方式。该方式与面向对象方式的比较我在 消息耦合还是接口耦合这篇中也有提及。


知识库系统

概念:
使用一个中心数据结构表示系统的当前状态,一组相互独立的组件在中心数据库上进行操作。如果组件负责对中心数据进行选择、处理,这种体系就是传统的数据库模型;如果中心数据结构自主的引发一系列的行为,则这种体系可以看成一个黑板模型。
优点:以数据为中心的体系结构,可以自然的表示大量的数据和事务处理的逻辑,适合表达以数据为中心的应用程序。
缺点:只有很少一部分简单的数据库存储应用可以完全采用这种体系结构表示。
应用:传统的数据库。


解释器系统

概念:如果应用程序的逻辑非常复杂,一个较好的体系就是提供面向领域的一组指令(语言),系统解释这种语言,产生相应的行为,用户使用这种指令(语言)完成复杂的操作。
优点:非常好的扩展性,用户可以实现对软件系统的二次开发。
缺点:软件开发复杂,特别是这种指令集的设计非常困难。
应用:Java虚拟机, .Net的CLR(Common Language Runtime), 脚本语言的解释器等。

在实际开发中,我们很少会只使用一种体系结构,很多时候是以一种体系结构为主, 其他体系结构为辅。比如我们一个网络客户端软件总体上是层次系统,可能分为通讯层、业务逻辑层、界面层, 但每层内部又会用面向对象的方式实现。

总之, 软件系统的分析和设计的基本任务是:确立系统中的基本元素(完成系统的功能所必不可少的成分);确定这些元素之间相互作用的方式(这就是系统的体系结构)。

参考资料:百度百科  体系结构


本文链接

相关 [常见 体系结构] 推荐:

常见体系结构介绍

- - C++博客_首页
概念:以算法和数据结构为中心, 像管道和过滤器般处理数据,每个组件都有相对独立的数据处理功能,数据依次经过各个组件,最后形成完整的数据处理系统. 优点:各个组件都是独立的, 可以放方便的组合、重用和扩展,流水线式的执行,支持大规模并行处理. 缺点:流水线式的处理, 所以一般要求数据有比较统一的输入和输出格式;各个组件都是独立的, 因此的很难提取共性;批处理方式,所以不适合和用户交互.

JVM学习 - 体系结构

- - CSDN博客推荐文章
一:Java技术体系模块图. 二:JVM运行时内存区域模型. 也称"永久代” 、“非堆”,  它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域. 可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小. 运行时常量池:是方法区的一部分,Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中.

java之classloader体系结构

- - 非技术 - ITeye博客
原文出处: http://www.iteye.com/topic/136427. a, Bootstrap ClassLoader/启动类加载器. 主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作.. b, Extension ClassLoader/扩展类加载器.

【Oracle】物理体系结构

- - CSDN博客推荐文章
一、ORACLE 物理体系结构. PGA: 私有内存区,仅供当前发起用户使用. 用户登录后的session信息会保存在PGA. 执行排序,如果内存不够,oracle会在临时表空间中完成. SGA: 包含共享池,数据缓冲区,日志缓冲区以及一些相关的进程. DATABASE: 数据最终存放的地方,其中一块区域是日志存放区.

Jetty8.0.4的ClassLoader的体系结构

- - 龙浩的blog
    1:JDK的ClassLoader基础. Bootstrap ClassLoader/启动类加载器 . 主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作. Extension ClassLoader/扩展类加载器 . 主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作.

计算机网络体系结构

- - CSDN博客推荐文章
OSI/RM 开放系统互连参考模型. OSI/RM 与TCP/IP参考模型的比较. 开放式系统互连基本参考模型是由国际标准化组织(ISO)指定的. OSI包括了体系结构,服务定义和协议规范三级抽象. 注意OSI参考模型并非具体实现的描述,它只是一个为制定标准而提供的概念性框架. 在OSI中,只有各种协议是可以实现的,网络中的设备只有与OSI的有关协议相一致时才能互连.

oracle 数据库体系结构

- - Oracle - 数据库 - ITeye博客
       任何硬件平台或操作系统下的ORACLE体系结构都是相同的,包括如下四个方面:.         数据文件,日志文件,控制文件,参数文件.         表空间、段、区间、数据块.         共享池,数据缓冲区,日志缓冲区,PGA.         用户进程、服务器进程、后台进程.

图解EJB的体系结构

- - 企业架构 - ITeye博客
本文对EJB的体系结构作一个全面介绍:. EJB在J2EE体系结构中的位置. EJB是Enterprise JavaBeans的简称. 本文对EJB技术的体系结构作一个全面深入地介绍. EJB在J2EE体系结构中的位置. 视图层或表现层:提供用户界面;接收用户输入;数据输出. WEB应用的情况,JSP以及SERVLET属于视图层组件.

Oracle的体系结构概览

- - CSDN博客数据库推荐文章
声明:版本11gR2,CentOS5.8. (从11g开始password项里变为空了,以免被破解). 实例=内存(sga)+后台进程(background). 查看内存,可以通过以下视图.  后台进程,可以通过下面视图查看.   我们只关心paddr不等于0的就可以了,等于0的都是没启用. 参数文件spfilesid.ora,initsid.ora.

理解Java虚拟机体系结构

- - ImportNew
众所周知,Java支持平台无关性、安全性和网络移动性. 而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么. 正是得益于Java虚拟机,它号称的“一次编译,到处运行”才能有所保障. 1.1 Java程序执行流程. Java程序的执行依赖于编译环境和运行环境.