Visual Basic Web 编程

动态 Web 应用程序由以下两种类型的程序中的一种或两种组成:

  • 服务器端脚本,这些是在 Web 服务器上执行的程序,使用服务器端脚本语言(如 ASP(Active server Pages)或 JSP(Java server Pages))编写。
  • 客户端脚本,这些是在浏览器上执行的程序,使用 JavaScript、VBScript 等脚本语言编写。

ASP.Net 是 ASP 的 .Net 版本,由 Microsoft 引入,用于使用服务器端脚本创建动态网页。ASP.Net 应用程序是使用 .Net 框架中存在的可扩展和可重用组件或对象编写的代码所编译的。这些代码可以使用 .Net 框架中的整个类层次结构。

ASP。Net 应用程序代码可以用以下任一语言编写:

  • Visual Basic .Net
  • C#
  • Jscript
  • J#

在本章中,我们将对 ASP.Net 的编写做一个非常简单的介绍。有关详细讨论,请学习 ASP。Net 教程。


ASP.Net 内置对象

ASP.Net 具有一些在web服务器上运行的内置对象。这些对象具有应用程序开发中使用的方法、属性和集合。

下表列出了 ASP.Net 内置对象及其简要说明:

编码对象 & 描述
1

Application

描述存储与整个 Web 应用程序相关信息的对象的方法、属性和集合,包括应用程序生命周期中存在的变量和对象。

您可以使用此对象存储和检索要在应用程序的所有用户之间共享的信息。例如,可以使用应用程序对象创建电子商务网页。

2

Request

描述存储与 HTTP 请求相关信息的对象的方法、属性和集合这包括表单、cookie、服务器变量和证书数据

您可以使用此对象访问从浏览器向服务器发送的请求中发送的信息。例如,可以使用请求对象访问用户在 HTML 表单中输入的信息。

3

Response

描述存储与服务器响应相关信息的对象的方法、属性和集合这包括显示内容、操作标头、设置区域设置和重定向请求

您可以使用此对象将信息发送到浏览器。例如,使用响应对象将脚本的输出发送到浏览器。

4

Server

描述为各种服务器任务提供方法的对象的方法和属性使用这些方法,您可以执行代码、获取错误条件、编码文本字符串、创建供网页使用的对象以及映射物理路径。

您可以使用此对象访问服务器上的各种实用程序功能例如,可以使用服务器对象为脚本设置超时。

5

Session

描述存储与用户会话相关信息的对象的方法、属性和集合,包括会话生存期内存在的变量和对象。

您可以使用此对象存储和检索有关特定用户会话的信息。例如,您可以使用会话对象来保留有关用户及其首选项的信息,并跟踪挂起的操作。


ASP.Net 编程对象

ASP.Net 提供了两种类型的编程模型:

  • Web 窗体,这使您能够创建将应用于用户界面的各个组件的用户界面和应用程序逻辑。
  • WCF 服务,这使您能够远程访问某些服务器端功能。

在本章中,您需要使用免费的 Visual Studio Web Developer。IDE 与您创建 Windows 应用程序时使用的几乎相同。


Web 窗体

Web 窗体由以下组成:

  • 用户接口
  • 应用逻辑

用户界面由静态 HTML 或 XML 元素和 ASP.Net 服务器控件组成。创建 web 应用程序时,HTML 或 XML 元素和服务器控件存储在具有 .aspx 扩展名的文件中。此文件也称为页面文件。

应用程序逻辑由应用于页面中用户界面元素的代码组成。您可以使用 VB.Net 或 C#.Net 编写此代码。

下图显示了设计视图中的 Web 表单


实例

让我们用一个 web 窗体创建一个新网站,当用户单击按钮时,该表单将显示当前日期和时间。

使用如下步骤:

  • 选择 File → New → Web Site,出现新网站的对话框。

  • 选择 ASP.Net Empty Web Site 空网站模板。输入网站名称,然后选择保存文件的位置。

  • 您需要向站点添加默认(Default)页面。在解决方案资源管理器(Solution Explorer)中的网站名称上单击鼠标右键,然后从关联菜单中选择 "Add New Item" 添加新项目选项。然后新项目对话框出现。

  • 选择 Web 表单选项并为默认页面提供名称。我们将其保留为 Default.aspx。单击 Add 添加按钮。

  • Default 页面显示在源代码视图中

  • 通过在源代码视图中为页面的 <Title> 标记添加值来设置 Default 网页的标题:

  • 要在网页上添加控件,请转到设计视图。在表单上添加三个标签、一个文本框和一个按钮。

  • 双击该按钮,并将以下代码添加到该按钮的 Click 事件中:
  1. Protected Sub Button1_Click(sender As Object, e As EventArgs) _
  2. Handles Button1.Click
  3. Label2.Visible = True
  4. Label2.Text = "Welcome to Tutorials Point: " + TextBox1.Text
  5. Label3.Text = "You visited us at: " + DateTime.Now.ToString()
  6. End Sub

使用 Microsoft Visual Studio 工具栏上的 开始 按钮执行和运行上述代码时,浏览器中将打开以下页面:

输入姓名并单击提交按钮:


Web Services(Web 服务)

Web 服务是一个 Web 应用程序,它基本上是一个由其他应用程序可以使用的方法组成的类。它还遵循类似 ASP.Net 的代码隐藏体系结构,尽管它没有用户界面。

.Net Framework 的早期版本使用了 ASP.Net Web服务的这个概念。它具有 .asmx 文件扩展名。但是,从 .Net Framework 4.0 以后,Windows Communication Foundation(WCF)技术已发展成为 Web 服务的新继承者。Net远程处理和其他一些相关技术。它将所有这些技术结合在一起。在下一节中,我们将简要介绍 Windows Communication Foundation(WCF)。


WCF 服务

Windows Communication Foundation 或 WCF 提供了一个 API,用于创建分布式面向服务的应用程序,称为 WCF 服务。

注意: 与 Web 服务一样,WCF 服务也支持应用程序之间的通信。然而,与 Web 服务不同,这里的通信不仅限于 HTTP。WCF 可以配置为通过 HTTP、TCP、IPC 和消息队列使用。WCF 的另一个优点是,它支持双工通信,而使用 Web 服务,我们只能实现单工通信。

从初学者的角度来看,编写 WCF 服务与编写 Web 服务并没有太大区别。

为了保持简单,我们将了解如何使用:

  • 创建 WCF 服务
  • 创建服务契约并定义操作
  • 执行契约
  • 测试服务
  • 使用服务

实例

为了理解这个概念,让我们创建一个简单的服务来提供股票价格信息。客户可以根据股票符号查询股票的名称和价格。为了保持此示例的简单性,将值写进二维数组中。

此服务将有两种方法:

  • GetPrice 方法,它将根据提供的符号返回股票的价格。
  • GetName 方法,它将根据提供的符号返回股票名称。
创建一个 WCF 服务

使用以下步骤:

  • 打开 VS Express for Web 2012
  • 选择 New Web Site 打开新网站对话框
  • 从模板列表中选择 WCF Service 模板

创建服务契约并定义操作

服务契约定义了服务执行的操作。在 WCF 服务应用程序中,您将在解决方案资源管理器(Solution Explorer)的 App_Code 文件夹中找到两个自动创建的文件:

  • IService.vb,它将具有服务的接口,以及服务将提供的方法的定义,您将在服务中实现这些方法。
  • Service.vb,它将实施服务契约。

  • 用给定的代码替换 IService.vb 文件中的代码:
  1. Public Interface IService
  2. <OperationContract()>
  3. Function GetPrice(ByVal symbol As String) As Double
  4. <OperationContract()>
  5. Function GetName(ByVal symbol As String) As String
  6. End Interface
实现契约

在 Service.vb 文件中, 你将找到名为 Service ,它定义在 IService 接口中并用来实现服务契约。

用如下代码替换 IService.vb 中的代码:

  1. ' NOTE: You can use the "Rename" command on the context menu to change the class name "Service" in code, svc and config file together.
  2. Public Class Service
  3. Implements IService
  4. Public Sub New()
  5. End Sub
  6. Dim stocks As String(,) =
  7. {
  8. {"RELIND", "Reliance Industries", "1060.15"},
  9. {"ICICI", "ICICI Bank", "911.55"},
  10. {"JSW", "JSW Steel", "1201.25"},
  11. {"WIPRO", "Wipro Limited", "1194.65"},
  12. {"SATYAM", "Satyam Computers", "91.10"}
  13. }
  14. Public Function GetPrice(ByVal symbol As String) As Double _
  15. Implements IService.GetPrice
  16. Dim i As Integer
  17. 'it takes the symbol as parameter and returns price
  18. For i = 0 To i = stocks.GetLength(0) - 1
  19. If (String.Compare(symbol, stocks(i, 0)) = 0) Then
  20. Return Convert.ToDouble(stocks(i, 2))
  21. End If
  22. Next i
  23. Return 0
  24. End Function
  25. Public Function GetName(ByVal symbol As String) As String _
  26. Implements IService.GetName
  27. ' It takes the symbol as parameter and
  28. ' returns name of the stock
  29. Dim i As Integer
  30. For i = 0 To i = stocks.GetLength(0) - 1
  31. If (String.Compare(symbol, stocks(i, 0)) = 0) Then
  32. Return stocks(i, 1)
  33. End If
  34. Next i
  35. Return "Stock Not Found"
  36. End Function
  37. End Class
测试服务

要运行如此创建的 WCF 服务,请选择 Debug → Start Debugging 选项。输出将是:

要测试服务操作,请双击左窗格树中的操作名称。右侧窗格中将显示一个新选项卡。

Enter the value of parameters in the Request area of the right pane and click the ‘Invoke’ button.The following diagram displays the result of testing the GetPrice operation −

在右窗格的请求区域中输入参数值,然后单击 'Invoke' 按钮。

下图显示了测试 GetPrice 操作的结果:

下图显示了测试 GetName 操作的结果:

使用服务

让我们添加一个默认页面,即 ASP.NET Web 表单,我们将使用刚才创建的 WCF 服务。

使用如下操作:

  • 在解决方案资源管理器(Solution Explorer)中的解决方案名称上单击鼠标右键,然后向解决方案中添加新的 Web 表单。它将被命名为 Default.aspx

  • 在表单上添加两个标签、一个文本框和一个按钮。

  • 我们需要向刚刚创建的 WCF 服务添加一个服务引用。在解决方案资源管理器中右键单击该网站,然后选择 Add Service Reference(添加服务引用)选项。这将打开添加服务引用对话框。

  • 在地址文本框中输入服务的 URL(位置),然后单击 Go 按钮。它创建一个默认名称为 ServiceReference1 的服务引用。单击 OK 按钮。

添加引用对项目有两个作用:

  • 为 web.config 文件中的服务创建地址和绑定。
  • 创建代理类以访问服务。
  • 双击表单中的 GetPrice 按钮,在单击时输入以下代码:
  1. Partial Class _Default
  2. Inherits System.Web.UI.Page
  3. Protected Sub Button1_Click(sender As Object, e As EventArgs) _
  4. Handles Button1.Click
  5. Dim ser As ServiceReference1.ServiceClient = _
  6. New ServiceReference1.ServiceClient
  7. Label2.Text = ser.GetPrice(TextBox1.Text).ToString()
  8. End Sub
  9. End Class
  • 使用 Microsoft Visual Studio 工具栏上的 开始 按钮执行和运行上述代码时,浏览器中将打开以下页面:

  • 输入符号并单击 GetPrice 按钮以获取价格: