欢迎光临
我们一直在努力

使用VB.NET开发纯.NET的应用程序-.NET教程,VB.Net语言

建站超值云服务器,限时71元/月

使用vb.net开发纯.net的应用程序

作者: builder.com

我工作过的许多公司在选择vb.net作为他们的核心开发工具时都经历了一个长时间的抉择,他们所关心的最主要的问题之一是如果他们不使用c#语言就不能开发出纯.net框架代码。主要有两个原因使他们得出这样的结论:首先,由于vb(6.0或早期版本)运行时的限制,vb在开发com构件的能力方面不如c语言功能强大,他们关心这些限制是否在.net中依旧存在;再者,由于微软提倡将c#作为在.net平台上的主要开发工具,很多vb开发者怀疑微软是否已经在vb.net改进了vb先前版本的功能。   

有个客户曾经跟我提起过这个问题,还特意请求我帮助他的公司在不依赖vb6中的任何功能时如何使用vb.net作为纯.net开发语言。当我问他为什么他认为vb.net不是纯.net开发语言时,他告诉我他最近将一个项目从vb6升级到vb.net时,他在vb.net中看到有很多象imports microsoft.visualbasic和imports microsoft.visualbasic.compatibilit的输入语句,这些语句表明了vb.net依旧在使用早期vb版本的一些功能;他说“如果vb.net是.net环境中一流的开发语言,为什幺还要用到早先vb版本中的功能呢?”。为了回答他的这个问题,并且给vb.net的开发者提供一个如何使用这些包的建议,我将在此文章中解释为什么微软还在.net平台中实现vb早期版本的中的一些功能的原因。

vb中的核心动态链接库(dll)
将核心vb语言建造到.net框架的方式同c#一样,主要的区别是微软为vb的开发者将两个附加的库增加到.net中。首先,microsoft.visualbasic是.net中可重新分发包的一个重要组成部分,它是vb早期版本的功能在.net中的一个实现,同时两者也有一些细微的差别。实际上,有些vb函数(尤其是类型转换部分的函数)比.net的通用语言运行时(clr)所提供的对象有着更好的性能。例如,使用cint()就比使用convert对象要好;另外,有些vb函数替你做了一些额外的工作,例如,函数cstr()在转换字符串时也自动进行了区域性方面的处理,如果你用convert对象就必须自己做这些额外的工作。

同时.net中的库也提供了vb开发者原来经常使用的一些通用环境常量,例如,vbcrlf回车换行符。其实如果你不想使用原来的老式常量,你能使用system.environment.newline方法或system.convert.tochar(13)&system.convert.tochar(10)来得到同样的常量。象vbcrlf这样的常量引用在.net中直接被映像到框架底层的调用,所以在性能方面应该没有什么影响。像上面这种情况,编译器将它优化成单个字符串,如果它是一个变量,它就直接被映像到\r\n,将它翻译成一个回车换行符。vb早期版本的函数也直接被映像到.net框架底层的调用,象msgbox语句直接映像成.net框架中的messagebox,这种情况由于两者编译完了以后生成的中间语言(il)基本上是相同的,所以在性能方面几乎没有什么影响。

在vb早期版本中的有些特性,象函数inputbox、控制数组和对ado的支持在.net框架中的没有直接的等同物。但是对于这些不能直接支持的特性,微软提供了另外一个名为microsoft.visualbasic.compatibility的库,这个库是为使vs.net具有向下兼容性而提供的,所以如果你的vb应用程序没有升级一定不要使用其中的功能。microsoft.visualbasic.compatibility包含对控制数组、环境函数和字体转换的支持。微软所提供的另外一个名为microsoft.visualbasic.compatibility.data库可以支持ado对象、接口和方法,使用这个库可以象早期vb版本中的ado一样来操纵数据库。关于是否应该花费时间和精力来学习这些老版本中的功能,你应该留意一下vs.net帮助文件的警告信息。

“警告:当你用visual basic .net开发.net应用程序时,最好不要使用 visualbasic.compatibility 命名空间中所提供的功能,将来的vb版本可能不再支持此命名空间,使用.net中别的命名空间所提供的相同功能的函数和对象。”

由此可见,在使用vb.net时,你应该注意可以使用vb早期版本中的那些功能,不可以使用那些功能,不可使用的部分.net中别的包中都提供了相同的功能。清楚这些以后,这样你既可以使用vb早期版本中的一些功能,又可以开发纯.net应用程序。所以,你大可不必为创建纯.net应用程序放弃在vb上的多年的培训投资和实践经验而使用c#,因为vb.net同样可以利用.net框架提供给c#的所有功能。实际上,我曾经向我的客户推荐不要使用微软提供的升级向导,因为该向导在升级过程中会将.net中所提供的向下兼容的库增加到.net项目中,所以应该直接构造.net应用程序,然后将原来应用程序中的代码移植到新应用程序中,用.net新的功能替代不被.net支持的老式功能,这样开发出的应用程序将是纯.net应用程序。

microsoft.visualbasic支持纯.net应用程序
microsoft.visualbasic是vb语言自身在.net框架中的实现,它所提供的功能是真正基于.net的,而不仅仅是为了与vb早期版本的兼容。在vs.net项目中的那些关于microsoft.visualbasic的imports语句不会在性能方面造成什么影响,主要作用是当你用到相关功能后,它会告之编译器在什么地方可以找到调用的代码。

.net框架会长期保留microsoft.visualbasic包,并且总是可以被重新发布。正如vb.net产品组的一个成员所说,“你并不能因为删除microsoft.visualbasic.dll而获得什么,这个动态链接库中的功能并不是vb早期版本所遗留下来的,它们在vb.net中已经被重新实现了,并且被vb的开发者所熟知,具有向前兼容性,所以使用它不会对的应用程序有什么危害。最后,如果你重用vb例子中的代码,你也会用到这些功能。删除这个动态链接库并不能使你开发更纯的.net应用程序,你只是丢失了一些对你有用的类罢了。”

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 使用VB.NET开发纯.NET的应用程序-.NET教程,VB.Net语言
分享到: 更多 (0)

相关推荐

  • 暂无文章