VB.Net - Web 编程



一个动态 Web 应用程序包含以下两种类型之一或两种类型的程序:

  • 服务器端脚本 - 这些是在 Web 服务器上执行的程序,使用服务器端脚本语言(如 ASP(Active Server Pages)或 JSP(Java Server Pages))编写。

  • 客户端脚本 - 这些是在浏览器上执行的程序,使用脚本语言(如 JavaScript、VBScript 等)编写。

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

ASP.Net 应用程序代码可以使用以下任何一种语言编写:

  • Visual Basic .Net

  • C#

  • Jscript

  • J#

在本章中,我们将简要介绍如何使用 VB.Net 编写 ASP.Net 应用程序。有关详细讨论,请参阅ASP.Net 教程。

ASP.Net 内置对象

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

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

序号 对象及描述
1

Application

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

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

2

Request

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

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

3

Response

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

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

4

Server

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

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

5

Session

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

您可以使用此对象存储和检索有关特定用户会话的信息。例如,您可以使用 Session 对象保留有关用户及其偏好的信息,并跟踪未完成的操作。

ASP.Net 编程模型

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

  • Web 窗体 - 这使您能够创建用户界面和将应用于用户界面各个组件的应用程序逻辑。

  • WCF 服务 - 这使您能够远程访问某些服务器端功能。

对于本章,您需要使用 Visual Studio Web Developer,它是免费的。IDE 与您之前用于创建 Windows 应用程序的 IDE 几乎相同。

VS Web Developer IDE

Web 窗体

Web 窗体包括:

  • 用户界面

  • 应用程序逻辑

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

应用程序逻辑由应用于页面中用户界面元素的代码组成。您可以使用任何 .Net 语言(如 VB.Net 或 C#)编写此代码。下图显示了设计视图中的 Web 窗体:

Web Form

示例

让我们创建一个包含 Web 窗体的新网站,该窗体将在用户单击按钮时显示当前日期和时间。请执行以下步骤:

  • 选择文件→新建→网站。将出现“新建网站”对话框。

Web Form Example
  • 选择 ASP.Net 空网站模板。为网站键入名称并选择保存文件的位置。

  • 您需要向网站添加一个默认页面。右键单击解决方案资源管理器中的网站名称,然后从上下文菜单中选择“添加新项”选项。将显示“添加新项”对话框:

Web Form Example
  • 选择 Web 窗体选项并为默认页面提供名称。我们将其命名为 Default.aspx。单击“添加”按钮。

  • 默认页面在源视图中显示

Web Form Example
  • 通过在源视图中向页面的 <Title> 标记添加值,设置默认网页的标题:

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

Web Form Example
  • 双击按钮,并将以下代码添加到按钮的 Click 事件中:

Protected Sub Button1_Click(sender As Object, e As EventArgs) _
Handles Button1.Click
   Label2.Visible = True
   Label2.Text = "Welcome to Tutorials Point: " + TextBox1.Text
   Label3.Text = "You visited us at: " + DateTime.Now.ToString()
End Sub

当上述代码执行并使用 Microsoft Visual Studio 工具栏中提供的“启动”按钮运行时,浏览器中将打开以下页面:

Web Form Example

输入您的姓名,然后单击“提交”按钮:

Web Form Example

Web 服务

Web 服务是一个 Web 应用程序,它基本上是一个类,包含其他应用程序可以使用的方法。它也遵循与 ASP.Net 网页类似的代码隐藏架构,尽管它没有用户界面。

早期版本的 .Net Framework 使用了 ASP.Net Web 服务的概念,该服务具有 .asmx 文件扩展名。但是,从 .Net Framework 4.0 开始,Windows Communication Foundation (WCF) 技术已发展成为 Web 服务、.Net Remoting 和一些其他相关技术的新的继任者。它实际上将所有这些技术组合在一起。在下一节中,我们将简要介绍 Windows Communication Foundation (WCF)。

如果您使用的是早期版本的 .Net Framework,您仍然可以创建传统的 Web 服务。有关详细说明,请参阅ASP.Net - Web 服务 教程。

Windows Communication Foundation

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

  • 选择“新建网站”以打开“新建网站”对话框。

  • 从模板列表中选择 WCF 服务模板:

Creating a WCF Service
  • 从“Web 位置”下拉列表中选择“文件系统”。

  • 为 WCF 服务提供名称和位置,然后单击“确定”。

  • 将创建一个新的 WCF 服务。

创建服务契约并定义操作

服务契约定义服务执行的操作。在 WCF 服务应用程序中,您会发现解决方案资源管理器中的 App_Code 文件夹中自动创建了两个文件

  • IService.vb – 此文件包含服务契约;简单来说,它包含服务的接口,以及服务将提供的、您将在服务中实现的方法的定义。

  • Service.vb – 此文件将实现服务契约。

WCF Service Example
  • 将 IService.vb 文件的代码替换为给定的代码 –

Public Interface IService
   <OperationContract()>
   Function GetPrice(ByVal symbol As String) As Double

   <OperationContract()>
   Function GetName(ByVal symbol As String) As String
End Interface

实现契约

在 Service.vb 文件中,您将找到一个名为Service的类,它将实现IService接口中定义的服务契约。

将 IService.vb 的代码替换为以下代码 –

' NOTE: You can use the "Rename" command on the context menu to change the class name "Service" in code, svc and config file together.
Public Class Service
   Implements IService
   Public Sub New()
   End Sub
   Dim stocks As String(,) =
   {
      {"RELIND", "Reliance Industries", "1060.15"},
      {"ICICI", "ICICI Bank", "911.55"},
      {"JSW", "JSW Steel", "1201.25"},
      {"WIPRO", "Wipro Limited", "1194.65"},
      {"SATYAM", "Satyam Computers", "91.10"}
   }

   Public Function GetPrice(ByVal symbol As String) As Double _
   Implements IService.GetPrice

      Dim i As Integer
      'it takes the symbol as parameter and returns price
      For i = 0 To i = stocks.GetLength(0) - 1

         If (String.Compare(symbol, stocks(i, 0)) = 0) Then
            Return Convert.ToDouble(stocks(i, 2))
         End If
      Next i
      Return 0
   End Function

   Public Function GetName(ByVal symbol As String) As String _
   Implements IService.GetName

      ' It takes the symbol as parameter and 
      ' returns name of the stock
      Dim i As Integer
      For i = 0 To i = stocks.GetLength(0) - 1

         If (String.Compare(symbol, stocks(i, 0)) = 0) Then
            Return stocks(i, 1)
         End If
      Next i
      Return "Stock Not Found"
   End Function
End Class

测试服务

要运行创建的 WCF 服务,请从菜单栏中选择“调试”→“启动调试”选项。输出结果将为 –

WCF Service Testing

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

在右侧窗格的“请求”区域中输入参数的值,然后单击“调用”按钮。

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

WCF Service Testing

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

WCF Service Testing

使用服务

让我们在同一个解决方案中添加一个默认页面,一个 ASP.NET Web 窗体,我们将从该页面使用刚刚创建的 WCF 服务。

请执行以下步骤:

  • 右键单击解决方案资源管理器中的解决方案名称,然后向解决方案添加一个新的 Web 窗体。它将命名为 Default.aspx。

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

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

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

Add Service Reference

添加引用为您的项目执行两项任务 –

  • 在 web.config 文件中创建服务的地址和绑定。

  • 创建一个代理类来访问服务。

  • 双击窗体中的“获取价格”按钮,在其 Click 事件中输入以下代码片段 –

Partial Class _Default
   Inherits System.Web.UI.Page

   Protected Sub Button1_Click(sender As Object, e As EventArgs) _
   Handles Button1.Click
      Dim ser As ServiceReference1.ServiceClient = _ 
      New ServiceReference1.ServiceClient
      Label2.Text = ser.GetPrice(TextBox1.Text).ToString()
   End Sub
End Class
  • 当上述代码执行并使用 Microsoft Visual Studio 工具栏中提供的“启动”按钮运行时,浏览器中将打开以下页面:

WCF Service Utilization
  • 输入一个符号,然后单击“获取价格”按钮以获取硬编码的价格 –

WCF Service Utilization
广告