从信息孤岛的pc机到主机/哑终端、客户/主机模式到多层中间件分布计算,直到今天的网络web服务,计算机应用可能性的边界不断扩展。今天已经没有人怀疑互联网的巨大力量,互联网正日益取代单一操作系统成为新的开发平台。时势造英雄,社会一旦有需要,将比十所大学更能够实现技术的突破。意欲实现互联网无缝应用的多种努力在2001年浮出水面:sun的one环境、HP的e-Speak、微软推出.NET战略。微软的.NET战略无疑更是2001年世界IT界的一个hot issue。sun与微软在众多IT领域都可谓两个不同阵营的旗手,因此对于开发人员而言,在新的一波技术浪潮扑面而来时,选择微软还是sun公司无疑是一个需要慎重权衡的选择。
一、构建开放互联网
构建无缝互联网应用所面临的根本问题在于,互联网环境下操作系统以及应用逻辑开发工具没有统一标准,于是首先产生了操作系统与开发工具的选择问题;其次、几乎所有开发都要依靠函数库或者说组件的调用,微软WFC以及COM、Java的Javabean,都是开发人员熟悉的函数库。随着网络应用的发展,各厂商将传统组件技术发展,如微软DCOM、sun的RML等,以适应客户/主机局域网环境。但在更加开放的互联网环境又出现了新的问题,在互联网环境中,组件调用处于一个高度弹性的环境,现有的组件框架缺乏版本治理功能造成组件版本冲突, windows环境中所谓的dll hell问题就是一个显例,则无疑增加开发成本降低开发效率。
试图统一操作系统存在很大难度,比较之下在应用逻辑开发层次实现开发工具的无缝连接,是互联网环境下构建无缝应用更现实的途径。实现开发工具的统一可以有不同的思路:一是所有开发都采用同一种开发语言而获得互联网环境的无缝应用;这同使用一种操作系统一样不太现实。二是对不同操作系统平台,通过“中间代码”实现不同开发语言的跨平台无缝集成。Java就是该思路的产物。三是在不同主流开发语言的基本语义要素诸如数据表达方式、函数调用之间建立统一的转换规则,在一个平台上实现不同开发语言的无缝集成。微软.NET框架就是这种思路的产物。很明显,后两者之间差别很大。.NET很难认为是一种开放框架。
二、技术比较
.NET的主要特性有:
1、自描述组件。传统组件不能在互联网环境中无缝应用的一个根本原因是,组件本身没有包含在网络环境下必须的信息,比如组件版本信息(作者、建立时间、权限等);基于角色的安全检查特征等。.NET引入自描述组件,简化了怨声载道的COM组件复杂开发过程,纳入网络环境所要求的信息,因此不再需要系统注册,只需拷贝在指定目录下即可,实现了Java的同样特性。另外提供了一些组件新特性如reflection,减少组件开发的代码编写量。答应不同组件间的手动配置,配置信息以与语言无关的XML标准保存。
2、Microsoft Intermidled Language(MSIL)。类似Java虚拟机跨平台机制,实现不同主流语言之间基本语义要素在windows平台上的翻译。
3、跨平台运行库。通过MSIL以及soap、scl、disco、wdsl一系列协议,.NET定义了一套跨平台的运行库。C++使用的MFC、Java使用的WFC、vb使用的VBAPI都统一在一个框架下。在windows环境下开发时,程序员只需考虑自身偏好选择开发工具。
4、ASP+ 。即asp的提升,以VB7代替脚本语言Vbscript,编程更自然,功能更强大,安全性更高。可以将多种组件直接应用于Html界面,并提供了网络环境下实现特定服务的组件如进程自动治理组件,内置xml。已有测试表明,ASP+平均性能较ASP提高了3倍,而最重要的是软件开发效率大大提高,成本下降。
.NET具备了Java的大多数精华特性比如内存自动治理特性。但是,.NET仅仅在windows平台实现web集成应用,其他操作系统被排斥在外。对于Java而言,虽然具备跨平台特性但要求所有的开发者都使用一种开发语言以实现互联网应用的开放性,似乎也难以做到。令人注重的是..NET框架中的c#,与Java 比较,两者都是c语言的发展,语法格式十分近似,微软试图以此吸引一批Java开发者向..NET框架的转移。微软在市场份额上占有优势,Java也拥有大批追随者,谁将是互联网计算模式的最终赢家,只能拭目以待。
三、结语
.NET的推出,是互联网无缝应用的一大突破。但是,微软最终的意图是明显的,企图在互联网时代在更高层次上实现对市场份额的控制。微软一贯的老大作风已给世人深刻印象,从操作系统、数据库、办公软件、浏览器乃至网络音频新压缩格式WMA,微软似乎无处不在,互联网计算也不会例外。微软已公布在其windows XP中不再支持Java,虽然根据sun与微软协议,微软还拥有7年时间使用Java。
客观地说,微软是最具实力担当实现互联网环境统一计算模式的厂商之一。.NET战略事实上是微软面对来自Linux为代表的自由软件以及Java为代表的跨平台编程语言的压力而做出的回应。IDG数据显示,Linux在服务器份额正逐渐逼近微软Windows,前者为27%,后者41%,而前者增长速度快于后者;业界主要厂商对Linux应用的支持也有目共睹。Linux上应用的日益丰富,必然对微软日益构成威胁。为了与Linux抗衡,微软开始对python等自由软件进行有限支持;答应其战略合作伙伴查看微软代码,但依然将最终修改权把握在自己手中。
微软面临拥抱互联网开放与维持其垄断利润的抉择或者说寻求一种平衡。开放是计算机发展的巨大动力,微软的自身利益只能在一个开放的环境中才能够得到维系发展。计算机发展史上不乏封闭垄断走向式微消失的大公司,王安就是前车之鉴。2001年3月,Borland发布了Delphi在Linux下的RAD工具Kylix,将使得大约80%NT应用移植到Linux平台;其他平台应用模拟自由软件诸如Lin4win、vware等也对windows应用构成一定压力。或许微软在.NET中已经埋下竞争的下一步伏笔,.NET虽然目前局限在微软平台上,但其采用的底层协议是标准通用协议,假如竞争格局需要时,从微软平台扩展到其他平台并非难事。