编程这么多年来,年复一年、日复一日,慢慢发现我们在很多的情况下重复着类似的工作。真的希望存在一种DIY的编程方式,于是发现了C++、发现了COM、发现了CORBA、发现了中间件。每一样都让人们说的美好,尤其到了中间件出现的时候,似乎它的出现意味着软件的工业流水线化时代出现了,于是又出现了软件蓝领等等概念。中间件真的那么伟大么?
什么是中间件?
有人提出,中间件应具有如下的一些特点:
± 满足大量应用的需要
± 运行于多种硬件和OS平台
± 支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互
± 支持标准的协议
± 支持标准的接口
中间件所包括的范围十分广泛,针对不同的应用需求涌现出多种各具特色的中间件产品。但至今中间件还没有一个比较精确的定义,因此,在不同的角度或不同的层次上,对中间件的分类也会有所不同。由于中间件需要屏蔽分布环境中异构的操作系统和网络协议,它必须能够提供分布环境下的通讯服务,我们将这种通讯服务称之为平台。
评论:
那么,按照这种定义模式,NDIS/TDI应该满足大部分要求了吧?从Intel到Alpha,从Win98到win2003——但没有人把他们说成是中间件的。
在众多关于中间件的定义中,还存在比较普遍被接受的定义——是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通信。IDC对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。
评论:
从IDC的定义来看,它是“一类软件”。既然是软件就应该是打了包的,打了包就应该形成目标代码——可是目标代码是依赖于操作系统和CPU的。有人说Java不依赖于操作系统和CPU啊,没错!但是,他的Vm确实依操作系统的不同而不同。
如果我用DSP做了一个自己的设备(家用还是工业用途随便了),其中我需要读写XML数据。那么,Midlleware提供给我的是什么呢?有么?如果我用单片机作的设备,恐怕命运还会更惨。
还有人把它说成COM/DCOM/CORBA等等,他们是么?也许是吧,他们在数据事务操作的多层结构中用到了,有人叫他们中间件。
不管大家的定义如何,有一个共同的东西:介于….之间。这种定义模式也与Middle相呼应了。至此,我们大概清楚了“介于….之间”的目的:桥梁作用(是木桥?铁桥?混泥土桥?立交桥?就甭管了,这是架桥人的事情)。
现在我们回过头来看看网络上的一篇新闻(由于过长,只摘录部分)
“人类社会的生产方式从19世纪的手工式单件生产进化到20世纪的大工业生产,其中关键的一步就是标准零部件的出现。功能再复杂的产品都是由大量现成的标准件装配而成,这就使得生产走向了规模化和分工协作的道路,并且,分工越细致、专业生产的程度越高,总体生产效率就越高。
说起来软件其实也是一种工业,软件构件化技术的发展就离不开大工业生产分工协作方式的启发,这也是软件技术跨世纪的一个发展趋势,其意义在于改变软件的生产方式,从个别生产发展到标准化分工协作,从而在根本上提高了软件生产的效率和质量,提高开发大型软件系统尤其是商用系统的成功率。
。。。。
2000年4月21日,中国软件行业协会在京举办"中间件技术与发展战略高级研讨会"。来自信息产业部、科技部、中国建设银行以及软件行业的专家和领导,针对中间件技术的应用现状和趋势,探讨了以中间件为突破口,推动中国软件产业进入大规模市场化的问题。国家科技部、财政部、税务总局也共同组织编制了2000年《中国高新技术产品目录》。软件第一次作为单独的技术领域列入本目录,中间件作为支撑软件也首次被作为国家高新技术产品划入软件产品之列。
3月2日,由北京市科委主持召开的2001年北京软件产业工作会议上,中间件再次成为关注热点。与会者有科技部马颂德副部长、信息产业部曲维枝副部长、电子信息产品管理司张琪司长、北京市科委范伯元主任、俞慈声副主任、中国软件行业协会杨天行理事长等有关领导。近日,信息产业部信息产品管理司司长张琪发布2001年信息产业的投资重点,涉及数字视听、通信、电子基础产品、集成电路、软件、计算机领域,中间件榜上有名。中间件所受的一系列关注和重视使我们有理由相信,在振兴中国民族软件的征程上,中间件将担负起重大的责任,中国能不能成功?中间件能不能成功?看来,注定了从中间件诞生的那一天起,它就要吸引我们大家的注意力。”
标准件、装配、大工业生产
中间件真的是“标准件”么?不是,他作不到!它也就是配件而已,就像国内的夏利配件似的,用量是很大,可是不是什么车都可以用。还达不到像螺丝、螺母、链条一样标准化——标准化的螺丝我可以用在汽车、电视、冰箱、飞机上面。既然不是“标准件”,那么他所装配的东西也是有限的(也就装一类车而已),它的大工业生产,也就是生产很多某一类汽车。对于最后一段中的粗体文字,我就不说什么了(难道重视就一定会承担起重大责任么?)。
是不是说中间件一无是处?不是!它是一个好东西,但还不够。如果真的需要达到我们期望的也许需要另外一种东西吧,我叫它“neutware”,它应该是中性的,而不是中间的。它应该是“件”而不是“模块”。它应该是半开源的——也就是说它可以提供具有版权的源代码、也可以提供编译好目标代码。
[以上只是个人观点,如有不同意见者可以共同讨论]
作者:权彦杰