有不少人认为:"构件"这个词是翻译工作的一大败笔!
众所周知,翻译计算机术语是很难的,许多术语一直存在着广泛的争议。"构件"这个词也是如此,翻译过来的时候,到底是指"对象",还是指"组件",抑或是指"框架"呢?有时候似乎都可以指,有时候又似乎都不可以指,还有的时候,甚至和约定俗成的"中间件"相互混淆。所以说,从长远来看,很多人是不大赞成"构件"这种模糊的概念持续太久的。
著名的Brown和Wallnau描述构件为"一个非平凡的、几乎独立的、可替换的系统组成部分,它在定义完善的体系结构环境中实现某一清晰的功能"。人们认同这个定义,并非是它定义了"构件"这种产品形态,而是将其作为一种开发思想来看待。可以说,作为一种技术框架,"构件"是软件史上最伟大的发明之一;但作为一种产品形态,构件自始至终是模糊的。这从Brown和Wallnau的定义中也可以看得出来(这个定义大量使用了"几乎"、"非平凡"、"清晰"等形容词,难以精确描述)。
当然,这样说也许会损害一部分"构件"企业的利益,毕竟,这么多年他们都在推广这个东西,也有软件企业将其作为公司的发展方向;作为特定的产物,"构件"也的确解决大量用户的信息化问题;从现阶段来看,构件也不可能消亡,还有继续存在并延续的必要。但是,值得我们深思的是,"构件应向中间件回归"有一个更深层次的原因,那就是全球IT巨头利益纷争的问题。–IT产业的发展从来都是巨头们角力的结果。看看IBM,ORACLE,甚至是微软,他们谁还在鼓吹"构件"?现在他们一致把焦点放在"中间件"上,连"套件"都开始很少提及,此时,我们还指望谁去帮我们坚守"构件"?!
中间件是构件的支撑和基础
构件的存在某种程度上极大地依赖了构架技术,或环境、基础设施、计算平台,只有在适当的构架中,软件才有可能被抽象和隔离,最终成为构件。因此,单独讨论构件是抽象而空洞的。构架不是操作系统、数据库或网络协议,也不完全是应用,而是在某种特定意义上的构件运行容器,层次上界于应用和基础设施之间。
中间件是构件的支撑和基础。那么,什么是中间件?我们最早知道的中间件是一个称为Tuxedo的东西,实质上它是一个交易中间件。1998年IDC公司对于中间件有一个定义,并根据用途将其划分为6个类别。如今所保留下来的只有消息中间件和交易中间件,其他的已经被逐步融合到其他产品中了,被包裹进去了,在市场上已经没有单独的产品形态出现了。例如,当时有一个叫屏幕数据转换的中间件,其主要是针对IBM大机终端而设计产品,用于将IBM大机终端的字符界面转化为用户所喜欢的图形界面,类似的东西当时都称为中间件。但随着IBM大机环境越来越少,盛行一时的此类中间件如今已经很少再被单独提及。
中间件应该具备两个关键特征:首先要为上层的应用层服务,这是一个基本条件; 此外,又必须连接到操作系统的层面,并却保持运行工作状态,具备了这样两个特征才能称为中间件。现在很多人把开发工具也称为中间件是不合适的,因为开发工具开发出来的软件,并不依赖开发工具与底层操作系统连接。
这是国内最大的中间件厂商东方通对中间件的解释。在东方通科技的观念体系中,他们也一直认可并引用了"构件"的思想,并且为此提出了构件化的软件开发方法:通过把编程中一些常用功能进行封装,并规范统一接口,供其它程序调用,例如开发一个新软件,可能要用到构件1、构件2、构件3,那么,只要对其进行本地组装,就可以得到想要的应用软件。
不过在深度接触SOA之后,越来越多的厂商对后者引用的更多。尤其是网络时代,互联网得到普及,软件开发方法在构件化基础上又有新发展,核心思想是软件并不需要囊括构件,所需要的仅仅是构件的运行结果,例如编写一个通信传输软件,就可以到网上寻找构件,并提出服务请求,得到结果后返回,而不需要下载构件并打包,这就是现在所说的SOA。与构件的定义相比,SOA就明确自己是一种思想方法,并不是一个产品,而实现这种方法的基础,如今看来只有中间件。
随着SOA技术的复兴,越来越多的人已经意识到SOA时代的到来,许多厂商为此提出了自己对SOA的认识和观点。BOA(Business Oriented Architecture)是东方通基于对SOA的理解和认识所形成的观点,它通过实现SOA的本土化和业务化,实现SOA的零风险落地,以确保用户的投资。上图所表现的就是BOA涵盖的三个层面,即基础中间件、集成中间件和VSP,它很好地揭示了构件和中间件之间的关系,无论是传统技术还是SOA技术,基础中间件都是整个应用的基础和支撑。在实践过程中,比如东方通为工商银行开发的TongLINK GTP(General Data Transfer Platform),可以理解为一个应用构件或者服务,但它的基础是消息中间件TongLINK/Q,这样才能真正发挥它大量网络数据传输的功能。
构件应向中间件回归
考察一下IT产业的发展,可以发现软件开发的速度一直远远地落后于硬件的速度。而进入网络时代后,人们需要的是一种能以"Internet速度"开发软件的方法,如复杂的分布环境、灵活的应用模式、广泛的包容性等,此时,传统的软件设计思想显然已远远不够。
无论是构件,还是中间件,其实都是为了解决"复用"的问题,使编程工作简单化。构件是一种优秀的软件设计思想,对整个软件行业的发展有着至关重要的推动作用。而中间件作为应用软件系统集成的关键技术,保证了构件化思想的实施,并为构件提供了真正的运行空间。
中间件是基础软件,而构件是介于基础软件和应用软件之间的功能模块。在中间件上升、应用软件下压的夹击之下,构件的地位日趋尴尬。
作为一种框架,SOA解决了"构件"的艰难处境,成为"构件"思想的升级版。构件虽然解决了"代码复用"的问题,但是对于流程(BPM)管理,其实并不擅长。但BPM等流程管理思想,和"构件"搭配起来,就形成了SOA。而风起云涌的Web2.0技术,也使得SOA越来越热,"构件"则日渐模糊和虚化。
在EAI获得大规模应用的后期,ESB、BPM等"应用服务器"型中间件的涌现,使得应用层可以和中间件直接形成对话,"应用构件"逐渐被"服务"所取代。
现在,SOA已经有了一个庞大的"战阵"。 IBM、BEA、ORACLE、SAP,以及国内软件厂商东方通、普元、锐易特等,他们都是这个阵营的人,都以其中间件产品为SOA化着陆点。这其中的原因就在于中间件是企业信息化的底层平台,企业在这个平台上搭建了大量的信息系统,同时也在早前的建设过程中积累了大量的信息整合问题和需求,并且需要面向服务的体系架构以支撑下一步信息系统建设。
而反观"构件"阵营,则声音相对来说要微小而混杂。这里面既有概念模糊的原因,也是历史发展的规律使然!