下一代IT技术焦点:信息交换

北京科泰世纪科技有限公司 陈榕,杨维康,刘艺平

 

  信息交换的话题得从"软件就是服务"说起。软件就是服务的概念并不是指软件工程师对客户要有非常好的工作态度,也不仅是应用软件提供的服务功能。而是指在因特网环境下,计算机程序(也就是软件)之间协同工作的一种新的运算模式。

  最初人们写程序是一道程序从头写到尾。80年代随着网络的普及,出现了TCP/IP,以及与之相适应的计算模型--客户/服务器(Client/Server)模型,也就是常说的两层结构。90年代后期,因特网连接到千家万户,人们对软件的认识更加深刻,从而出现了所?quot;三层结构"计算模型,中间的一层叫做中间件(Middleware)。所以三层结构指的是客户/中间件/服务器 (Client/ Middleware/Server),而并非指应用程序/支撑软件/操作系统。

  微软公司曾经称三层结构模型为Windows DNA(Distributed interNet Architecture)。后因其晦涩难记,微软进而用更富广告意味的"软件服务"(也称 WEB服务)取而代之。他们之间的差别仅仅在于用词不同而已。太阳公司(Sun Microsystems)也曾大肆宣扬J2EE,其晦涩程度不亚于Windows DNA,现在大概也被WEB服务的叫法统一了。

  不管三层结构模型现在叫什么,我们先分析一下它到底能做什么,能给我们带来什么好处。首先让我们用下面这张图来类比一下WEB服务的情况:   图中坐办公桌的人打电话请远在千里之外的带帽子的人帮忙。"办公桌"先查了电话黄页,然后拨号给"帽子"。"办公桌"并不知道"帽子"的具体位置、通话的传输介质、通话的传输协议、通话有没有被监听,他也不关心"帽子"是否用了呼叫转移、信号是走卫星还是走微波、对方是否是集群呼叫中心、信号是否被加密等等;总之"办公桌"只是一心要"帽子"为他提供必要的"服务"。 我们仔细看看,"办公桌""电话局""帽子"不也是三层结构吗?单就工作量来看,"电话局"在其中做了大量实际而不被人们所注意的事情,这正对应了现代因特网的工作范畴。而从服务与回报看?quot;帽子"提供了服务,电话局也提供了服务。电话局提供的是语音交换的服务,一种"雁过拔毛"的服务,或者可以说是服务的服务。我们试想到底是 "帽子"赚的钱多呢,还是做"电话局"赚的钱多?大概读者会联想到中国电信,答案在心里应该有点数了。

  其实如今的计算机软件越来越庞大,大工业化的生产与协作是必然趋势。操作系统单单管好自己的脑、自己的芯,已经远远不够了。计算机也要交流,要生活在因特网的大社会里。同一幅网页里的广告、新闻、MP3,可能来自不同的网站。电子邮件、网上聊天、信息检索、文件加密等也都?quot;人"提供服务。如果读者试想着把"办公桌"、"帽子"当成客户程序和应用软件,把"电话局" 当成操作系统和因特网,您能得出一幅怎样的图画呢?

  如果用户软件与服务软件之间的通信协议,由TCP/IP在神不知鬼不觉的环境里变成了HTTP,有人管这叫跨防火墙;如果协议对来往消息作了备份,系统就可以容错;如果协议根据服务器繁忙程度分配消息,就是负载均衡;把这些功能实现在一个进程里,这个进程就叫应用服务器(Application Server);等等。总之所有电信局里常见的"招数",在因特网里都找得到一个对应的新名词儿,并且还被说得神乎其神。

  软件与软件之间的"电信服务",就是我们标题上说的信息交换服务。传统的计算机操作系统体系结构,诸如Windows XP和Linux,经过近几十年的发展,千锤百炼,几乎到了炉火纯青的地步。但是现在没有一个单机上的操作系统可以直接胜任信息交换服务,于是就出现了微软的.NET,其首要目的是提供信息交换的服务。SUN公司的JAVA也是在做这件事。这些大公司都鼓励大家去做软件的"医生",软件的"律师",都去提供所谓理所当然的"服务"。那么类似"中国电信的服务",他们却只字未提,原因就是因为他们要做"中国电信的服务",实现更大范围的垄断。

  归根结底,软件服务中的最最重要的服务就是因特网时代信息交换的服务。

  那么,这种信息交换的服务是怎么实现的呢。话题又回到了本文开头提到的客户/中间件/服务器三层结构。这种三层结构模型中的重要概念是构件和中间件。

  以前常讲的对象是指数据结构加运算,对象实现了程序模块的封装,使得程序结构更加清晰,但是对象模型是静态的,不能在运行时动态组织程序,因此不能实现信息交换的服务。比如我们不能想象现代的电信服务是N×M个固定的连接,不可以根据通信请求更换通信的物理通道。

  构件是对象加元数据的程序模块,元数据(Metadata)是对运算的描述,例如JAVA的类信息(Class Information)。在三层结构中,当客户程序需要调用一个软件服务时,系统负责找到服务程序,并且根据元数据动态生成代理构件,实现客户与服务连接的环境。这个由系统动态生成的代理构件就是中间件。在这种机制中,客户与服务不再直接接触,所有的通信机制都通过中间件自动实现,这样,系统就可以提供对用户透明的服务,自动实现上面提到的更换通信协议、加密、监听、过防火墙、容错,以及分布式的事务处理等功能。中间件扮演着类似于电信的服务,做软件交换的服务。

  通过因特网找服务,这个服务在全网上对用户是透明的,这就是网格计算(Grid Computing)。当一个人在移动的过程,系统自动定位,提供与环境相应的服务,这就是MIT大学研究的普适计算(Pervasive Computing)。这些都需要系统自动地提供相应的通信与计算环境,其关键技术就是中间件技术,中间件程序设计技术是因特网时代技术的纲。

  从面向对象编程到面向构件、中间件编程,是网络时代编程技术的飞跃。该技术提供了面向网络应用的有效的计算模型,同时构件的独立升级、自动加载、跨平台兼容、可复用等特性提供了软件工厂化生产的先进手段。

  为什么发明JAVA,发明.NET?有人说发明JAVA是因为语法简单、废物回收、跨平台,这都是JAVA的优点,但有一点没说清楚,Java的核心其实是编译后为.CLASS文件,它的编译结果里放了类信息,也就是元数据,这才是JAVA作者的画龙点睛之笔。C++生成的目标代码中没有类信息,所以称其为.OBJ文件。JAVA的.CLASS是在更高一层的数学空间讨论运算模型问题。为了处理元数据发明了新语言,为了生成中间件发明了虚拟机,为了建立软件工厂发明了构件库。虚拟机实际上是一种特殊的操作系统。语言、虚拟机、构件库三位一体,就是为了有效地描述面向构件、中间件编程的新思想,新的计算模型,就是为了更好地实现信息交换。而现在国内很多人还没有看清这一发展趋势,这就像传统的"地面战争"与立体的、空间的"战争"的比较。

  下一代信息和计算技术的应用和发展趋势已经十分明显,战略争夺的重点已经从传统的操作系统转移到了基于网络,面向构件的信息交换基础设施方面。JAVA 先走了一步,做了很多开拓宣传的工作。 微软正在利用自己在操作系统和构件技术上的优势,以.NET 奋起直追。

  这对于在计算机和信息技术上远远落后的中国来说,形势是十分严峻的。面对这场未来的战略制高点的争夺,中国能够立足和着力的基点十分有限。虽然几十年来在基础软件方面也在不断努力,也不断有成果通过鉴定,但是没有一个商业上成功的例子可循。

  更严重的不足是在观念上,对形势的判断和把握上。主要的资金、队伍不得不放在传统操作系统、LINUX、办公软件等"沦陷区"。我们应当看到传统的"地面战争"很快就要被"立体的"、"空间的"争夺所取代。

  在这样的局面下,中国应当抓住这次世界信息和软件技术战略大转移的机会。北京科泰世纪科技有限公司在面向三层结构编程的软件平台上提出了创新的思路。基本的思想是采用技术人员熟悉的C、C++语言实现面向构件、中间件编程;有效利用硬件资源,在操作系统内核上直接支持动态加载构件,运行二进制代码(Native Code)从而获得更高的运行效率。这样的思路有两重意义:一般的软件工程师可以运用已知的技术更容易掌握新的编程思想;运行效率的提高可以降低对硬件配置的要求。后者在像移动电话、PDA、信息家电等嵌入式设备中具有普遍的意义。

  北京科泰世纪科技有限公司推出的嵌入式操作系统Zyco和跨操作系统平台的ezCOM构件技术为中国基础软件技术与国际先进思想接轨做出了积极的努力。Zyco是多进程、多线程的32位实时操作系统,支持动态链接库DLL、动态加载应用程序。ezCOM构件技术与微软COM兼容;ezCOM开发环境自动实现构件的封装,简化了构件编程;ezCOM运行环境自动生成中间件,提供自行驱动构件的运行环境、自动化构件功能查询与调用以及自动化远程通信的系统支持。Zyco操作系统和ezCOM技术为各种嵌入式设备提供了在技术水平上与JAVA、.NET同步,面向网络服务的基础软件平台。

  中国软件行业能否抓住这次世界信息和软件技术战略大转移的机会?基础软件的突破与成功不是一个公司的努力就可以取得的,还需要决策层、业界、媒体、资金等等方面凝聚共识,协力同心,去尽最大的努力,争取最好的结果。