文/VB爱好者 Visual Basic.NET(以下简称VB.NET)作为Visual Studio.NET中的一个部分,它是Visual Basic在.NET体系中的演化结果,Visual Basic.NET比Visual Basic 6.0更易使用、更强大,而且给它赋予了过去需要使用C++这样的语言才具有的访问某些系统资源的能力。
增加对象的继承性
在VB.NET里,所有受控类型都派生自System.Object。VB.NET现在提供大量面向对象功能,包括应用程序继承,其允许程序员从其他类导出并创建新的类,同其他面向对象语言里一样,VB.NET支持对基类的方法和属性进行覆盖以及对方法的重载,程序员借此可非常容易地实现多态及创建健壮的、扩展性好的组件。VB.NET的表单是类模块,程序员可以通过可视化继承创建一个表单模板类,并从这个基类里导出所需的表单。
在VB.NET中,一切都是对象,代码被充分复用,这种代码复用不仅仅体现在单个项目的开发过程中,而且还包括通过支持VB.NET的通用语言运行库CLR (Common Language Runtime)继承在其他VB.NET语言里定义的类。在.NET平台中扮演重要角色的是CLR,无论使用什么语言为.NET平台编写的代码都在CLR的控制之下运行。
事实上,CLR是用来取代现有COM、微软事务服务(MTS)以及COM+的一个架构。VB.NET运行在CLR的顶层上,CLR为其提供了许多关键功能并消除了在Visual Basic运行时库的需求。
垃圾收集器
垃圾收集器由CLR统一管理,提供了更好的内存管理能力。CLR通过垃圾收集器负责实时监视一个程序的资源,当可用资源达到确定的阈值时寻找无用的对象,并在发现它们的时候清除这些对象。CLR对资源的管理采用垃圾收集而非引用计数,这样做的理由之一是维护资源的引用计数将耗费更多的系统资源,得不偿失。垃圾收集的一大好处就是程序员不再需要担心大多数普通的循环引用,即子对象引用了父对象,然后父对象又引用了子对象。在引用计数方案下,循环引用使两个对象都不能被释放和清除。而垃圾收集器会发现循环引用并清除它们。
新增引擎
对于VB.NET的窗体(Form),微软废弃了旧的表单引擎而使用Windows Form代替它,事实上所有基于CLR的语言都使用Windows Form引擎。它可以轻松创建能自动调整组件尺寸的窗体并允许将控件定在窗体里的特定位置,而不需要增加许多代码。.NET还为Web窗体特别设计了Web Form引擎。一个Web Form页包括两部分,即实现Web Form可视界面的一个HTML文件和处理Web Form页事件的源文件。在VB.NET中,利用Web Form可像在VB中传统Windows桌面应用程序创建窗体一样。
Web服务
在Web(Web services)服务方面,微软大力推广.NET的一个重要理由就是对Web服务的全面支持,从技术角度.NET主要构筑在XML与SOAP上。Web服务的本质是一个通过标准网络协议发布的中间层的事件处理函数集,由于其使用HTTP作为传送机制可通过防火墙进行通信,因此只要合适地分配URL就可以一个网络应用程序中构造多种Web服务,当服务被请求时所有这些内部构件之间的调用都会自动打包并通过XML接口进行调用。
语法调整
为避免在跨语言开发时造成混乱,一般情况下都采用通用数据类型简化类型系统,而VB.NET默认的数据类型则为Object。
在VB.NET中Type和用户定义类型这两个名称会引起混淆,因为类、枚举和接口也是可以由用户定义的类型。因此,在VB.NET中采用Structure关键字代替原来VB中的Type关键字。
VB.NET为了与其他语言协同操作,所有数组的下限均必须为零;在Null和Null传播上,VB的Null值为Variant的子类型,表示变量不包含有效数据,Null值通过表达式和函数“传播”即如果表达式的任一部分为Null则整个表达式为Null,而在VB.NET中不支持Null传播。并且在VB.NET中,While的结束语句不再是VB中的WEnd,而是End While。
XCOPY部署方案
VB.NET使用了Windows应用程序的XCOPY部署方案,这样不必再担心DLL版本问题。随着VB.NET的发布,“DLL噩梦”将成为过去。另外,VB.NET不再有专用的运行时库。VB6生成的应用系统在运行时需要运行时库MSVBVM60.DLL,一般其他开发平台也有自己的运行时库,而在.NET框架下,其只需CLR运行时库MSCOREE.DLL和MSCORLIB.DLL,而这两个库不需要应用系统再特别打包,因为每个.NET框架平台都已包含这两个文件。
因此,若想完全掌握VB.NET的精髓,必须首先深入了解.NET机制和CLR的类库。作为习惯以VB为开发平台的众多程序员,一旦把握了.NET和CLR,那么就可非常容易实现从VB到VB.NET的过渡,更为重要的是使大家能够在VB.NET熟悉的环境中轻而易举地构建面向网络新体系结构的应用系统,这不能不令VB程序员惊叹与向往。
|