Microsoft .NET框架糅合各种编程语言,开创Web新时代
华盛顿,雷德蒙,2000年7月11日——David Simmons几乎使用过所有的编程语言(确切地说,使用过20种编程语言。)在其长达23年的软件开发生涯中,他无数次目睹了编程人员为成功调试出多个可以相互通信的应用程序,通宵达旦奋战无数个日日夜夜的艰辛过程。生平第一次,他的头脑中猛地浮现出一个全新的解决方案。
“.NET框架开启了通向软件开发复兴的大门。”Quasar Knowledge Systems(QKS)的奠基人和总裁Simmons说。QKS是一家致力于提供SmallTalk语言产品的知名公司。“近几年来,业内人士热切希望能够找到一个完美的单一语言解决方案。但是,无论从商务还是软件技术创新的角度考虑,该策略都无法使人感到振奋。微软正致力于提供一个可以构建任何语言工具的基础框架。”
今天,微软专业开发人员大会在佛罗里达州举行。会上,微软正式公布了作为.NET平台一部分的.NET框架。.NET框架通过糅合各种编程语言,将极大地简化必须要当今开发人员处理的大量复杂编程杂务。除了能极大地简化开发人员必须处理编程“管道”外,.NET框架更重要的功能是,自动将任一应用程序转化为可复用、具有互用性的Web服务。
可使用基于Web的“服务”构建明天的软件应用程序,正如今天可使用“组件”构建应用程序一样。
“微软致力于实现通过互联网和企业内部网将软件转化为服务这一宏伟蓝图。”微软Web服务中心的成组产品经理John Montgomery说。Montgomery深信,微软开发的新型编程环境将大幅度提高开发人员的生产力,并将今后的各种应用程序转变成软件“部件”(或服务)集合。今后,人们可通过互联网或公司网络轻松访问这些部件,而且比当今开发人员使用软件组件还要容易。
消除“巴别塔”效应
微软正深刻地改变着开发人员的工作方式。开发人员需要从头到尾编写整个应用程序的手工编写时代已经一去不复返了。在过去的十年中,人们一直使用松散耦合的部件——软件组件——来构建应用程序,致使应用程序变得日益庞大和复杂,不同开发人员选用的是不同的编程语言、对象模式和操作系统,这在一定程度上削弱了部件之间的互用性。
“把用多种编程语言写出的程序块连接起来,以使它们能协同工作,一直是件让开发人员倍感头疼的苦差事。”交互式软件工程公司总裁Bertrand Meyer如是说,该公司因其开发的Eiffel软件开发工具而在业界声名远播。“大多数开发人员放弃了努力而埋头工作于单一语言环境中。他们要么受困于十年前制定的设计方案,要么费时费力地对方案进行修修补补却收效甚微。”
如今,微软正致力于将多个组件改装成集成通用型的组件。微软认为,开发人员正逐渐从过去的繁复编程事务中解脱出来,可以选择自己最得心应手的编程语言进行编程。
“编程语言的互用性将带给编程人员最大的实惠。”Meyer说。“.NET框架从来没有像现在这样,神速般地将开发人员所梦想的编程语言互用性变成近在眼前的现实。开发人员在工作中可以随换随用另一种编程语言,这大大避免了初投资金的浪费。”
实际上,在.NET框架中,所有的编程语言,从相对简单的JScript到复杂的C++语言,一律是等同的。当前,开发人员必须依据所选编程语言来使用不同的命令集,这些命令被称作“框架”。当不同编程语言发生冲突时,就会导致“巴别塔效应”。也就是说,当各种编程语言混杂在一起时,任何一种编程语言的效力都会被削弱。另外,开发人员在学习一种新的编程语言时,总会经历一段艰难的学习期,Montgomery说。
有了.NET框架后,开发人员便可对选用的任何编程语言一律使用统一的命令集,他解释道。
“只需简单地一用,.NET框架便可消除各种异类框架之间的差异,将它们合并为一个整体。.NET的作用不仅仅是将开发人员必须掌握多种框架的束缚中解脱出来,通过创建跨编程语言的公共API集,.NET框架可提供强大的跨语言继承性、错误处理和调试功能。现在,开发人员可以自由地选择他们喜欢的编程语言。.NET平台欢迎所有人的垂顾。”Montgomery说。
语言互用性允许编程人员使用不同编程语言编写各个组件,再将这些组件连接成一个大型的应用程序。更令人振奋的是,他们还可充分利用互联网和企业内部网的优势,访问整个网络上的Web服务。Montgomery说,开发人员将负责构建和出售这类Web服务,使其成为其他开发人员可以提取引用的庞大软件资源。将来,应用程序的功能会变得十分强大和易于构建。
应用程序正在演变为软件拼凑件
“它攸关生产力的高低,是人们势在必行的选择。”Montgomery又补充到。“开发人员可以通过合并远程服务、本地服务以及自定义代码来创建应用程序。”这些服务通过使用Web的lingua franca(一种可扩展的标记语言,即XML)与应用程序进行交互。
Web服务易于使用,因为它们是自我描述型的服务,只需告诉开发人员当前服务期望获得什么信息以及它将提供什么服务,而不必让他们了解组件的内部运行机制及过程。可以将这些服务进行合并。从任何平台、用任何编程语言编写的应用程序都可调用该服务,Montgomery解释说。开发人员可从整个Web服务资源库中提取所需的组件,再进行组件“拼凑”,最后生成具有更强功能的应用程序,同时节省了大量时间。
“Web服务能在各种场所大显身手——可将它们视作运行于互联网或企业内部网之上的应用程序,而不是本地应用程序。”Montgomery说。举一个语言翻译服务的例子。可以对运行于Web之上的Lernout和Hauspie翻译引擎进行改造,将其变成一个可进行简单翻译的电子邮件程序。用户便可以发送和接收用外文撰写的电子邮件。
“目前,如何将不同组件和脚本语言集成为一个紧密整合且易于维护的解决方案,是一项难度很大的任务。”Simmon说。“微软的Web服务提供了一流的集成技术运载工具,开发人员可从其中挑选最为适合的技术,顺利完成组件的平滑集成。”
“Web服务最基本的特性就是其可复用性。微软在帮助开发人员创建可复用的软件方面,有着十分丰富的经验。”Montgomery说。“微软的组件对象模型(COM)自问世八年以来,已演变成业界内迄今为止最成功的组件模型。用户可用它创建可多次复用的代码块。”他说。这些组件可以执行任何类型的任务,从执行一个简单函数到运行诸如Microsoft Word整个应用程序,无一不能。
Dick Hardt,ActiveState的创始人和执行总裁,在开始其软件编程生涯时,使用的工具是Windows 1.03。ActiveState是一家为开发人员提供编写Perl和Python互联网编程语言的工具和服务的知名公司。他亲历了十四年来编程技术的历次重大变革。“在我们从事编程的头几年里,谈不上有什么软件的复用性。”他说。“自引进COM以来,少数几种编程语言之间可以实现可互用性。今天,可互用性大大降低了软件开发费用,它从根本上改变了编程技术的发展方向。然而,Microsoft .NET框架可提供最直接的可互用性。您可随意使用任何一种编程语言来创建并使用组件,还可对组件进行扩展。这使得我们向着更完美的目标跃进了一大步。”
自动处理事务管理细节
许多事实表明,微软推出的.NET框架,正帮助开发人员逐步地从繁重的重复性编程中解脱出来。当今,开发人员需花费大量的心血来处理数目庞大的编程杂务,诸如访问计数和内存管理等。这些细节的处理费时费力,大大拖延了软件产品投放市场的时间,情况十分糟糕。Montgomery说。
“多年以前,当尚未推出COM时,开发人员只用五行C语言代码就能编写出一个简单程序。若使用COM来编写这个程序,则需要编写几百行代码。可见,COM在带来巨大价值的同时,也大大增加了开发开销。”Rational Software公司开发人员工具小组的工程负责人Jon Sanders说,Rational Software是一家提供软件开发工具、服务和软件工程的最佳业务公司。“现有了.NET框架,开发人员编写这样的程序又只需五行代码便大功告成。我们似乎是免费获得了COM的全部价值。
“如今,有数量众多的样本文件代码零散地分放在许多地方,必须对这些代码进行同步处理,才能保证程序的正常工作。“现在,.NET框架可以将处理这类细节的杂务分派给系统去完成——从而彻底解决了样本文件代码问题。”
如今开发人员可利用.NET框架自动执行许多任务。而在过去,开发人员必须手动处理这类任务,且很容易出错,Montgomery说。.NET框架可自动管理枯燥而复杂的编程细节,诸如管理内存、启动或取消线程和进程、增强安全性能以及适应从属组件等等。
有了.NET框架处理众多的杂务管理任务,开发人员需编写的代码量便大为减少,生产力便显著提高,Montgomery说。同时,编程工作也会相对简单得多。他接着又补充道,开发人员编程出错率大大减少,编程错误影响其它应用程序的可能性也随之锐减。
Simmon把当前的