visual basic 的未来
关键词:vbscript
visual basic 的未来
一个版本中将出现的web forms(web表单), web services(web服务)和语言的改进
joshua trupin
本文读者是已经熟悉了visual basic的用户。
概述: 下一个版本的microsoft visual basic 主要有以下三方面的改进:web forms、web services和面向对象的语法方面的改进。 web forms使得经验丰富的visual basic用户可以象现在编写单机程序一样简单地开发网络应用程序。通过soap 接口, web services让你在可以联网的任何地方配置你所设计的组件。另外,几个在面向对象的语言方面的关键性的改进使得visual basic的代码象c++一样具有灵活性,这几方面的改进包括继承性、多态性和重载。有关这方面的内容可以参考steve ballmer 的“vbits keynote on the next generation of visual basic”
isual basic 已经经历了很多次的改进。然而从它诞生以来,我就一直喜欢它的一点是:就它的核心而言,你仍然可以象1991年一样的编写你的程序。当然,和那时相比它的软件包已经有了很大的增强,但是这些改进一般是补充性的,并没有模糊作为编程工具本身具有的目的,这个目的就是:使visual basic能更简单快捷地用于设计、编写和调试出优秀的面向对象的应用程序。
当前使用的visual basic 6.0版本引入webclasses作为一种简化手段,用于配置健壮的面向网络的应用程序。事实上,webclasses提供了大量的途径可以通过常见的工具把程序移植到网络上。(关于visual basic 6.0在网络下的可伸缩性的详尽讨论可以参见ted pattison的”advanced basics column”( microsoft internet developer于1999年十月出版发行)
我最近有机会了解到了下一个版本的visual basic计划采取的一些新的改进。其中主要的改进是在存储容量方面,开发者可以使用的存储容量扩大了三倍。下一个版本的visual basic计划将采用visual studio®环境中叫web forms的特性。web forms代表着一种全新的组件化的网络解决方案。web services将成为一种新的基于xml的方案,它通过标准的网络协议发布中间层的事件处理功能。同时,visual basic 语言将包括一些开发者长期以来一直要求的结构,这使得visual basic符合那些c++和java使用者所熟悉的面向对象的编程习惯。
在下一个版本的visual basic的测试版中,这些改进将会被公布。在这里我会给出一些代码片断,但不是完整的方案。那么现在还有什么好担心的呢?很简单,只要你决心利用这些新的功能,你现在就可以通过这些特定的方法来设计你的程序,得到最好的实践练习,从而顺利地帮助你过渡到下一个版本的visual basic。即使你不这么做,只要你按照我在本文末尾所提出的原则去组织你将来的程序,你也不会有什么损失的。
visual studio web forms
visual basic的下一个版本将是visual studio开发环境的一部分,很可能为网络开发者引入web form这个新的概念。引进web form概念的目的是为了扩展visual basic的随机存取功能,从而使visual basic可以应用于影响日益广泛的网络程序的编写。使用visual studio中的任何一种语言的开发者都可以共享这种visual studio web forms。
一个web forms页包括两部分:实现web forms页可视界面的一个html文件和处理web forms页事件的源文件。既然目前有三分之一基于visual basic环境的开发是面向网络,microsoft计划进一步增强这方面的功能。在下一个版本的visual basic中,你可以象现在使用visual basic生成表单一样设计web forms。你将拥有一个web控件工具箱。你可以直接把控件拖放到html编辑器中使用,只需要设置一下它们的特性,编写一些适当的代码即可。(见figure 1)。总而言之,你可以象你使用visual basic生成表单一样来做这些工作。你会拥有完全符合intellisense®、wysiwyg格式的表单设计和编译过的代码。所以只要你知道如何使用visual basic编写应用程序,web forms就可以让你成为一个网络开发者而不用丝毫改变你的工作方式。
figure 1building a web form in four steps
web forms 在服务器上运行,只把html格式的表单传给用户。正如active server page (asp)一样,它既不是特定的浏览器,当然也不是基于web form的应用程序;但整个过程也是在服务器上运行。事实上,你正在运行一个程序,它为远程用户生成html3.2格式的接口。跟asp网页不同,这些代码是编译运行而不是解释的,所以运行速度有明显的提高。
设计web forms的目的是为了同时获得asp 和webclass两者最好的特性。你可以使用visual studio家族中的任一种语言来生成web forms。所以,你可以使用你所掌握的知识来编写高效的、面向服务器的网络应用程序。
web services
web services是visual studio开发工具系统采取的第二大改进。就核心而言,一个web services就是一个通过标准的网络协议发布的中间层的事件处理函数。既然它们使用http作为传送机制(见figure 2),所以可以通过防火墙进行通信。只要合适地分配url,你可以简单地在一个网络应用程序中构造多种web services。在程序运行时,所有这些内部构件之间的调用都会自动打包,通过xml接口进行调用。开发者可以在任何平台上、使用任何语言编写和使用web services。如果你需要保密,你可以使用secure socket layer (ssl)或标准校检技术。
figure 2web services architecture
如果你对这些听起来开始觉得有点熟悉了,那是一个很好的开始。用于组件之间传送数据的机制是soap,即简单对象许可协议。don box在2000年三月出版的msdn™ magazine中详细的介绍了soap。
所有这些新的特性都是为了让网络程序开发者可以利用已存在的、可再次使用的web services进行组合,从而可以更快的编写他们的程序,而不用每次都重头来编写它们。这将带来程序代码提供者和程序开发者的新时代。
使用下一个版本的visual basic,你很快就可以把一个具体项目中的函数以web service的形式发布和实现。你也许很熟悉把一个visual basic 的类定义为public的过程。在下一个版本的visual basic中将会有一个新的标志,暂时叫作webpublic。这意味着程序将作为web service发布。它不仅仅可以通过com接口为需要它的当地项目所用,而且可以为任何引用了它的url地址的网络程序服务。正如你可以把引用加入到一个新项目中的公共对象中一样,你也可以把引用加到网络程序中,然后象使用当地程序一样使用它。
当然,运行机制是有些不同的。visual basic能够通过com接口对当地对象解析引用。当你加入一个网络服务的引用到你的应用程序中时,远程对象将自动生成接口的定义,并使用soap协议发送到visual studio开发环境中来。虽然这些将以xml形式产生,但你不用自己做任何连接的工作。visual basic将为你自动处理它。在接收到接口定义以后,你就可以使用intellisense,如同你已经编写了引用该对象的代码一样。
这有一个简单的例子。在某些场合下,你也许想编写这个叫seahawks的函数,它可能和下面这些代码有点类似:
public function seahawks(byval opponent as string) as string
seahawks = "lose"
end function
如果你构造的项目中包括了这个函数,visual basic将自动生成关于这个函数的xml格式的描述,并把它发布到网上。
<?xml version='1.0' ?>
<methods href='http://julian/football/teams'>
<method name='seahawks' href='seahawks'>
<request>
<param dt='string'>opponent</param>
</request>
<response dt='string'/>
</method>
</methods>
这个xml文件将用于描述seahawks函数。如果你使用的是visual studio开发环境,你就可以把任何已经发布的web service直接拖放到应用程序中,创建一个新类。如果你想调用internet网上任何地方的web service,你只需要创建包含web service的类的一个实例,然后就可以调用它的已发布的方法。
当seahawks函数被调用时,它会通过xml信息包自动通信。如果你使用的是microsoft® internet explorer 5.0(包含了xml支持),你可以在你的浏览器中试运行该函数。你也可以如下一样使用url地址调用该函数:
http://julian/webservice1/component1.methods/seahawks?opponent=miami
它将返回如下xml格式的数据:
<?xml version="1.0" ?>