動態(tài)Web應用程序包括以下兩種類型的程序之一或兩者:
服務器端腳本 -這些是在Web服務器上執(zhí)行的程序,使用服務器端腳本語言(如ASP(Active Server Pages)或JSP(Java Server Pages))編寫。
客戶端腳本 -這些是在瀏覽器上執(zhí)行的程序,使用腳本語言(如JavaScript,VBScript等)編寫。
ASP.Net是由Microsoft引入的ASP的.Net版本,用于通過使用服務器端腳本創(chuàng)建動態(tài)網(wǎng)頁。 ASP.Net應用程序是使用.Net框架中存在的可擴展和可重用組件或?qū)ο缶帉懙木幾g代碼。這些代碼可以使用.Net框架中的類的整個層次結構。
ASP.Net應用程序代碼可以用以下任何一種語言編寫:
Visual Basic .NET
C#
Jscript腳本
J#
在本章中,我們將簡要介紹使用VB.Net編寫ASP.Net應用程序。有關詳細討論,請參閱ASP.Net教程。
ASP.Net有一些在Web服務器上運行的內(nèi)置對象。 這些對象具有在應用程序開發(fā)中使用的方法,屬性和集合。
下表列出了具有簡要說明的ASP.Net內(nèi)置對象:
目的 | 描述 |
---|---|
Application 應用 | 描述存儲與整個Web應用程序相關的信息的對象的方法,屬性和集合,包括應用程序生命周期中存在的變量和對象。 您使用此對象來存儲和檢索要在應用程序的所有用戶之間共享的信息。例如,您可以使用Application對象來創(chuàng)建電子商務頁面。
|
Request 請求 | 描述存儲與HTTP請求相關的信息的對象的方法,屬性和集合。這包括表單,Cookie,服務器變量和證書數(shù)據(jù)。 您使用此對象來訪問在從瀏覽器到服務器的請求中發(fā)送的信息。例如,您可以使用Request對象來訪問用戶在HTML表單中輸入的信息。
|
Response 響應 | 描述存儲與服務器響應相關的信息的對象的方法,屬性和集合。這包括顯示內(nèi)容,操作標頭,設置區(qū)域設置和重定向請求。 您使用此對象向瀏覽器發(fā)送信息。例如,您使用Response對象將輸出從腳本發(fā)送到瀏覽器。
|
Server 服務器 | 描述提供各種服務器任務的方法的對象的方法和屬性。使用這些方法,您可以執(zhí)行代碼,獲取錯誤條件,編碼文本字符串,創(chuàng)建對象供網(wǎng)頁使用,并映射物理路徑。 您使用此對象訪問服務器上的各種實用程序功能。例如,您可以使用Server對象為腳本設置超時。
|
Session 會話 | 描述存儲與用戶會話相關的信息的對象的方法,屬性和集合,包括會話生存期內(nèi)存在的變量和對象。 您使用此對象來存儲和檢索有關特定用戶會話的信息。例如,您可以使用Session對象來保存有關用戶及其首選項的信息,并跟蹤待處理操作。
|
ASP.Net提供兩種類型的編程模型:
Web Forms-這使您能夠創(chuàng)建將應用于用戶界面的各種組件的用戶界面和應用程序邏輯。
WCF Services-這使您可以遠程訪問一些服務器端功能。
對于本章,您需要使用免費的Visual Studio Web Developer。 IDE與您已經(jīng)用于創(chuàng)建Windows應用程序的IDE幾乎相同。
Web表單包括:
用戶界面
應用程序邏輯
用戶界面包括靜態(tài)HTML或XML元素和ASP.Net服務器控件。 創(chuàng)建Web應用程序時,HTML或XML元素和服務器控件存儲在具有.aspx擴展名的文件中。 此文件也稱為頁面文件。
應用程序邏輯包括應用于頁面中用戶界面元素的代碼。 你可以用任何.Net語言,如VB.Net或C#編寫代碼。
下圖顯示了“設計”視圖中的Web窗體:
讓我們創(chuàng)建一個帶有Web表單的新網(wǎng)站,該表單將顯示用戶點擊按鈕時的當前日期和時間。 執(zhí)行以下步驟:
選擇文件 - >新建 - > Web站點。將出現(xiàn)“新建網(wǎng)站”對話框。
選擇ASP.Net空網(wǎng)站模板。 鍵入網(wǎng)站的名稱,然后選擇保存文件的位置。
您需要向站點添加默認頁面。 右鍵單擊解決方案資源管理器中的網(wǎng)站名稱,然后從上下文菜單中選擇添加新項目選項。 將顯示“添加新項”對話框:
選擇Web窗體選項并提供默認頁面的名稱。 我們把它保存為Default.aspx。 單擊添加按鈕。
默認頁面顯示在源視圖中
通過向“值”添加值來設置“默認”網(wǎng)頁的標題
要在網(wǎng)頁上添加控件,請轉(zhuǎn)到設計視圖。 在表單上添加三個標簽,一個文本框和一個按鈕。
雙擊該按鈕,并將以下代碼添加到該按鈕的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應用程序,基本上是一個由其他應用程序可以使用的方法組成的類。它也遵循代碼隱藏架構,如ASP.Net網(wǎng)頁,雖然它沒有用戶界面。
.Net Framework的早期版本使用了ASP.Net Web Service的這個概念,它具有.asmx文件擴展名。然而,從.Net Framework 4.0開始,Windows通信基礎(WCF)技術已經(jīng)發(fā)展成為Web Services,.Net Remoting和一些其他相關技術的新繼任者。它把所有這些技術結合在一起。在下一節(jié)中,我們將簡要介紹Windows Communication Foundation(WCF)。
如果您使用先前版本的.Net Framework,您仍然可以創(chuàng)建傳統(tǒng)的Web服務。有關詳細說明,請參閱ASP.Net - Web服務詳細說明。
Windows Communication Foundation或WCF提供了一個用于創(chuàng)建分布式面向服務的應用程序的API,稱為WCF服務。
像Web服務一樣,WCF服務也支持應用程序之間的通信。但是,與Web服務不同,此處的通信不僅限于HTTP。 WCF可以配置為通過HTTP,TCP,IPC和消息隊列使用。支持WCF的另一個強點是,它提供對雙工通信的支持,而對于Web服務,我們只能實現(xiàn)單工通信。
從初學者的角度來看,編寫WCF服務與編寫Web服務并不完全不同。為了保持簡單,我們將看到如何:
創(chuàng)建一個WCF服務
創(chuàng)建一個服務合同并定義操作
執(zhí)行合同
測試服務
使用該服務
要理解這個概念,讓我們創(chuàng)建一個簡單的服務,提供股價信息。客戶可以根據(jù)股票代號查詢股票的名稱和價格。為了保持這個例子簡單,這些值被硬編碼在二維數(shù)組中。此服務將有兩種方法:
GetPrice方法 - 它將返回股票的價格,基于提供的符號。
GetName方法 - 它將返回股票的名稱,基于提供的符號。
創(chuàng)建WCF服務
執(zhí)行以下步驟:
打開VS Express for Web 2012
選擇新的網(wǎng)站,打開新建網(wǎng)站對話框。
選擇模板列表中的WCF服務模板:
從Web位置下拉列表中選擇文件系統(tǒng)。
提供WCF服務的名稱和位置,然后單擊“確定”。
創(chuàng)建一個新的WCF服務。
創(chuàng)建服務合同并定義操作
服務契約定義服務執(zhí)行的操作。 在WCF服務應用程序中,您會發(fā)現(xiàn)在解決方案資源管理器中的App_Code文件夾中自動創(chuàng)建兩個文件
IService.vb - 這將有服務合同; 在簡單的話,它將有服務的接口,與服務將提供的方法的定義,您將在您的服務中實現(xiàn)。
Service.vb - 這將實現(xiàn)服務合同。
用給定的代碼替換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接口中定義的服務契約。
使用以下代碼替換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
測試服務
要運行如此創(chuàng)建的WCF服務,請從菜單欄中選擇Debug-> Start Debugging選項。 輸出將是:
要測試服務操作,請從左窗格的樹中雙擊操作的名稱。 新的選項卡將顯示在右窗格中。
在右窗格的“請求”區(qū)域中輸入?yún)?shù)值,然后單擊“調(diào)用”按鈕。
下圖顯示了測試GetPrice操作的結果:
下圖顯示了測試GetName操作的結果:
使用服務
讓我們在同一個解決方案中添加一個默認頁面,一個ASP.NET Web窗體,我們將使用我們剛剛創(chuàng)建的WCF服務。
執(zhí)行以下步驟:
右鍵單擊解決方案資源管理器中的解決方案名稱,并向解決方案添加新的Web表單。 它將被命名為Default.aspx。
在表單上添加兩個標簽,一個文本框和一個按鈕。
我們需要添加一個服務引用到我們剛剛創(chuàng)建的WCF服務。 右鍵單擊解決方案資源管理器中的網(wǎng)站,然后選擇添加服務引用選項。 這將打開“添加服務引用”對話框。
在地址文本框中輸入服務的URL(位置),然后單擊執(zhí)行按鈕。 它使用默認名稱ServiceReference1創(chuàng)建服務引用。 單擊確定按鈕。
添加引用為您的項目做了兩個作業(yè):
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í)行并運行上述代碼時,瀏覽器中將打開以下頁面:
輸入符號并單擊獲取價格按鈕以獲得硬編碼的價格:
更多建議: