细说VB.NET(下)
(作者:青苹果工作室编译2001年03月07日 14:47)
Visual Basic.NET 的面向对象功能很伟大,但第一次启动 VB.NET 时还注意不到它。可能你注意到的第一件事是它的 IDE。IDE看起来可能很熟悉,建立VS.NET IDE的团队以前的工作是开发VB的IDE,对IDE的增强借鉴了VB IDE的经验。
同时,IDE的改变远比外表显示的深刻。所有.NET语言使用相同的IDE,并且IDE中的新工具功能强大又易于理解。你能把任何一个设计窗口设置为自动隐藏 (就像你能自动隐藏Windows任务栏那样),这样就大大地减少了混乱。主工作区域是一系列选项卡,这意味着IDE不再同时显式多个表单和代码模块。当打开对象的源代码时,IDE在它的主工作区域为工作的对象添加一个新的选项卡。
IDE还包括一个叫作任务表(Task List)的新窗口。它的内容由IDE创建的项目组成。例如,如果在试图编译一个工程时收到一个错误,VB在任务表里创建一个项目来解释这个错误。你能直接向任务表里添加项目,或者通过在代码里以 "TODO:"开始一个注释行,你可以在代码位置和任务之间建立联系。我喜欢Microsoft实现任务表的方式;在程序出炉前,都需要完成些什么?估计它能帮我省掉很多时间和麻烦。看到它时,你最容易产生的一个想法就是:以前怎么就没人想到它呢?
你能注意到的另一个变化就是:VB.NET的表单。Microsoft废弃了旧的表单引擎而使用Windows Form代替它。所有基于 CLR的语言都使用Windows Form引擎。相对于VB6的表单引擎,它有几个重要的改进。例如,Windows Form让你能创建能自动调整组件尺寸的表单,并允许将控件锚定在表单里的特定位置。换句话说,不再需要使用第三方控件就能完成这些特殊任务。Windows Form还允许表演像透明表单这样的很酷的技术。
过去,VB隐藏了建立表单的所有魔术。你使用IDE设计表单并把代码添加到Initialize事件上,但你没有手段来控制这两点之间的过程。现在,表单就是一个类,它包含用来建立表单所有的代码。我把这些代码称为肥料代码,因为大多数开发者希望远远离开它们,越远越好。要想可靠地弄坏你的程序,没有比折腾这些代码更好的办法了。另一方面,技术娴熟的用户可以通过这些代码做很多很酷的事,因为它让你能走到VB.NET表单的幕后。要是你不想看到这些代码你也能不看,因为新代码编辑器有展开和折叠代码区的功能,并且这些肥料代码是默认折叠的。代码编辑器还有几个很酷的新功能。例如,现在它自动为你缩排所有代码(而且还干得不错),它还有内置的显示行号功能。
创建编译的服务器端代码
除了新的Windows Form引擎,.NET还包括一个为创建Web表单而特别设计的表单引擎。这些被称为Web Form的表单很聪明,就像VB让你能很容易地为传统Windows桌面应用程序创建表单一样,它们让你能方便地为Web创建表单。Web Form是 ASP.NET里的技术,让你能使用熟悉的RAD工具创建带有代码的表单。创建的ASP.NET代码编译并驻留在服务器上,并在那里被执行,然后以HTML方式发送给任何一个支持HTML 3.2的浏览器。
底层结构捕获客户端上的事件数据,并把它发送给服务器。这意味着可以使用各种用户界面工具,可以利用现有的表单设计技巧,而且应用程序界面是不依赖浏览器的。如果可以放弃不依赖浏览器,你还有另一个选择来利用Internet Explorer 某些功能特有的优势。Web Form使支持Web的应用程序能更容易地创建更好、更丰富多彩的用户界面。
Web服务策略
VB.NET里的另外一个重要的面向Web的功能是:Web服务。Microsoft的市场部门把Web服务列为采用.NET的几大理由之一。实际上,Web服务的本质就是使用标准协议的、由Web服务器提供的、类似于COM的对象。注意在技术上它们并不是COM对象,但和COM对象的表现方式很相像。Microsoft希望看到所有的公司使用Web服务,并且未来的应用程序可以简单地“粘”在不同的Web服务上,就像现在可以使用Visual Basic for Applications (VBA)建立基于Office和支持VBA的程序的解决方案一样。
在PDC上,对于它希望开发者如何“粘”在这些服务上,Microsoft提供的一个演示程序给出了很好的例子。在这个演示程序里,一个假想的诊所通过Web服务提供预约系统,演示了你可以怎样使用智能电话通过Web进行预约。Visual Basic.NET 甚至会允许你查询服务器,并获得关于服务器能支持的所有Web服务的相关数据。通过IntelliSense dropdown这个绝对有用的工具,程序员可以访问Web服务。Web服务是Microsoft雄心勃勃的战略,但只有时间才能检验它是否能成功地被广泛接纳。
Microsoft试图消除与包装和分发应用程序相关的问题,包括令人恐惧的DLL。所有.NET应用程序被封装为元件。元件包含着数据以描述它运行所需的东西。这些数据被称为货单,包括很多信息,例如:元件身份(名称、版本等等);一个列出了所有文件之间的依赖关系的表,以及它们的位置和版本;包括DLL相关数据的外部依赖关系信息;还有其它元件需要而开发者没有创建的资源。元件是自说明的(通过它们的货单),所以.NET应用程序不需要修改注册表才能工作。换句话说,你不再需要注册表组件。在最好的情况下,即客户机里已经有了.NET运行库时,分发一个复杂的应用程序可能只是把一个文件夹复制到目标机器上这么简单的事。元件的另一个好处是:你可以让不同的应用程序使用同一个DLL的不同版本,并且协调地运行在一台机器上。如果所有这些都可以像计划中那样工作,有关DLL的地狱和版本的噩梦就将成为往事。
正确之路
Microsoft彻底更新了它的技术,而不仅仅是核心语言。例如,在Visual Studio.NET里同时提供了ADO.NET,这是有特殊优点的下一代ActiveX Data Objects (ADO) 版本。它的一个灵活改变是:ADO.NET用Extensible Markup Language (XML)作为在组件之间传递数据集的格式。这意味着接收组件不一定必须是ADO.NET组件,同时接收组件可以接受任何XML 格式的数据集。谈到XML,它支撑着VS.NET中的任何东西,从配置文件到远端过程调用。ADO.NET在处理断开的数据集时比 ADO的性能要好,并且具有更好的伸缩性。
Visual Basic.NET对我们都很熟悉的VB做了重要的改变。C++革命性地跳跃到.NET后有了一个新名字:C#,而Visual Basic的名字没变。然而,如果你把VB.NET当作语法相似的一门新语言而不是简单的“升级”,可能掌握起来就要容易一些。本文给你一个起点,但吸收掌握各种知识,并对未来做出有根据的决定是一个艰苦的过程,它只是这个过程的一条起跑线。我不知道.NET会有多么成功,它的很多地方吸引我,但有些地方并非如此。这个工具做了大量承诺,它夸耀很多功能能使 VB开发者更简单地创建更有伸缩性的高端应用程序。最后,它的成功将取决于开发者能多好地将它应用于现实世界。纵观Microsoft在PDC和Beta 1版本之间的性能和稳定性上所跨过的这一步,我坚定地认为:Microsoft走对了路!
<全文完>