VB.NET开发互联网应用
作者:刘彦青
尽管在Visual Basic 6中也有一些有关互联网功能的组件,例如WebClasses、Winsock和 WebBrowser控制,但也仅此而已,它再也没有其他更令人激动的功能了。尤其是WebClasses,更象是后来添上去的,简直可以说是没有一点用处。
但在VB.NET中,网络功能则扮演着重要的角色。首先,VB.NET中有Web Services,它将是DCOM的取代者。其次,VB.NET中还有Web Forms。Web Forms可以使用户无需使用古老的ASP或者CGI就能有效地建立全交互的互联网网站。(仅仅是理论上是如此,我并不希望你真的这样作。)
理论
在介绍Web Forms的具体细节之前,让我们先抽出一点时间来介绍一些理论方面的基础知识。
那么我们现在使用的互联网开发工具有什么不足之处呢?对于任何比较重要的开发活动,一般都需要用到ASP,但我必须说明的是,我并不喜欢它。
首先,它会使我们所编写的代码显得凌乱。我们必须将表示层(实际的HTML代码)与ASP代码混在一块儿。我们应该将所有代码都隐藏在窗体的后面,尽管有几种方法能够解决这一问题,但并不是十分理想。
其次,必须浪费时间对所有使用老式计算机的用户提供支持,如果这些用户的浏览器不支持JavaScript,我们就需要发现这一问题,并通过修改网页,满足用户的需求。
此外,还存在状态管理问题。如果有人登录了网站,而我们希望知道有关它的基本情况,就需要使用Session对象。当有多台机器需要访问Session对象时,网站的负荷就会很大,这时我们又会遇上麻烦。
令人不可思议的是,VB.NET中的Web Forms将能够使所有这些问题迎刃而解。Web Forms是全新的ASP.NET(不再是ASP+),它们可以使用我们在VB.NET中有效地创建交互式互联网网页,而且这一工作还非常地轻松。
我们只要简单地在VB.NET中创建一个Web Form即可。这一过程与设计一个WebClass有点类似,但令人遗憾的是,我们只能在FrontPage中设计好网页,然后把生成的HTML代码传送给VB.NET中的Web Form。
提示:尽管可以将在FrontPage中生成的HTML代码传送给VB.NET中的Web Form,但这与事实有一定的出入。在我的多次试验中,似乎在网页比较简单时没有什么问题,但如果网页的输出变得复杂时,就会出错。在以后的版本中这一问题应该得到修正。
因此,我们可以通过Web Form创建基本的网页,然后在VB.NET中添加交互性元素━━例如文字框或提交按钮,此外,还可以在其中添加不需要进行独立下载的更高级的HTML功能━━Web Controls。这样设计出来的网页可以兼容所有的浏览器。
提示:VB.NET中捆绑有许多Web Controls,例如,我们在稍后会使用到的Calendar控制。
在设计出网页和添加上交互性元素后,还需要再添加一些代码使得二者能够更好地融合在一块儿。也就是说,我们在Web Form上有了一个文本框和按钮,但还需要编写一段代码,获得在文本框中输入的数据并在标签中显示它,或者把它添加到数据库中、或者在一个用户列表中进行校验,然后把用户定期导向到成员区中。
这里的关健问题是我们可以将整个网页和对象当作一个对象来处理。你再也无需象在原来的ASP中那样请求一些窗体字段,而只需象在Windows Form中那样调用对象即可。
在把ASP.NET与ASP进行比较后,我们再来看看我在上面提出的问题,并找出如何解决它们的办法。
首先,是HTML、ASP代码混用的问题。在VB.NET中不会遇到这一问题,HTML网页与所使用的代码是完全分离的,在Web Form上只有一行代码与所使用的代码模块有关,其他的工作有互联网服务器来完成。
提示:象ASP文件有.ASP后缀那样,Web Forms有一个.ASPX后缀。当互联网服务器向用户提交这一网页时,.NET Framework首先自动地对它进行处理,例如,Web Controls被转换为HTML代码,编译代码等,我们在后面会更详细地谈到这一问题。
第二,使用原来的ASP,我们必须在检查用户的浏览器并对内容进行适当的修改使它的兼容性更好方面花费一定的时间。在VB.NET中,它可以为我们完成所有的处理,.NET Framework只能产生可以被目标浏览器所识别的HTML代码。
那么状态管理如何呢?对于大多数的ASP开发人员而言,这都是个难以处理的问题。在ASP.NET中,状态是被存储在发给用户的网页中的(以一种隐藏字段的方式。)。在下次再发送该网页时,就可以读取和使用其中的数据。
提示之一:我们可以把ASP.NET中的状态管理认为与使用Property Bags类似,它会自动地在Property Bags中添加信息,例如文本框信息。此外,我们还可以自己添加相关的信息,然后再使用它们。
提示之二:测试表明,与传统的ASP中的Session对象相比,使用这种状态管理的方法在性能上有较大的提升。
提示之三:安全仍然是个问题,数据编码的标准化程度非常高,如果在实际的操作中需要真正有效的安全,还需要根据具体的情况,将状态管理与现有的数据库口令记录等类似的东西结合起来。
好了,这就是ASP.NET,它是一种崭新的工具,它所提供的功能是ASP开发人员所梦寐以求的。如果你使用Visual Basic作为开发工具,并希望涉足互联网应用开发,这将是一个理想的机会。
实例之一
ASP.NET应用开发是一件相当简单的事儿,为了说明这一点儿,我们把空洞的理论放到一边儿,首先来看一个实际的例子:
·启动VB.NET。
·创建一个新的Web应用。
图:Working the Web1
注意:其中的位置已经不再是文件路径,而是一个HTTP地址了,但也许是运行IIS的本地机器上的地址。在本例中,我在http://ABYDOS地址上创建了GroovyWeb工程,意味着我最终的工程地址是http://ABYDOS/GroovyWeb/。
在经过适当的处理后,就会出现WebForm1.aspx文件,计算机的屏幕应该显示如下所示的状态:
图:Working the Web2
现在,我们创建一个应用程序,它能够接受在文本框中的名字,并将该名字显示在窗体上的标签中。尽管这个应用程序很简单,但却展示了一种全新的理念。
·采用拖放方式在Web Form上创建Label、TextBox和Button,如果有可能,将它们布置在不同的行上。
提示:需要注意的是,在设计时不能象在Win Forms中那样将一个控制拖出窗体。但这并不会影响到对控制的其他操作,我们仍然可以通过Properties窗口修改名字和风格等相关的属性。
生成的窗体应当如下图所示:
图:Working the Web3
在添加代码前,我们可以首先来通览组成我们刚生成的网页的HTML代码:
·通过点击窗体底部合适的按钮,将Web Form模式由Design改为HTML。
图:Working the Web4
我们首先来看第一行用黄色高亮度显示的代码,它说明.ASPX网页代码的存储地址,在本例中是Codebehind=“WebForm1.vb”,随后我们还会看到这一文件。
象标签、文本框等这些我们以往都使用HTML代码定义的控制现在都有了 标记,这也正是这些控制能够被识别为ASP.NET控制的原因。
提示:即使它们都带有标记,在发送给浏览器之前,这些控制也会被转换为正常的HTML代码。
其中大多数代码与正常的HTML代码类似,如果以前对HTML比较熟悉,应该能够毫不费力地理解它们。
·返回到Design模式。
好了,下面我们在工程中添加一些代码。
·双击窗体上的按钮
我们将看到Web Form代码窗口。一些预先生成的代码会使你感到困惑,其中一些是非常有用的,例如Load事件的代码。
·输入下面的代码:
当我第一次这么作的时候,感到非常的不安,这是因为在正常的V