VB.Net Web编程
动态Web应用程序包括以下两种类型的程序之一或两者:
ASP.Net是由Microsoft引入的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内置对象:
目的 |
描述 |
Application 应用 |
描述存储与整个Web应用程序相关的信息的对象的方法,属性和集合,包括应用程序生命周期中存在的变量和对象。 您使用此对象来存储和检索要在应用程序的所有用户之间共享的信息。例如,您可以使用Application对象来创建电子商务页面。 |
Request 请求 |
描述存储与HTTP请求相关的信息的对象的方法,属性和集合。这包括表单,Cookie,服务器变量和证书数据。 您使用此对象来访问在从浏览器到服务器的请求中发送的信息。例如,您可以使用Request对象来访问用户在HTML表单中输入的信息。 |
Response 响应 |
描述存储与服务器响应相关的信息的对象的方法,属性和集合。这包括显示内容,操作标头,设置区域设置和重定向请求。 您使用此对象向浏览器发送信息。例如,您使用Response对象将输出从脚本发送到浏览器。 |
Server 服务器 |
描述提供各种服务器任务的方法的对象的方法和属性。使用这些方法,您可以执行代码,获取错误条件,编码文本字符串,创建对象供网页使用,并映射物理路径。 您使用此对象访问服务器上的各种实用程序功能。例如,您可以使用Server对象为脚本设置超时。 |
Session 会话 |
描述存储与用户会话相关的信息的对象的方法,属性和集合,包括会话生存期内存在的变量和对象。 您使用此对象来存储和检索有关特定用户会话的信息。例如,您可以使用Session对象来保存有关用户及其首选项的信息,并跟踪待处理操作。 |
ASP.Net编程模型
ASP.Net提供两种类型的编程模型:
对于本章,您需要使用免费的Visual Studio Web Developer。 IDE与您已经用于创建Windows应用程序的IDE几乎相同。
Web表单
Web表单包括:
用户界面包括静态HTML或XML元素和ASP.Net服务器控件。 创建Web应用程序时,HTML或XML元素和服务器控件存储在具有.aspx扩展名的文件中。 此文件也称为页面文件。
应用程序逻辑包括应用于页面中用户界面元素的代码。 你可以用任何.Net语言,如VB.Net或C#编写代码。
下图显示了“设计”视图中的Web窗体:
示例
让我们创建一个带有Web表单的新网站,该表单将显示用户点击按钮时的当前日期和时间。 执行以下步骤:
选择文件 - >新建 - > Web站点。将出现“新建网站”对话框。
选择ASP.Net空网站模板。 键入网站的名称,然后选择保存文件的位置。
您需要向站点添加默认页面。 右键单击解决方案资源管理器中的网站名称,然后从上下文菜单中选择添加新项目选项。 将显示“添加新项”对话框:
选择Web窗体选项并提供默认页面的名称。 我们把它保存为Default.aspx。 单击添加按钮。
默认页面显示在源视图中
通过向“值”添加值来设置“默认”网页的标题
要在网页上添加控件,请转到设计视图。 在表单上添加三个标签,一个文本框和一个按钮。
双击该按钮,并将以下代码添加到该按钮的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应用程序,基本上是一个由其他应用程序可以使用的方法组成的类。它也遵循代码隐藏架构,如ASP.Net网页,虽然它没有用户界面。
.Net Framework的早期版本使用了ASP.Net Web Service的这个概念,它具有.asmx文件扩展名。然而,从.Net Framework 4.0开始,Windows通信基础(WCF)技术已经发展成为Web Services,.Net Remoting和一些其他相关技术的新继任者。它把所有这些技术结合在一起。在下一节中,我们将简要介绍Windows Communication Foundation(WCF)。
如果您使用先前版本的.Net Framework,您仍然可以创建传统的Web服务。有关详细说明,请参阅ASP.Net - Web服务详细说明。
Windows通信基础
Windows Communication Foundation或WCF提供了一个用于创建分布式面向服务的应用程序的API,称为WCF服务。
像Web服务一样,WCF服务也支持应用程序之间的通信。但是,与Web服务不同,此处的通信不仅限于HTTP。 WCF可以配置为通过HTTP,TCP,IPC和消息队列使用。支持WCF的另一个强点是,它提供对双工通信的支持,而对于Web服务,我们只能实现单工通信。
从初学者的角度来看,编写WCF服务与编写Web服务并不完全不同。为了保持简单,我们将看到如何:
创建一个WCF服务
创建一个服务合同并定义操作
执行合同
测试服务
使用该服务
示例
要理解这个概念,让我们创建一个简单的服务,提供股价信息。客户可以根据股票代号查询股票的名称和价格。为了保持这个例子简单,这些值被硬编码在二维数组中。此服务将有两种方法:
创建WCF服务
执行以下步骤:
创建一个新的WCF服务。
创建服务合同并定义操作
服务契约定义服务执行的操作。 在WCF服务应用程序中,您会发现在解决方案资源管理器中的App_Code文件夹中自动创建两个文件
用给定的代码替换IService.vb文件的代码:
Public Interface IService
Function GetPrice(ByVal symbol As String) As Double
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服务,请从菜单栏中选择Debug-> Start Debugging选项。 输出将是:
要测试服务操作,请从左窗格的树中双击操作的名称。 新的选项卡将显示在右窗格中。
在右窗格的“请求”区域中输入参数值,然后单击“调用”按钮。
下图显示了测试GetPrice操作的结果:
下图显示了测试GetName操作的结果:
使用服务
让我们在同一个解决方案中添加一个默认页面,一个ASP.NET Web窗体,我们将使用我们刚刚创建的WCF服务。
执行以下步骤:
右键单击解决方案资源管理器中的解决方案名称,并向解决方案添加新的Web表单。 它将被命名为Default.aspx。
在表单上添加两个标签,一个文本框和一个按钮。
我们需要添加一个服务引用到我们刚刚创建的WCF服务。 右键单击解决方案资源管理器中的网站,然后选择添加服务引用选项。 这将打开“添加服务引用”对话框。
在地址文本框中输入服务的URL(位置),然后单击执行按钮。 它使用默认名称ServiceReference1创建服务引用。 单击确定按钮。
添加引用为您的项目做了两个作业:
- 在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工具栏上的“开始”按钮执行并运行上述代码时,浏览器中将打开以下页面:
输入符号并单击获取价格按钮以获得硬编码的价格: