系统架构设计笔记(77)—— 中间件技术

中间件( middleware )是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处在操作系统 、 网络和数据库之上,应用软件的下层(如图 1 所示),也有人认为它应该属于操作系统中的一部分。

1 中间件的概念

中间件从诞生到现在,虽然仅有 10 多年时间,但发展极其迅速,是有史以来发展最快的软件产品,但在技术上还处于成长阶段,还没有统一的标准和模型,通常都是用 C++ 语言以面向对象的技术来实现的,但是它的特性已超出面向对象的表达能力,由于它属于可重用构件,目前趋向于用构件技术来实现。然而,中间件要涉及软件的所有标准 、 规范和技术,它有更多的内涵,因为它包括平台功能,自身具有自治性 、 自主性 、 隔离性 、 社会化 、 激发性 、 主动性 、 并发性 、 认识能力等特性,是近似于 Agent (代理)的结构。

目前很难给中间件一个严格的定义,国际上各家机构都有不同的定义,如 IDC 对中间件给出的定义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。这些服务程序或软件具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。中间件为处于其上层的应用软件提供运行与开发的环境,帮助用户灵活 、 高效地开发和集成复杂的应用软件。

中间件应具有如下的一些特点:

  1. 满足大量应用的需要;
  2. 运行于多种硬件和 OS 平台;
  3. 支持分布计算,提供跨网络、硬件和 OS 平台的透明性的应用或服务的交互;
  4. 支持标准的协议;
  5. 支持标准的接口。

世界著名的咨询机构 Standish Group 在一份研究报告中归纳了中间件的十大优越性:

  1. 缩短应用的开发周期;
  2. 节约应用的开发成本;
  3. 减少系统初期的建设成本;
  4. 降低应用开发的失败率;
  5. 保护已有的投资;
  6. 简化应用集成;
  7. 减少维护费用;
  8. 提高应用的开发质量;
  9. 保证技术进步的连续性;
  10. 增强应用的生命力。

具体来说,首先,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少了程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。中间件带给应用系统的,不只是开发的简便 、 开发周期的缩短,也有系统的维护 、 运行和管理的工作量的减少,还减少了计算机总体费用的投入 。Standish 的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少 50% 左右。在网络经济 、 电子商务大发展的今天,从中间件获得利益的不只是 IT 厂商, IT 用户也同样是赢家,并且是更有把握的赢家。

其次,中间件作为新层次的基础软件,其重要作用是将不同时期 、 在不同操作系统上开发的应用软件集成起来,彼此无缝地整体协调工作,这是操作系统 、 数据库管理系统本身做不了的。中间件的这一作用,使得在技术不断发展之后,人们以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力 、 财力投入。

最后,由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而节省了企业在应用软件开发和维护中的重大投资。

2 中间件的分类

好比一个大型城市的交通系统,将网络看作市区马路,通过交通工具(如汽车)实现通信,每分钟将有数以万辆车在马路上行驶,如果没有相应的交通设施和管理规划,城市将会乱成一团,发生各种交通事故,中间件系统就相当于这些配套的交通设施。按照中间件在分布式系统中承担的职责不同,可以划分以下几类中间件产品。

(1)通信处理(消息)中间件

正如,安装红绿灯,设立交通管理机构,制定出交通规则,才能保证道路交通畅通一样,在分布式系统中,人们要建网和制定出通信协议,以保证系统能在不同平台之间通信,实现分布式系统中可靠的 、 高效的 、 实时的跨平台数据传输,这类中间件称为消息中间件,也是市面上销售额最大的中间件产品,目前主要产品有 BEA 的e Link 、 IBM的MQSeries 、 Tong L等。实际上,一般的网络操作系统如 Windows 已包含了其部分功能。

(2)事务处理(交易)中间件

正如城市交通中要运行各种运载汽车,以此来完成日常的运载,同时随时监视汽车运行,在出现故障时及时排堵保畅。在分布式事务处理系统中,经常要处理大量事务,特别是 OLTP 中,每项事务常常要多台服务器上的程序按顺序协调完成,一旦中间发生某种故障,不但要完成恢复工作,而且要自动切换系统,达到系统永不停机,实现高可靠性运行。要使大量事务在多台应用服务器上能实时并发运行,并进行负载平衡的调度,实现与昂贵的可靠性机和大型计算机系统同等的功能,为了实现这个目标,要求中间件系统具有监视和调度整个系统的功能。 BEA 的 Tuxedo 由此而著名,它成为增长率最高的厂商。

(3)数据存取管理中间件

在分布式系统中,重要的数据都集中存放在数据服务器中,它们可以是关系型的 、 复合文档型 、 具有各种存放格式的多媒体型,或者是经过加密或压缩存放的,该中间件将为在网络上虚拟缓冲存取 、 格式转换 、 解压等带来方便。(4) Web 服务器中间件。浏览器图形用户界面已成为公认规范,然而它的会话能力差 、 不擅长做数据写入 、 受 HTTP 协议的限制等,就必须进行修改和扩充,形成了 Web 服务器中间件,如 Silver Stream 公司的产品。

(5)安全中间件

一些军事 、 政府和商务部门上网的最大障碍是安全保密问题,而且不能使用国外提供的安全措施(如防火墙 、 加密 、 认证等),必须用国产产品。产生不安全因素是由操作系统引起的,但必须要用中间件去解决,以适应灵活多变的要求。

(6)跨平台和架构的中间件

当前开发大型应用软件通常采用基于架构和构件技术,在分布式系统中,还需要集成各节点上的不同系统平台上的构件或新老版本的构件,由此产生了架构中间件。功能最强的是 CORBA ,可以跨任意平台,但是过于庞大; Java Beans 较灵活简单,很适合于做浏览器,但运行效率有待改善; COM+ 模型主要适合 Windows 平台,在桌面系统已广泛使用。由于国内新建系统多基于 UNIX (包括 Linux )和 Windows ,因此,针对这两个平台建立相应的中间件市场相对要大得多。

(7)专用平台中间件

为特定应用领域设计领域参考模式,建立相应架构,配置相应的构件库和中间件,为应用服务器开发和运行特定领域的关键任务(如电子商务 、 网站等)。

(8)网络中间件

它包括网管 、 接入 、 网络测试 、 虚拟社区 、 虚拟缓冲等,也是当前最热门的研发项目。


猜你喜欢

转载自blog.csdn.net/deniro_li/article/details/108807906