第15章 · 播客 第1集
基于中间件的开发 · 中间件的概念:夹在中间的到底是什么
🎙️ 本集播客:第1集:从 C/S 两层结构的困境讲到分布异构环境,把中间件的位置、IDC 定义、五大特点、Standish 十大优越性和那个必考的 50% 数字逐一钉死——「操作系统之上」四个字就是选择题的坑位。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
明
阿明
小雅姐,第十五章「基于中间件的开发」,这名字听着就虚——中间件到底是什么?夹在中间的软件?
雅
小雅
望文生义倒也没全错,原文对位置的表述你要一字不差地记:中间件是基础软件的一大类,属于可复用软件的范畴,它处在操作系统、网络和数据库之上,应用软件的下层;也有人认为它应该属于操作系统中的一部分。判断题问「是否有人认为中间件属于操作系统的一部分」,答案是有。
明
阿明
上接应用、下接系统和数据库的夹心层。那它为什么被发明出来?
雅
小雅
两个推手。第一个是两层结构的困境。20 世纪 90 年代初,C/S 计算模式成为主流,数据统一存储在数据服务器上,而有关的业务逻辑都在客户端实现。但这种两层结构的问题是:服务器依赖于特定的供应商,数据存取受到限制,再加上难以扩展到广域网或互联网,极大地阻碍着计算机软件系统的发展。三个毛病按顺序背——依赖特定供应商、数据存取受限、难扩展到广域网互联网。
明
阿明
所以有人把业务逻辑从客户端拆出去了?
雅
小雅
对,有人提出将客户端的业务逻辑独立出来,形成第三层。在这种三层结构中,客户端仅仅处理图形用户界面,在设计和实现时需要开发的,仅是在应用服务器上的业务逻辑部分的软件。这两句是选择题原材料——问三层结构中客户端只负责什么,答图形用户界面;问需要开发的部分在哪,答应用服务器上的业务逻辑部分。
明
阿明
明白。第二个推手呢?
雅
小雅
Internet 和 WWW 的出现。计算机应用范围更广,许多应用程序需在网络环境的异构平台上运行。原文把分布异构环境拆得很细:通常存在多种硬件系统平台,例如 PC、工作站、小型机;在这些硬件平台上又存在各种各样的系统软件,例如不同的操作系统、数据库、语言编译器;以及多种风格的用户界面;这些硬件系统平台还可能采用不同的网络协议和网络架构连接。
明
阿明
这么乱的一堆平台,怎么集成到一起?
雅
小雅
原文说得很直白:如何把这些系统集成起来并开发新的应用是一个非常现实而困难的问题。为了解决这个问题,出现了处于系统软件和应用软件之间的中间件,它使设计者集中设计与应用有关的部分,大大简化了设计和维护工作。「处于系统软件和应用软件之间」和「操作系统、网络和数据库之上、应用软件之下」是同一件事的两种说法,选项里两种表述都可能出现,别当成两个东西。
明
阿明
那中间件自己有没有一个公认的定义?
雅
小雅
没有,这正是第一处辨析点。原文说中间件从诞生到现在仅 10 多年时间,但发展极其迅速,是有史以来发展最快的软件产品,可是在技术上还处于成长阶段,还没有统一的标准和模型。实现上,通常都是用 C++ 语言以面向对象的技术来实现的,但它的特性已超出面向对象的表达能力,由于它属于可重用构件,目前趋向于用构件技术来实现。
明
阿明
「有史以来发展最快的软件产品」,这个评价级别不低啊。
雅
小雅
还有更玄的:中间件要涉及软件的所有标准、规范和技术,它包括平台功能,自身具有自治性、自主性、隔离性、社会化、激发性、主动性、并发性、认识能力等特性,是近似于 Agent,也就是代理的结构。这串特性不用逐个背,考点在两处:一是判断「中间件近似于 Agent 的结构」;二是「用 C++ 面向对象实现、趋向于构件技术实现」这个演变方向。
明
阿明
正式的定义考试认哪个?
雅
小雅
认 IDC 的。原文引述:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。这半句就是高频考点,下一句我专门给你拆题。
明
阿明
拆题?「位于操作系统之上」这一句还能怎么挖?
雅
小雅
考试原题就是「IDC 对中间件的定义中,中间件位于客户机服务器的什么之上」,四个选项是应用软件之上、操作系统之上、数据库之上、网络协议之上。答案锁定「操作系统之上」。干扰套路是把「之下」的东西搬过来说「之上」——中间件处在数据库之上、应用软件之下,所以「数据库之上」听着像却不是 IDC 定义的原话,IDC 只说操作系统之上,还说了「管理计算资源和网络通信」。四个选项你挨个过一遍:应用软件之上不对,中间件在应用软件之下;操作系统之上对;数据库之上不是定义原文;网络协议之上不是定义原文。
明
阿明
只认定义原话。那这些服务程序或软件靠什么保证规范?
雅
小雅
定义的后半段:这些服务程序或软件具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。中间件为处于其上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。「提供运行与开发的环境」这半句后面讲应用服务器时还会升华。
明
阿明
那中间件的特点呢?应该有个清单吧。
雅
小雅
五条,原文原文给你念一遍。第一,满足大量应用的需要;第二,运行于多种硬件和 OS 平台;第三,支持分布计算,提供跨网络、硬件和 OS 平台的透明性的应用或服务的交互;第四,支持标准的协议;第五,支持标准的接口。这五条的出题法是「以下不属于中间件特点的是」,最容易拿来当干扰项的,就是把「透明性」那条改成「提供跨网络的保密性交互」之类的说法——原文是透明性,不是保密性。
明
阿明
特点五条我记住了。它到底能带来什么实际好处?
雅
小雅
世界著名的咨询机构 Standish Group 在一份研究报告中归纳了中间件的十大优越性,你要能数得出十项:缩短应用的开发周期;节约应用的开发成本;减少系统初期的建设成本;降低应用开发的失败率;保护已有的投资;简化应用集成;减少维护费用;提高应用的开发质量;保证技术进步的连续性;增强应用的生命力。多选或判断题问「Standish 归纳的中间件优越性共有几项」,答十项。
明
阿明
十大优越性背下来还是有点虚,有没有硬数字?
雅
小雅
有,而且这是本集最重要的一个数字。原文:Standish 的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少 50%左右。考试问你「采用中间件技术后应用系统的总建设费用大约可减少多少」,四个选项 20% 左右、30% 左右、50% 左右、75% 左右,答案是 50% 左右。这个数字还有个兄弟数字在本章后面 EAI 那节——中间件产品可以缩短开发周期 50% 到 75%,一个讲建设费用、一个讲开发周期,别互串。
明
阿明
费用减半,这账算得过来。除了钱,还有什么价值?
雅
小雅
原文分了三层价值。首先,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少了程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。中间件带给应用系统的不只是开发的简便、开发周期的缩短,也有系统的维护、运行和管理的工作量的减少,还减少了计算机总体费用的投入。在网络经济、电子商务大发展的今天,从中间件获得利益的不只是 IT 厂商,IT 用户也同样是赢家,并且是更有把握的赢家。
明
阿明
注意这句「IT 用户是更有把握的赢家」,出题人爱拿这句当判断。
雅
小雅
你上路了。其次,中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发的应用软件集成起来,彼此无缝地整体协调工作,这是操作系统、数据库管理系统本身做不了的。这句「操作系统和数据库管理系统本身做不了的」是关键修饰——问「把不同时期不同操作系统上开发的应用集成起来,靠操作系统自身能实现吗」,答不能,这活儿中间件才能干。
明
阿明
使得以往劳动成果仍然物有所用。第三层呢?
雅
小雅
最后一条讲标准化。原文说,对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而节省了企业在应用软件开发和维护中的重大投资。这段的考点是一句判断:「硬件和系统软件更新换代后,只要保持中间件对外接口定义不变,应用软件几乎不需任何修改」——对,原文原话。
明
阿明
「中间件远比操作系统和网络服务更为重要」这句话也容易出成判断题,是真的重要程度排名。
雅
小雅
对,这句的完整语境是「对于应用软件开发」——限定了对象,不是无条件地说中间件比操作系统重要,选项如果砍掉「对于应用软件开发」这个前提,就要多掂量一下。本集必背清单来了:中间件是基础软件一大类、可复用软件,位于操作系统网络和数据库之上、应用软件之下,也有人认为属于操作系统一部分;两层结构的三个毛病是依赖特定供应商、数据存取受限、难扩展到广域网互联网;三层结构中客户端只处理图形用户界面,开发只需做应用服务器上的业务逻辑;
明
阿明
后半段必背也过一遍。
雅
小雅
IDC 定义是独立的系统软件或服务程序,位于客户机服务器的操作系统之上、管理计算资源和网络通信,具有标准的程序接口和协议;特点五条是满足大量应用需要、运行于多种硬件和 OS 平台、支持分布计算提供透明交互、支持标准协议、支持标准接口;Standish 十大优越性;总建设费用可减少 50% 左右;集成不同时期不同系统上的应用是操作系统和数据库管理系统本身做不了的;接口不变则应用软件几乎不需修改。
明
阿明
概念这块的坑位都摸清了。下一集讲什么?
雅
小雅
下一集把中间件按职责分成八大类,一类一类拆——哪类是市面上销售额最大的中间件产品、哪类增长率最高、两大明星产品 IBM MQSeries 和 BEA Tuxedo 各自的关键功能,那集里藏着两个最容易互串的产品定位陷阱,MQSeries 和 Tuxedo 到底谁是消息中间件谁是交易中间件,考试年年拿这个杀人。