VB.Net - 网络编程

  • 简述

    动态 Web 应用程序由以下两种类型的程序中的一种或两种组成 -
    • Server-side scripting - 这些是在 Web 服务器上执行的程序,使用服务器端脚本语言编写,如 ASP(Active Server Pages)或 JSP(Java Server Pages)。
    • Client-side scripting - 这些是在浏览器上执行的程序,使用 JavaScript、VBScript 等脚本语言编写。
    ASP.Net 是 ASP 的 .Net 版本,由 Microsoft 推出,用于使用服务器端脚本创建动态网页。ASP.Net 应用程序是使用 .Net 框架中存在的可扩展和可重用组件或对象编写的编译代码。这些代码可以使用 .Net 框架中的整个类层次结构。
    ASP.Net 应用程序代码可以用以下任一语言编写 -
    • Visual Basic .Net
    • C#
    • Jscript
    • J#
    在本章中,我们将非常简要地介绍使用 VB.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 Forms - 这使您能够创建用户界面和将应用于用户界面的各种组件的应用程序逻辑。
    • WCF Services - 这使您可以远程访问某些服务器端功能。
    对于本章,您需要使用免费的 Visual Studio Web Developer。IDE 几乎与您已经用于创建 Windows 应用程序的相同。
    VS Web 开发人员 IDE
  • 网页表格

    网络表单包括 -
    • 用户界面
    • 应用逻辑
    用户界面由静态 HTML 或 XML 元素和 ASP.Net 服务器控件组成。创建 Web 应用程序时,HTML 或 XML 元素和服务器控件存储在一个文件中.aspx延期。该文件也称为页面文件。
    应用程序逻辑由应用于页面中用户界面元素的代码组成。您可以使用任何 .Net 语言(如 VB.Net 或 C#)编写此代码。下图显示了设计视图中的 Web 表单 -
    网页表格
  • 例子

    让我们创建一个带有 Web 表单的新网站,当用户单击按钮时,它将显示当前日期和时间。采取以下步骤 -
    • 选择文件 → 新建 → 网站。出现“新建网站”对话框。
    Web 表单示例
    • 选择 ASP.Net 空网站模板。键入网站名称并选择保存文件的位置。
    • 您需要向站点添加一个默认页面。在解决方案资源管理器中右键单击网站名称,然后从上下文菜单中选择添加新项目选项。显示添加新项目对话框 -
    Web 表单示例
    • 选择 Web Form 选项并提供默认页面的名称。我们将其保留为 Default.aspx。单击添加按钮。
    • 默认页面显示在源视图中
    Web 表单示例
    • 通过在源视图中向页面的 <Title> 标签添加值来设置默认网页的标题 -
    • 要在网页上添加控件,请转到设计视图。在表单上添加三个标签、一个文本框和一个按钮。
    Web 表单示例
    • 双击按钮并将以下代码添加到按钮的 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 表单示例
    输入您的姓名并点击提交按钮 -
    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 服务。
  • Windows 通信基础

    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 服务模板 -
    创建 WCF 服务
    • 从 Web 位置下拉列表中选择文件系统。
    • 为 WCF 服务提供名称和位置,然后单击“确定”。
    • 创建了一个新的 WCF 服务。

    创建服务合同并定义操作

    服务契约定义了服务执行的操作。在 WCF 服务应用程序中,您会发现在解决方案资源管理器的 App_Code 文件夹中自动创建了两个文件
    • IService.vb - 这将有服务合同;简而言之,它将具有服务的接口,以及服务将提供的方法的定义,您将在您的服务中实现这些定义。
    • Service.vb - 这将实现服务合同。
    WCF 服务示例
    • 用给定的代码替换 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 服务测试
    要测试服务操作,请从左侧窗格的树中双击操作名称。右侧窗格中将出现一个新选项卡。
    在右侧窗格的“请求”区域中输入参数值,然后单击“调用”按钮。
    下图显示了测试的结果 GetPrice 操作 -
    WCF 服务测试
    下图显示了测试的结果 GetName 操作 -
    WCF 服务测试

    使用服务

    让我们在相同的解决方案中添加一个默认页面,一个 ASP.NET Web 表单,我们将从中使用我们刚刚创建的 WCF 服务。
    采取以下步骤 -
    • 在解决方案资源管理器中右键单击解决方案名称,然后向解决方案添加一个新的 Web 表单。它将被命名为 Default.aspx。
    • 在表单上添加两个标签、一个文本框和一个按钮。
    WCF 服务利用率
    • 我们需要向我们刚刚创建的 WCF 服务添加一个服务引用。右键单击解决方案资源管理器中的网站,然后选择添加服务引用选项。这将打开“添加服务引用”对话框。
    • 在地址文本框中输入服务的 URL(位置),然后单击转到按钮。它使用默认名称创建服务引用ServiceReference1. 单击确定按钮。
    添加服务参考
    添加参考为您的项目做了两项工作 -
    • 在 web.config 文件中为服务创建地址和绑定。
    • 创建一个代理类来访问服务。
    • 双击表单中的 Get Price 按钮,在其 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 服务利用率
    • 输入一个符号并单击“获取价格”按钮以获取硬编码价格 -
    WCF 服务利用率