计算机系统由两个重要部分组成:计算机硬件系统和软件系统,两者缺一不可。计 算机硬件是计算机系统中由机械、电子和光电元件组成的各种计算机物理部件和设备的 总称,包括计算机主机和各种外部设备,是计算机完成各项工作的物质基础。计算机软件 是人与硬件的接口,是在计算机硬件设备上运行的各种程序以及相关数据和文档的总称。 计算机软件是计算机系统的重要组成部分,指挥和控制着硬件的执行过程,只有配备了软 件系统,计算机硬件系统才能发挥效用,计算机才能实现特定的功能。最初的软件完全依 赖于硬件,随着计算机技术的不断发展,软件逐渐从计算机硬件系统中分离出来,成为一 门独立的学科。软件在计算机上除了开发无穷无尽的功能,还可以帮助人们处理各种各 样的事务,并通过网络进行快捷的信息交流和资源共享。如果把硬件比作人的肢体,那么 软件就是人的灵魂或大脑。没有安装任何软件的计算机称为“裸机”,而“裸机”只能识别 由0、1组成的基础代码,用户难以直接使用。而没有硬件的物质支持,软件也无法运行。 计算机就是由硬件肢体和软件大脑结合在一起,实现了人们需要的各种功能,并创造了各 种奇迹。 5.软件技术概述 1 5.1 软件定义 1. 关于软件的概念,并没有一个严格意义上的标准定义。世界知识产权组织(WIPO) 的定义是:计算机软件包括程序、程序说明以及程序使用指导三项内容。“程序”是控制 计算机完成特定任务的指令集合;“程序说明”指用文字、图解或其他方式,对计算机程序 中的指令所做的说明和解释;“程序使用指导”指除程序、程序说明以外,用以帮助和实施 有关程序的其他辅助材料。 计算机科学对软件的定义是:“ 软件是在计算机系统支持下,能够完成特定功能和性 能的程序、数据和相关文档。”这里数据是指程序能够处理信息的数据结构。文档是描述 程序功能需求以及程序如何操作和使用的相关说明,如使用指南、维护手册等。程序和数 据必须装入计算机内部才能执行并完成其功能;而文档在计算机执行过程中可能是不需 要的,不一定要装入计算机内部,但对于用户阅读、修改、维护这些程序却是必不可少的。 根据计算机科学对软件的定义,软件可以形式化地表示为: 软件=程序+数据+文 档 软件具有一些同其他传统生产行业产品不同的地方,具有如下的特征 : (1)抽象性:软件没有物理形态,是一种逻辑实体,只能通过运行状况来了解其功 能、特性和质量。 (2)开发性:软件产品的生产不同于硬件,没有明显的制造过程,软件的生产主要是 研制和开发。 (3)复杂性:软件的复杂性主要是指所解决实际问题的复杂性和程序逻辑结构的复 杂性,同时开发和运行还会受到计算机系统的限制,软件本身是复杂的。 (4)移植性:软件的开发和运行常常受到计算机系统环境的制约,对计算机硬件有 依赖性,为了减少依赖,在软件开发中必须考虑软件在不同系统之间进行移植的问题。 (5)高成本:软件的研发过程渗透了大量的、复杂的、高强度的脑力劳动,人的逻辑 思维、智能活动和技术水平是软件产品的关键,软件的成本相对较高。 (6)复用性:软件具有可复用性,软件开发出来很容易被复制,从而形成多个副本。 (7)退化性:软件不会像硬件一样出现老化、磨损等问题,但软件存在退化问题,需 要不断对软件缺陷进行维护和技术更新。 方式 ( 。 8)人工性:软件的开发过程至今依赖于人工的开发方式,无法摆脱这种手工生成 5.2 软件分类 1. 软件种类繁多,对软件进行恰当的分类是比较困难的,大部分教科书以及早期的各种 文献中,都将软件分为系统软件与应用软件两大部分。系统软件指为计算机使用提供最 基本功能的软件,控制和协调计算机及外部设备,支持应用软件开发和运行的系统,是无 须用户干预的各种程序的集合。系统软件主要包括操作系统、语言处理系统、数据库系统 以及其他服务程序。应用软件是为解决计算机各类应用问题而编制的程序集合,具有 很强的实用性。应用软件依赖系统软件,需要在其支持的操作系统下才能够运行。应 用软件主要包括文字处理软件、图形图像处理软件、网络通信软件、辅助设计软件等多 种软件。 随着软件技术的不断发展,软件种类越来越多,人们对软件提出了更细致的分类,从 不同角度可以有不同的分类方式。 1. 按功能分类 现代软件的分类方法是分为基础软件和应用软件两大类。 基础软件是软件系统中最底层、最基础的软件,包括操作系统、数据库系统、中间件、 语言处理系统(包括编译程序、解释程序和汇编程序)和办公软件。各行业领域系统软硬 件的互联互通、性能、安全性均建立在基础软件之上。 因为基础软件所包含的内容较为庞杂,因此专业上又将基础软件进一步细分,将靠近 硬件部分的软件称为系统软件,将支持应用软件开发的软件称为支撑软件。系统软件主 要包括操作系统、设备驱动程序和编译系统;支撑软件是在系统软件和应用软件之间,提 供给软件开发者研制适用于解决各种问题的程序的开发环境,如各种编程语言、数据库系 统、图形软件开发包、办公软件、嵌入式软件等。 应用软件是指利用计算机的软硬件资源为解决各类应用问题而开发的软件系统,具 有很强的实用性。随着现代计算机性能的不断提高、网络的飞速发展,应用软件类型丰富 多彩。按照软件的功能,可以把应用软件进一步分为工业软件、行业软件、图像处理软件、 游戏娱乐软件、多媒体软件、安全软件、教育教学软件等。 2. 按工作方式分类 按软件工作方式进行分类可以分为:实时处理软件、分时处理软件、交互式软件和批 处理软件。 实时处理软件是指必须满足严格时间约束条件的软件,即在事件或数据产生时对其 进行立即处理,并及时反馈信号以控制需要检测过程的软件。比较而言,实时程序设计是 应用软件开发中技术最难、风险最大的程序设计领域,这是由它的应用对象和环境决定 的。随着人类对自动控制系统的广泛开发,实时软件的需求越来越大。实时处理软件主 要用于特殊设备的监控,例如,自动流水线监控程序、飞机自动导航程序等。 分时处理软件是指能够把计算机CPU 工作时间轮流分配给多项数据处理任务的软 件。分时系统与那些为一个部门的专用目的而设计的系统不同,是指在一台主机上连接 多个终端而构成的系统,允许多个用户同时通过自己的终端交互使用计算机,共享主机内 的资源。因此它的主存储器容量很大,中央处理机的通用性好,以支持所有复杂的程序设 计和控制功能。例如,多任务操作系统就是典型的分时处理软件。 交互式软件是指能够实现人机对话的软件。这类软件往往通过一定的操作界面接收 用户给出的信息,并由此进行数据操作;其在时间上没有严格的限定,但在操作上给予了 用户很大的灵活性。交互式软件在生产和生活中应用比较多,如触摸屏上用的展示类软 件、硬件软件结合的游戏等。 批处理软件是指能够把一组作业按照作业输入顺序或作业优先级别进行排队处理 , 并以成批加工的方式处理作业中的数据。例如,汇总报表打印程序、垃圾处理软件、文件 批处理器、图片批处理软件等。 3. 按软件服务对象范围分类 分为项目软件和产品软件两大类。其中,项目软件不以营利为目的,涉及工程课题、 国家安全如航天等。产品软件以营利为目的,面向市场,如游戏软件、购物软件等。 4. 按软件规模分类 按开发软件所需的人力、时间以及完成的源程序行数,可以将软件分为6种不同规模 的软件,具体划分方法如表5-1所示。 501 表5- 1 软件按规模分类 类别参与人数研制期限产品规模(源程序行数) 微型1 1~4周0.5k 小型1 1~6周1~2k 中型2~5 1~2年5~50k 大型5~20 3~4年50~100k 巨大型100~1000 4~5年1M(1000k) 极大型2000~5000 5~10年1~10M (资料来源:《软件安全》) 5.人工智能技术 2 2.人工智能定义 5.1 人工智能(ArtificialInteligence,AI)的定义可以分为两部分,即“人工”和“智能”。 “人工”即通常意义下的人类制作和创造的意思;而关于“智能”,没有一个明确的定义,因 为人类唯一了解的智能是人本身的智能,是指人类所具有的认识、理解客观事物并运用知 识、经验等解决问题的能力,包括记忆、观测、想象、思考、判断等。人类智能是人类在漫长 的过程中发展起来的,是人类认识世界和改造世界的关键。人工智能就是人类通过模仿 创造出来的人造智能,模仿的对象就是人类的智能。斯坦福大学计算机教授尼尔逊对人 工智能下了这样一个定义:“人工智能是关于知识的学科———怎样表示知识以及怎样获 得知识并使用知识的科学。”而另一个美国麻省理工学院的温斯顿教授认为:“人工智能 就是研究如何使计算机去做过去只有人才能做的智能工作。”这些说法反映了人工智能学 科的基本思想和基本内容,即人工智能是研究人类智能活动的规律,构造具有一定智能的 人工系统,研究通过人工的方法和技术,让机器像人一样认知、学习、模仿、延伸和扩展人 的智能,从而实现机器智能,其本质是对人类智能的模拟、延伸甚至超越的一门新技术 学科。 人工智能的发展历史是和计算机科学技术的发展史联系在一起的。人工智能是研究 人类智能活动的规律,构造具有一定智能的人工系统,研究如何让计算机去完成以往需要 人的智力才能胜任的工作,也就是研究如何应用计算机的软硬件来模拟人类某些智能行 为的基本理论、方法和技术。人工智能是在计算机科学、控制论、信息论、神经心理学等多 种学科研究的基础之上发展起来的综合性学科,在很多学科领域都获得了广泛应用,有着 超乎想象的广阔前景。人工智能能够推动多个领域的变革和跨越式发展,对传统行业产 生颠覆性影响,并催生新业态、新模式,引发经济社会发展的重大变革。人工智能是计算 机学科的一个分支,被认为是21世纪三大尖端技术(基因工程、纳米科学、人工智能) 之一。 601 2.人工智能发展历程 5.2 1. 人工智能的诞生 人工智能的开端一直绕不开艾伦·麦席森·图灵(AlanMathisonTuring)。1950 年,图灵提出关于机器思想的问题,发明了图灵测试来断定计算机是否有智能。图灵测试 以为,假如一台机器可以与人类展开对话(经过电传设备)而不能被区分出其机器身份,那 么称这台机器具有智能,这就是著名的“图灵测试”。同一年,图灵还预言会创造出具有真 正智能的机器的可能性。 “人工智能”一词最初是在1956 年达特茅斯(Dartmouth)学会上提出的,会上人们首 次决定将像人类那样思考的机器称为“人工智能”,这次会议被人们看作是人工智能正式 诞生的标志。 2. 人工智能的发展历程 人工智能的探索道路曲折起伏,其发展历程可以总结为以下6个阶段。 1)起步发展期(1956 年—20 世纪60 年代初) 人工智能概念提出后,最早的一批人工智能学者和技术开始涌现,相继取得了一批令 人瞩目的研究成果,掀起人工智能发展的第一个高潮。1958 年,约翰·麦卡锡开发了既 能够处理数据又能够处理符号的LISP 语言;1960 年,西蒙等人研制出通用问题求解程序 GPS;1966—1972 年,美国斯坦福国际研究所研制出机器人Shakey,这是首台采用人工智 能的移动机器人;1966 年,世界上第一个聊天机器人ELIZA 发布,ELIZA 的智能之处在 于她能通过脚本理解简单的自然语言,并能产生类似人类的互动;1959 年,计算机游戏先 驱亚瑟·塞缪尔编写了西洋跳棋程序,这个程序顺利战胜了当时的西洋棋大师罗伯特尼 赖,“推理就是搜索”,是这个时期主要的研究方向之一。 2)人工智能第一次低谷(20 世纪60 年代—70 年代初) 20 世纪70 年代初,人工智能遭遇了瓶颈,当时的计算机有限的内存和处理速度不足 以解决任何实际的人工智能问题。人工智能经过了十多年的发展仍然只能解决一些非常 简单的问题,人们发现人工智能不能像预期的那样无所不能,便引发了全世界对人工智能 实际价值的质疑。由于缺乏进展,对人工智能提供资助的机构(如英国政府、美国国防部 高级研究计划局和美国国家科学委员会)对无方向的人工智能研究逐渐停止了资助,美国 国家科学委员会(NRC)在拨款两千万美元后停止资助。 3)人工智能的繁荣期(20 世纪70 年代后期—80 年代末) 20 世纪80 年代,人们逐渐意识到了对人工智能的期望过高,于是便将人工智能局限 于某些特定的任务重新展开研究,以知识处理为主的“专家系统”人工智能程序开始发展。 20 世纪70 年代出现的专家系统模拟人类专家的知识和经验解决特定领域的问题,实现 了人工智能从理论研究走向实际应用、从一般推理策略探讨转向运用专门知识的重大突 破。专家系统在医疗、化学、地质等领域取得成功,推动人工智能走入应用发展的新高潮。 与此同时,连接主义学派的神经网络先后提出了离散神经网络模型、连续神经网络模型、 反向传播算法,人工神经网络的研究重新受到重视。 4)人工智能第二次低谷(20世纪80年代—90年代初) 随着苹果和IBM公司台式计算机的崛起,导致LISP计算机销量大幅度减少。随着 人工智能的应用规模不断扩大,专家系统存在的应用领域狭窄、缺乏常识性知识、知识获 取困难、推理方法单一、缺乏分布式功能、难以与现有数据库兼容等问题逐渐暴露出来。 人们再一次对人工智能失去了信心,政府以及各机构对人工智能的投资又大大减少,人工 智能再次进入寒冬。 5)稳步发展期(20世纪90年代中期—90年代末) 经历了两次低谷,人工智能的研究者们逐渐趋于理性,开始脚踏实地地研究人工智能 在特定领域问题的解决方法。网络技术特别是互联网技术的发展,加速了人工智能的创 新研究,促使人工智能技术进一步走向实用化。1997年,国际商业机器公司(IBM)深蓝 超级计算机战胜了国际象棋世界冠军卡斯帕罗夫;1999年,索尼推出了机器人宠物狗 AIBO,能够通过与环境、所有者和其他宠物狗进行互动来“学习”;2006年,Hinton在神 经网络的深度学习领域取得突破;2008年,智慧地球” 6)全面爆发期(2010年至今) IBM提出“ 的概念。 随着大数据、云计算、互联网、物联网等信息技术的发展,泛在感知数据和图形处理器 等计算平台推动以深度神经网络为代表的人工智能技术飞速发展,大幅跨越了科学与应 用之间的“技术鸿沟”,诸如图像分类、语音识别、知识问答、人机对弈、无人驾驶等人工智 能技术实现了从“不能用、不好用”到“可以用”的技术突破,迎来爆发式增长的新高潮。 2012年,在ImageNet竞赛上Hinton团队利用深度学习取得了第一名的好成绩;2016 年,DepMind团队研发的AlphaGo首次在围棋比赛中打败了围棋世界冠军李世石;2018 年11月,第五届世界互联网大会上,新华社联合搜狗公司发布了全球首个“AI合成主 播”,顺利完成了100s的新闻播报;2019年12月,百度公司发布语音交互硬件产品小度 在家X8,有远程语音交互、人脸识别、手势控制、眼神唤醒等功能。人工智能作为新一轮 产业变革的核心驱动力,不断催生新技术、新产品、新产业的诞生,正以前所未有的速度蓬 勃发展。 5.3 人工智能研究领域 2. 1.模式识别 模式识别就是通过计算机用数学技术方法来研究模式的自动处理和判读,把环境与 客体统称为“模式”。模式识别是研究如何让机器实现生物模式识别,根据模式判断不同 样本是否属于某个类别。模式识别以图像处理与计算机视觉、语音语言信息处理、脑网络 组、类脑智能等为主要研究方向,研究人类模式识别的机理以及有效的计算方法。模式识 别应用领域越来越广,从生物学、数据挖掘、文档分类、文档图像分析、工业自动化、多媒体 数据库检索、语音识别到远程遥感等方面。 2.机器学习 机器学习主要研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能, 重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心。如今 机器学习已经进入深度学习阶段,各种新理论、新模型层出不穷。为了方便学习我们将其 分为以下几种 : (1)传统机器学习算法:主要包括支持向量机、决策树、神经网络、聚类算法。 (2)深度学习算法。 机器学习应用领域非常广泛,在模式识别、计算机视觉、语音识别、自然语言处理、数 据挖掘等研究领域,机器学习方法都得到了成功应用。例如,利用机器学习方法,根据某 地区房屋销售历史价格和所售房屋的基本信息,来预测待售房屋的售价。 3. 计算机视觉 计算机视觉是一门研究如何使机器“看”的科学。计算机视觉是以图像(视频)为输 入,以对环境的表达和理解为目标,研究图像信息组织、物体和场景识别,进而对事件给予 解释的学科。从研究现状看,目前还主要聚焦在图像信息的组织和识别阶段,对事件解释 还鲜有涉及,至少还处于非常初级的阶段。 计算机视觉的主要任务是通过对采集的图片或视频进行处理以获得相应场景的信 息,主要研究图像分类、语义分隔、实例分隔、目标检测、目标跟踪等技术。 4. 自然语言处理 自然语言处理研究如何让计算机理解并处理自然语言,实现人与计算机之间用自然 语言进行有效通信的各种理论和方法,使计算机获得处理人类语言的能力。 自然语言处理的主要任务如下 : (1)词法分析:借用语言学总结的自然语言结构,构建不同词语之间的逻辑关系,将 输入的句子字串转换成词序列,并标记出词性。 (2)句法分析:确定句子的语法结构或句子中词汇之间的依存关系,得到句子的句 法结构。 (3)语义分析:语义分析不仅进行词法分析和句法分析这类语法水平上的分析,而 且还涉及单词、词组、句子、段落所包含的意义,目的是用句子的语义结构来表示语言的 结构 ( 。 4)信息抽取:从无结构文本中抽取结构化的信息。 5. 语音信号处理 语音信号处理是以语音语言学和数字信号处理为基础而形成的一门涉及面很广的综 合性学科,目的是在复杂的语音环境中提取有效的语音信息,或者产生具有一定信息的语 音内容信号。 语音信号处理的主要内容如下 : (1)语音分析:是指通过语音识别等核心技术将非结构化的语音信息转换为结构化 的索引,实现对海量录音文件、音频文件的知识挖掘和快速检索,典型应用案例有情绪侦 测、语速检测、抢插话检测、静音检测。 901 (2)语音识别:是以语音为研究对象,通过语音信号处理和模式识别让机器自动识 别和理解人类口述的语言,典型的应用案例有人机交流、语音输入和合成语音输出。 (3)语音合成:将文字转换为语音的一种技术,类似于人类的嘴巴,通过不同的音色 说出想表达的内容,典型应用案例有各种播报场景、读小说、读新闻以及现在比较火的人 机交互。 6. 机器人技术 机器人技术是指研究能够从感知、思维、动作等多维度模拟人类的机器系统。机器人 技术主要技术领域如下。 (1)感知:用多传感器融合技术代替单一传感器,能够综合利用多种信息源的不同 特点,实现智能感知。 (2)算法:机器人需要一套合理、智能的算法来识别外界环境并做出决策。 (3)控制:使得机器人各部件协调工作,完成预期的动作 。 机器人可以分为以下三代 。 (1)第一代机器人:编程机器人,在任何条件下,完全按照指令工作。 (2)第二代机器人:具有感知能力与适应性,可以根据外界环境调整自己的动作。 (3)第三代机器人:具有智能行为和友好协调的人机交互能力。 5.基础软件 3 5.1 基础软件定义 3. 基础软件是软件系统中最底层、最基础的软件,是具有公共服务平台或应用开发平台 功能的软件系统。基础软件主要由操作系统、数据库、中间件、计算机程序设计语言和办 公软件五部分组成。操作系统是用于管理和控制计算机所有的硬件和软件资源的软件系 统,根据运行的环境可以分为桌面操作系统、手机操作系统、服务器操作系统、嵌入式操作 系统等。数据库是计算机数据处理与信息管理系统的核心,主要分为关系型数据库和非 关系型数据库两种。中间件是连接操作系统和应用软件的重要工具,主要包括数据库中 间件、面向消息中间件、远程调用中间件、基于对象请求代理的中间件、事务处理中间件。 编程语言种类众多,主要包括机器语言、汇编语言、各种高级语言。办公软件主要包括文 字处理、电子表格、幻灯片以及一些初级图片处理应用软件。 基础软件是连接硬件平台和应用系统的通道,各行业领域系统软硬件的互联互通、性 能、安全性均建立在基础软件之上。基础软件在信息系统中起着基础性、平台性的作用, 有极为广泛的应用,对信息安全也有决定性的意义。因此近些年来,我国也充分认识到国 产基础软件的重要性,在国家的大力倡导下,很多IT 企业开始投入到基础软件的研发当 中,原有的国产基础软件厂商也得到了国家在资金和项目上的政策倾斜。2006 年国务院 发布的《国家中长期科学和技术发展规划纲要(2006—2020 年)》中,提出了“核高基”的概 念,“核高基”是核心电子器件、高端通用芯片及基础软件产品的简称,纲要中将“核高基” 011 列为16个重大科技专项之一,国家对基础软件高度重视。加快基础软件发展,对于加快 软件和信息服务业自主发展、保障国家信息安全有重要意义。 5.2 基础软件分类 3. 基础软件中比较核心的软件主要包括操作系统、数据库系统、中间件、计算机程序设 计语言和办公软件。 1.操作系统 操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源并提供公共服务 来组织用户交互的相互关联的系统软件程序,是计算机硬件和其他软件的接口,也是用户 和计算机的接口。操作系统是现代计算机必配的软件,而且操作系统的性能很大程度上 直接决定了整个计算机系统的性能。 目前典型的操作系统有Windows、MacOS 、Linux、UNIX等。 2.数据库系统 数据库(Database,DB)是指按照一定数据模型存储的数据集合,指的是以一定方式 存储在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集 合,例如,图书的信息、仓库物资的信息、学生的成绩信息。数据库系统由数据库、数据库 管理系统,以及相应的应用程序组成,其中,数据库管理系统是能够对数据库进行加工、管 理的系统软件。数据库系统不但能够存放大量的数据,更重要的是能迅速地、自动地对数 据进行增删、检索、修改、统计、数据挖掘等操作,为人们提供有用的信息。 目前数据库系统主要分为关系型数据库和非关系型数据库两大类。关系型数据库 (RelationalDatabase)是创建在关系模型基础上的数据库,借助于集合代数等数学概念和 方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系 模型来表示。由于关系模型简单明了、具有坚实的数学理论基础,所以一经推出就受到了 学术界和产业界的高度重视和广泛响应,并很快成为数据库市场的主流。目前,主流的商 业数据库系统有甲骨文公司的Oracle、IBM的DB2 、微软公司的SQLServer、SAP公司 的Sybase;在开源领域,MySQL(被甲骨文收购)和SQLite得到广泛的应用。关系型数 据库如图5-1所示。非关系型数据库又被称为NoSQL(NotOnlySQL),以键值对存储, 且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的 键值对,不局限于固定的结构,可以减少一些时间和空间的开销。非关系型数据库的优点 是格式灵活、易扩展、大数据量、高性能。比较有名的非关系型数据库主要有MongoDB 、 Redis、Neo4j、Casandra、AmazonDynamonDB等,如图5-2所示。 3.中间件 中间件主要是指提供系统软件和应用软件之间连接的软件。中间件是一种独立的系 统软件或服务程序,位于客户机/服务器的操作系统之上,分布式应用之下,管理计算资源 和网络通信,其目标是在分布式计算环境中实现应用互联、资源共享、协同工作和互操作。 图5-1 关系型数据库 图5-2 非关系型数据库 中间件具有平台功能,能够屏蔽底层操作系统及网络传输的复杂性,使开发人员面对简单 而统一的开发环境,减少程序设计的复杂性,将注意力集中在业务逻辑上,大大减少了应 用开发的技术难度,缩短了应用开发周期。 中间件产品种类很多,可以大致分为以下五类:消息中间件、远程过程调用中间件、 面向对象中间件、事务处理中间件、数据库中间件。 (1)消息中间件(MesageOrientedMiddleware) 消息中间件是基于队列与消息传递的技术,在网络环境中为应用系统提供同步或异 步、可靠的消息传输的支撑性软件系统。消息中间件的优点在于能够在客户和服务器之 间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发。典型 的消息中间件产品有:IBM的MQSeries、BEA公司的MesageQ 、东方通科技公司的 TongLink/Q等。 (2)远程过程调用中间件(RemoteProcedureCal,RPC) 远程过程调用中间件是指提供远程过程调用机制以支持客户端应用调用服务器端过 程的软件中间件。过程中间件一般从逻辑上分为两部分:客户和服务器。客户和服务器 是一个逻辑概念,既可以运行在同一计算机上,也可以运行在不同的计算机上,甚至客户 和服务器底层的操作系统也可以不同。远程过程调用扩展了过程语言中的“功能调用/结 果返回”机制,使得它可以适应于一个远程环境。代表产品有Windows系统的通信协议 DCE-RPC 。 (3)面向对象中间件(Object-OrientedMiddleware) 面向对象中间件是指可以将分布、异构的网络计算环境中各种分布对象有机地结合 在一起的软件中间件,实现彼此之间的互操作以完成系统的快速集成。面向对象中间件的 基本思想是在对象与对象之间提供一种统一的接口,对象之间的调用和数据共享无须再关 心对象的位置、实现语言及所驻留的操作系统。代表产品有InriIpieViirkr。 oaObx,nrssboe (4)事务处理中间件(TransactionProcesingMiddleware) 事务处理中间件也称交易中间件,是指提供事务处理所需要的通信、并发访问控制、 事务控制、恢复、资源管理和其他必要的服务的中间件。事务处理中间件可以向用户提供 一系列的服务,如应用程序间的消息传递、资源管理器支持、故障恢复、高可靠性、网络负