VB.Net - Web編程

2022-09-27 10:56 更新

動態(tài)Web應(yīng)用程序包括以下兩種類型的程序之一或兩者:

  • 服務(wù)器端腳本 -這些是在Web服務(wù)器上執(zhí)行的程序,使用服務(wù)器端腳本語言(如ASP(Active Server Pages)或JSP(Java Server Pages))編寫。

  • 客戶端腳本 -這些是在瀏覽器上執(zhí)行的程序,使用腳本語言(如JavaScript,VBScript等)編寫。

ASP.Net是由Microsoft引入的ASP的.Net版本,用于通過使用服務(wù)器端腳本創(chuàng)建動態(tài)網(wǎng)頁。 ASP.Net應(yīng)用程序是使用.Net框架中存在的可擴展和可重用組件或?qū)ο缶帉懙木幾g代碼。這些代碼可以使用.Net框架中的類的整個層次結(jié)構(gòu)。

ASP.Net應(yīng)用程序代碼可以用以下任何一種語言編寫:

  • Visual Basic .NET

  • C#

  • Jscript腳本

  • J#

在本章中,我們將簡要介紹使用VB.Net編寫ASP.Net應(yīng)用程序。有關(guān)詳細討論,請參閱ASP.Net教程。

ASP.Net內(nèi)置對象

ASP.Net有一些在Web服務(wù)器上運行的內(nèi)置對象。 這些對象具有在應(yīng)用程序開發(fā)中使用的方法,屬性和集合。

下表列出了具有簡要說明的ASP.Net內(nèi)置對象:

目的描述
Application 
應(yīng)用

描述存儲與整個Web應(yīng)用程序相關(guān)的信息的對象的方法,屬性和集合,包括應(yīng)用程序生命周期中存在的變量和對象。
您使用此對象來存儲和檢索要在應(yīng)用程序的所有用戶之間共享的信息。例如,您可以使用Application對象來創(chuàng)建電子商務(wù)頁面。

Request

請求

描述存儲與HTTP請求相關(guān)的信息的對象的方法,屬性和集合。這包括表單,Cookie,服務(wù)器變量和證書數(shù)據(jù)。
您使用此對象來訪問在從瀏覽器到服務(wù)器的請求中發(fā)送的信息。例如,您可以使用Request對象來訪問用戶在HTML表單中輸入的信息。

Response
響應(yīng)

描述存儲與服務(wù)器響應(yīng)相關(guān)的信息的對象的方法,屬性和集合。這包括顯示內(nèi)容,操作標頭,設(shè)置區(qū)域設(shè)置和重定向請求。
您使用此對象向瀏覽器發(fā)送信息。例如,您使用Response對象將輸出從腳本發(fā)送到瀏覽器。

Server
服務(wù)器

描述提供各種服務(wù)器任務(wù)的方法的對象的方法和屬性。使用這些方法,您可以執(zhí)行代碼,獲取錯誤條件,編碼文本字符串,創(chuàng)建對象供網(wǎng)頁使用,并映射物理路徑。
您使用此對象訪問服務(wù)器上的各種實用程序功能。例如,您可以使用Server對象為腳本設(shè)置超時。

Session
會話

描述存儲與用戶會話相關(guān)的信息的對象的方法,屬性和集合,包括會話生存期內(nèi)存在的變量和對象。
您使用此對象來存儲和檢索有關(guān)特定用戶會話的信息。例如,您可以使用Session對象來保存有關(guān)用戶及其首選項的信息,并跟蹤待處理操作。

ASP.Net編程模型

ASP.Net提供兩種類型的編程模型:

  • Web Forms-這使您能夠創(chuàng)建將應(yīng)用于用戶界面的各種組件的用戶界面和應(yīng)用程序邏輯。

  • WCF Services-這使您可以遠程訪問一些服務(wù)器端功能。

對于本章,您需要使用免費的Visual Studio Web Developer。 IDE與您已經(jīng)用于創(chuàng)建Windows應(yīng)用程序的IDE幾乎相同。

VS Web開發(fā)IDE

Web表單

Web表單包括:

  • 用戶界面

  • 應(yīng)用程序邏輯

用戶界面包括靜態(tài)HTML或XML元素和ASP.Net服務(wù)器控件。 創(chuàng)建Web應(yīng)用程序時,HTML或XML元素和服務(wù)器控件存儲在具有.aspx擴展名的文件中。 此文件也稱為頁面文件。

應(yīng)用程序邏輯包括應(yīng)用于頁面中用戶界面元素的代碼。 你可以用任何.Net語言,如VB.Net或C#編寫代碼。

下圖顯示了“設(shè)計”視圖中的Web窗體:

Web窗體

示例

讓我們創(chuàng)建一個帶有Web表單的新網(wǎng)站,該表單將顯示用戶點擊按鈕時的當前日期和時間。 執(zhí)行以下步驟:

  • 選擇文件 - >新建 - > Web站點。將出現(xiàn)“新建網(wǎng)站”對話框。

    Web窗體示例
  • 選擇ASP.Net空網(wǎng)站模板。 鍵入網(wǎng)站的名稱,然后選擇保存文件的位置。

  • 您需要向站點添加默認頁面。 右鍵單擊解決方案資源管理器中的網(wǎng)站名稱,然后從上下文菜單中選擇添加新項目選項。 將顯示“添加新項”對話框:

    Web窗體示例
  • 選擇Web窗體選項并提供默認頁面的名稱。 我們把它保存為Default.aspx。 單擊添加按鈕。

  • 默認頁面顯示在源視圖中

    Web窗體示例
  • 通過向“值”添加值來設(shè)置“默認”網(wǎng)頁的標題

  • 要在網(wǎng)頁上添加控件,請轉(zhuǎn)到設(shè)計視圖。 在表單上添加三個標簽,一個文本框和一個按鈕。

    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工具欄上的“開始”按鈕執(zhí)行并運行上述代碼時,瀏覽器中將打開以下頁面:

Web窗體示例

輸入您的姓名,然后點擊提交按鈕:

Web窗體示例

網(wǎng)頁服務(wù)

Web服務(wù)是一個Web應(yīng)用程序,基本上是一個由其他應(yīng)用程序可以使用的方法組成的類。它也遵循代碼隱藏架構(gòu),如ASP.Net網(wǎng)頁,雖然它沒有用戶界面。

.Net Framework的早期版本使用了ASP.Net Web Service的這個概念,它具有.asmx文件擴展名。然而,從.Net Framework 4.0開始,Windows通信基礎(chǔ)(WCF)技術(shù)已經(jīng)發(fā)展成為Web Services,.Net Remoting和一些其他相關(guān)技術(shù)的新繼任者。它把所有這些技術(shù)結(jié)合在一起。在下一節(jié)中,我們將簡要介紹Windows Communication Foundation(WCF)。

如果您使用先前版本的.Net Framework,您仍然可以創(chuàng)建傳統(tǒng)的Web服務(wù)。有關(guān)詳細說明,請參閱ASP.Net - Web服務(wù)詳細說明。

Windows通信基礎(chǔ)

Windows Communication Foundation或WCF提供了一個用于創(chuàng)建分布式面向服務(wù)的應(yīng)用程序的API,稱為WCF服務(wù)。

像Web服務(wù)一樣,WCF服務(wù)也支持應(yīng)用程序之間的通信。但是,與Web服務(wù)不同,此處的通信不僅限于HTTP。 WCF可以配置為通過HTTP,TCP,IPC和消息隊列使用。支持WCF的另一個強點是,它提供對雙工通信的支持,而對于Web服務(wù),我們只能實現(xiàn)單工通信。

從初學者的角度來看,編寫WCF服務(wù)與編寫Web服務(wù)并不完全不同。為了保持簡單,我們將看到如何:

  • 創(chuàng)建一個WCF服務(wù)

  • 創(chuàng)建一個服務(wù)合同并定義操作

  • 執(zhí)行合同

  • 測試服務(wù)

  • 使用該服務(wù)

示例

要理解這個概念,讓我們創(chuàng)建一個簡單的服務(wù),提供股價信息??蛻艨梢愿鶕?jù)股票代號查詢股票的名稱和價格。為了保持這個例子簡單,這些值被硬編碼在二維數(shù)組中。此服務(wù)將有兩種方法:

  • GetPrice方法 - 它將返回股票的價格,基于提供的符號。

  • GetName方法 - 它將返回股票的名稱,基于提供的符號。

創(chuàng)建WCF服務(wù)

執(zhí)行以下步驟:

  • 打開VS Express for Web 2012

  • 選擇新的網(wǎng)站,打開新建網(wǎng)站對話框。

  • 選擇模板列表中的WCF服務(wù)模板:

    創(chuàng)建WCF服務(wù)
  • 從Web位置下拉列表中選擇文件系統(tǒng)。

  • 提供WCF服務(wù)的名稱和位置,然后單擊“確定”。

創(chuàng)建一個新的WCF服務(wù)。

創(chuàng)建服務(wù)合同并定義操作

服務(wù)契約定義服務(wù)執(zhí)行的操作。 在WCF服務(wù)應(yīng)用程序中,您會發(fā)現(xiàn)在解決方案資源管理器中的App_Code文件夾中自動創(chuàng)建兩個文件

  • IService.vb - 這將有服務(wù)合同; 在簡單的話,它將有服務(wù)的接口,與服務(wù)將提供的方法的定義,您將在您的服務(wù)中實現(xiàn)。

  • Service.vb - 這將實現(xiàn)服務(wù)合同。

    WCF服務(wù)實例

用給定的代碼替換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的類,它將實現(xiàn)在IService接口中定義的服務(wù)契約。

使用以下代碼替換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 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 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

測試服務(wù)

要運行如此創(chuàng)建的WCF服務(wù),請從菜單欄中選擇Debug-> Start Debugging選項。 輸出將是:

WCF服務(wù)測試

要測試服務(wù)操作,請從左窗格的樹中雙擊操作的名稱。 新的選項卡將顯示在右窗格中。

在右窗格的“請求”區(qū)域中輸入?yún)?shù)值,然后單擊“調(diào)用”按鈕。

下圖顯示了測試GetPrice操作的結(jié)果:

WCF服務(wù)測試

下圖顯示了測試GetName操作的結(jié)果:

WCF服務(wù)測試

使用服務(wù)

讓我們在同一個解決方案中添加一個默認頁面,一個ASP.NET Web窗體,我們將使用我們剛剛創(chuàng)建的WCF服務(wù)。

執(zhí)行以下步驟:

  • 右鍵單擊解決方案資源管理器中的解決方案名稱,并向解決方案添加新的Web表單。 它將被命名為Default.aspx。

  • 在表單上添加兩個標簽,一個文本框和一個按鈕。

    WCF服務(wù)利用
  • 我們需要添加一個服務(wù)引用到我們剛剛創(chuàng)建的WCF服務(wù)。 右鍵單擊解決方案資源管理器中的網(wǎng)站,然后選擇添加服務(wù)引用選項。 這將打開“添加服務(wù)引用”對話框。

  • 在地址文本框中輸入服務(wù)的URL(位置),然后單擊執(zhí)行按鈕。 它使用默認名稱ServiceReference1創(chuàng)建服務(wù)引用。 單擊確定按鈕。

    添加服務(wù)引用

    添加引用為您的項目做了兩個作業(yè):

    • 在web.config文件中為服務(wù)創(chuàng)建地址和綁定。
    • 創(chuàng)建代理類以訪問服務(wù)。
雙擊表單中的“獲取價格”按鈕,在其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工具欄上的“開始”按鈕執(zhí)行并運行上述代碼時,瀏覽器中將打開以下頁面:

WCF服務(wù)利用

輸入符號并單擊獲取價格按鈕以獲得硬編碼的價格:

WCF服務(wù)利用


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號