在上个世纪九十年代初期,面向Windows编程还是一项非常烦琐的工作,当时Borland C++是开发Windows应用程序最流行的开发
工具。用Borland C++编写Windows程序是一个复杂的工作,即使创建一个Windows窗体都需要花费很多的时间和精力,更不用说程序中的很多功能实现了。自从
微软公司推出了Viusal Basic 1.0,其中的可视化编程的思想,彻底改变了当时很多程序员的思路,可视化编程大大简化了程序员设计用户界面设计,使得程序员更多关注程序的功能的实现,同时也为快速编程带来了可能,降低成为程序员的门槛,为更多的人加入程序员的行列带来了机会。从此看似“头痛”的编程和“枯燥乏味”的程序员生活开始变得有那么一点“令人喜爱了”。
Visual Basic成功了,其实成功的是其中的可视化编程思想。随着Visual Basic拥有了最大开发群体,其缺点也就显现出来。首先Visual Basic作为一种解释性的语言,不仅程序执行速度慢,并且在分发应用程序时,还需要带上解释库;其次虽然Visual Basic号称是OOP(面向对象的开发语言),但实际上它只能算是一种面向过程的开发语言。人们越来越希望有一个能够克服上述缺点的、新的Visual Basic出现。但这个愿望直到2002年初才得以实现,微软公司推出了Visual Basic的后继版本——Visual Basic .Net,Visual Basic .Net做为Visual Basic 6.0的下一个版本,首先保留Visual Basic原有的优点,并且改进了Visual Basic中原有的不足,同时还增加了很多新的功能。于是Visual Basic .Net一推出就引起了全球程序员的讨论,并吸引了全球Visual Basic程序员的视线,并促使很多Visual Basic程序员转而学习Visual Basic .Net。
一、为什么要从Visual Basic升级到Visual Basic .Net
虽然Visual Basic得到了很多开发人员的认可,并且也有许多产品都提供了Visual Basic相配套的接口,但依然无法掩盖Visual Basic的缺点,而这些缺点在Visual Basic .Net中是根本不存在的。并且Visual Basic .Net做为下一代的Visual Basic语言,它首先是一种为开发.Net平台应用程序而度身定做的程序语言。因为Visual Basic .Net中完全集成了.Net FrameWork(.Net框架)和CLR(Common Language Runtime,即:公共语言运行时)。同时.Net 框架和公共语言运行时又共同提供Visual Basic .Net语言互操作性、垃圾资源回收、可靠安全性和版本改进的支持。通过Visual Basic .Net能够简便、快捷地创建.Net平台应用程序、XML Web services 和 ASP.NET Web 应用程序。Visual Basic .Net做为开发.Net平台的程序语言,那它就为开发现跨平台程序创造了可能。因为我们知道,微软推出.Net,其目的之一就是实现跨平台。虽然目前微软只提供了在Windows平台上运行的.Net框架,还无法实现真正意义上的跨平台,但随着MONO的出现(虽然它还存在很多问题,并且目前的MONO只为C#提供支持),但可以预见的是在不久的将来,Visual Basic .Net实现Write Once And Run AnyWhere的时间不会太久。
Visual Basic .Net同时是一种编译性的语言,虽然这种编译语言和以前接触的传统的编译语言有所区别。因为经过Visual Basic .Net编译器编译后得到
文件并不是可以在计算机直接运行的二进制文件。它的性质是一种IL文件(中间语言文件)。在运行IL文件时,首先是通过CLR下的JIT(即时编译器),把这种IL文件再编译成二进制文件。我们看到的程序运行,其实是经过JIT编译后的二进制文件在执行。这时可能有很多朋友会问,这种二次编译是否多此一举,具体实现中是否很麻烦,是否会影响程序的运行速度?二次编译的确是影响了程序运行的速度,但它却为实现跨平台带来了可能。其实JIT即时编译器犹如Java中的JVM(Java虚拟机)。JIT编译器是CLR在.Net框架下自动实现IL文件到二进制文件转变的,它是一种自动完成的,并不需要人员的参与,所以它并不会给程序执行带来麻烦。
二、Visual Basic和Visual Basic .Net的主要区别
虽然说Visual Basic .Net是Visual Basic 6.0的后继版本,Visual Basic .Net除了在语法上还保留Visual Basic原有的踪影以外(二者几乎在90%以上保持相似或相同),其实在其他很多方面,Visual Basic .Net都和Visual Basic截然不同。也许正是这些不同点,才使得Visual Basic .Net功能更强大,更有生命力,但同样也为Visual Basic程序员转型为为Visual Basic .Net程序员带来了困难。因为Visual Basic .Net提出了很多新的功能、概念和观点,掌握Visual Basic .Net不仅要掌握语法,还需要理解并运用这些新的功能、概念和观点。当然也需要掌握.Net框架,理解CLR。Visual Basic .Net都和Visual Basic有很大的差异,这里仅从数据访问、Web开发和组件创建等三个主要方面谈谈二者的区别:
1、数据访问
二者的不同点主要在:数据访问
技术、数据访问具体实现方法和数据绑定上的不同。在数据访问技术上,Visual Basic 6.0是通过ADO(Active X Data Object,即:Active X数据对象)来实现对数据库访问的。同时为了保证对早期版本的兼容,也提供RDO(远程数据对象)和DAO(数据访问对象)二种数据访问技术。在Visual Basic .Net中是使用ADO.NET来访问数据库,ADO.NET是.NET框架的一部分,其对应的类库是.Net FramWork SDK的真子集。ADO和ADO.NET这两种技术在概念、功能和实现上都有许多差异。由于篇幅所限,这里就不一一介绍了。虽然Visual Basic .Net中也可以使用ADO来访问数据库,但ADO在Visual Basic .Net中是以COM组件的形式出现的,通过添加引用才可以在Visual Basic .Net中使用。添加引用的过程,其实就是对COM组件互操作。经过互操作后的COM组件,已经并非先前意义上的COM组件,而是转变成可供Visual Basic .Net直接使用的.Net类库。
在数据访问的具体实现方法上,Visual Basic 6.0实现数据访问主要是两种方法:其一是在程序设计阶段,可通过把数据源绑定到ADODC控件或使用数据环境;其二在运行时,可以通过编程方式创建记录集RecordSet对象并与记录集对象交换数据。同样在Visual Basic .Net中实现数据访问的方法主要也是二种:其一是在程序设计阶段,通过创建、配置数据适配器DataAdapter和生成数据集DataSet;其二在运行中,通过编程方式动态创建、配置数据适配器和创建、生成数据集。
在数据绑定(Data Binding)上,在Visual Basic 6.0中实现数据绑定通过
设置控件的下列属性来实现:DataChanged、DataField、DataFormat、DataMember 和 DataSource。通常是把控件的显示属性绑定到数据源中的相应字段。在Visual Basic .Net中,数据绑定的应用范围可广泛得多,Visual Basic .Net中可以将任何控件的任何属性绑定到包含数据的任何结构中。
2、Web开发
Visual Basic是使用Active Server Page(简称ASP)来创建在 Web应用程序。在ASP中,编写Web页面并非纯正的Visual Basic语言,而是Visual Basic脚本语言——VBScript。在Visual Basic .Net中是使用ASP.NET技术来编写Web页面。在ASP.NET中使用的也不再是脚本语言,而是真正意义编程语言,其中就可以是Visual Basic .Net。开发过ASP页面的朋友都清楚,虽然编写ASP页面对开发工具要求很低,但由于其是面向过程式开发,所以稍微复杂一点的ASP代码都显得杂乱无章,这都给程序设计、调试、修改带来了麻烦。而Visual Basic .Net是建立在新的框架结构上,Visual Basic .Net完全支持Web编程。凭借ASP.NET的Web 应用程序、XML Web services等等基于Web上的功能,使得Visual Basic .Net开发Web 页面与开发Windows编程很相似,Web页面代码也不显得有条有理了。
3、组件创建
在使用Visual Basic 6.0和Visual Basic .Net编写应用程序时,虽然都可以通过从工具箱中选择组件,通过拖入方式在应用程序中加入组件,但二者在实现机理上却存在根本不同。在Visual Basic 6.0中,应用程序中创建的组件全部是COM组件,即可在COM应用程序中使用的ActiveX控件、ActiveX 类型的DLL 和 ActiveX类型的EXE。而在Visual Basic .Net中,向窗体中拖入的组件,都是基于继承,从.Net框架提供的SDK中相应的类继承,经过实例化后,通过添加功能才把组件加入到设计窗体中。就连Visual Basic .Net中的窗体Form的创建方法也是如此。这些过程都可以在Visual Basic .Net的源代码中找到。Visual Basic .Net中使用的每一个组件都是从Component或Control基类派生出来的。
当然,Visual Basic和Visual Basic .Net之间远远不止纸屑,其他的如:Visual Basic 6.0 只提供单线程模式,并不支持多线程。而在Visual Basic .Net全面支持多线程。并且在Visual Basic .Net中还增加了结构化异常处理等新的功能。
最大的区别,同时也是最重要的是,Visual Basic .Net 还是一种真正的面向对象的开发语言,而Visual Basic只能算是面向过程的开发语言。在Visual Basic .Net中OO(面向对象)思想已经深入到语言中的任一角落,其实在Visual Basic .Net中创建的任一Windows组件,就是类经过实例化得到的。Visual Basic .Net还增加了许多新功能和改进功能,如继承、接口和重载等,这些都使Visual Basic .Net成为功能强大的面向对象的编程语言。
三、从Visual Basic升级到Visual Basic .Net一般实现步骤
本文程序的编写、测试和运行环境配置是:
1、视窗2000高级服务器版
2、Visual Studio .Net 2002企业构建版,.Net FrameWork SDK版本号3705
3、Visual Basic 6.0
Visual Studio .Net提供了用以实现从Visual Basic 6.0项目到Visual Basic .Net项目的升级向导,升级向导在升级过程中并不修改原Visual Basic 6.0 项目,而是根据原项目创建新的Visual Basic.Net项目。Visual Studio .Net升级向导在Visual Studio .Net标准版中没有提供。在下面内容中涉及到的Visual Basic .Net都是是企业构建版。下面就来详细介绍使用Visual Studio .Net中的升级向导升级Visual Basic 6.0的项目的具体步骤。
1、使用Visual Basic创建一个简单的项目
启动Visual Basic 6.0。
选择菜单【文件】|【新建项目】,弹出【新建工程】对话框。
在【新建工程】对话框中选择【标准 EXE】后,单击【确定】按钮。
从【工具箱】中拖入一个Button按钮到设计窗体,此Button组件的名称为“Command1”,拖入窗体后双击这个按钮,从而进入Command1组件的Click事件的代码编辑界面。
在Command1组件的Click事件中添加下列代码,下列代码的作用是弹出一个提示框:
MsgBox ("这是Visual Basic 6.0创建的程序!")
最后以缺省文件名称“工程1.vbp”保存项目文件后,并单击快捷键F5运行程序,单击程序中Command1按钮后,得到如图1所示的运行界面:
Visual Basic创建项目的运行界面
2、使用Visual Studio .Net中的升级向导升级Visual Basic 6.0项目
Visual Studio .Net升级向导实现从Visual Basic项目升级为Visual Basic .Net项目一般需要五个步骤。通过这五个步骤,一般都能够成功实现从Visual Basic项目到Visual Basic. Net项目的转换。以下就是使用Visual Basic .Net升级向导升级上面创建的Visual Basic项目的具体步骤:
启动Visual Basic .Net。
单击【文件】|【打开】|【项目】后,打开【打开项目】对话框。
【打开项目】对话框进入要升级的Visual Basic项目所在的目录,选择“工程1.vbp”文件后,单击【确定】按钮,则Visual Basic .Net会根据项目的特征自动启动Visual Basic .Net升级向导。并弹出升级向导的第一步骤的界面,具体如图2所示:
Visual Basic .Net升级向导界面之一
单击图2中的【下一步】菜单,进入升级向导的第二步骤,在此步骤中使用者可以选择升级后的项目类型,具体如图3所示:
Visual Basic .Net升级向导界面之二
选择完要升级项目类型后,单击图3中的【下一步】按钮,进入Visual Basic .Net升级向导第三步骤,具体如图4所示,在此步骤中使用者可以选择要升级项目所在的目录。请注意,如果指定一个文件夹中包含文件,则会提示删除此文件中所有文件。
:Visual Basic .Net升级向导界面之三
指定要升级项目所在的目录后,单击图4中的【下一步】按钮,如果在指定的目录中没有要生成项目的文件夹,则向导会弹出提示框让用户在指定目录中创建要生成的文件夹,具体创建升级项目所在的目录提示框
单击图5中的【确定】按钮,则向导会创建指定的文件夹,并进入升级的准备阶段,具体如:Visual Basic .Net升级向导界面之四——准备升级
单击图6中【下一步】按钮,则
系统会根据原来Visual Basic项目和用户的选项,在指定文件夹中生成Visual Basic .Net的项目。具体如图7所示:
:Visual Basic .Net升级向导界面之五——开始升级
当升级完成后,升级成功得到的新项目将出现在
解决方案资源管理器中,并在解决方案资源管理器中生成_UpgradeReport.htm文件记录升级报告。升级报告如图8所示:
Visual Basic .Net升级向导生成的升级报告
如果通过升级向导不能够正确实现Visual Basic .Net项目的升级,则用户需要查看升级报告。修复报告中提到的所有错误,以确保升级过程正确执行。
在确认升级报告中没有错误和警告后,至此使用Visual Studio .Net升级向导已经成功实现把Visual Basic项目升级为Visual Basic .Net项目。此时单击快捷键F5运行升级后的项目,并单击运行程序中的Command1按钮,就可得到如图9所示的界面: