国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

細細品味ASP.NET

2024-07-10 12:38:05
字體:
來源:轉載
供稿:網友

本文摘自2001年的文章,在當時,ASP.NET剛剛從襁褓中走出來,帶著他的稚嫩向世人招手。

概 述

ASP現在被從頭到腳地重建了,結果就是ASP.NET。它并不只是ASP 4.0,它是一個用于 Web開發的全新框架,其中包含了許多新的特性。ASP.NET提供了更易于編寫、結構更清晰的代碼,這些代碼很容易進行再利用和共享;ASP.NET使用編譯后的語言,從而提升性能和伸縮性;ASP.NET使用Web表單使開發更直觀,利用面向對象技術促進組件的再利用。另外,ASP.NET中還包括有頁面事件、Web控件、緩沖技術以及服務器控件和對數據捆綁的改進。供 ASP.NET使用的庫以及在Microsoft.NET框架中允許通過Web 使用客戶商用函數,為程序員提供了更多新的開發機會。 

ASP.NET的優勢

ASP.NET使代碼更加干凈。現有的ASP 應用程序中,不管你將它們寫得怎么樣,結構總是充滿了長長短短的代碼。而ASP.NET的代碼不僅更容易編寫,而且更加干凈整潔,比ASP代碼更易于閱讀。同時,ASP.NET代碼的結構方式提高了其再利用性和共享性。

ASP.NET 改進了配置、伸縮性、安全性和可靠性。對于簡單的ASP應用程序,配置其實并不算什么問題,但是當你移植到一個利用組件的N層結構中時就會遇到問題。當你對這些應用程序進行配置和維護時,DLL 陷阱問題(組件注冊、版本、鎖定的DLL等等)就會出現。ASP.NET中則取消了組件注冊以及DLL鎖定,全面使用了XML配置文件,從而解決了這個問題。這樣你只需要執行復制文件的工作就能配置一個Web應用程序。

ASP.NET對各種不同的瀏覽器提供了更好的支持。對于ASP開發人員來說,瀏覽器兼容問題好象是一個永恒的問題。你或者為低一級的瀏覽器編寫代碼,例如用HTML 3.2,或者限制頁面的瀏覽范圍。無線應用程序協議WAP設備的引入還會深化這個問題。本文中Web表單這部分描述了ASP.NET是如何解決瀏覽器兼容性問題的。

ASP.NET 造就了一類新的Web應用程序。目前的Web應用程序通常都是同一種模式:一套線性應用程序,然后將邏輯植入其中之一。ASP.NET允許開發人員打破這種單一模式,創造出更加動態而且伸縮性更強的應用程序,這種應用程序能夠更好地滿足公司的商業需求,并提供一個更加豐富的開發環境。
到這里你可能會想,雖然這些目標都很高尚,但是它們會使編寫應用程序變得困難。然后恰恰相反,用ASP.NET 進行開發要簡單得多!

下面我們就來細細品味一下ASP.NET的強大特征,包括:

●對編譯語言的支持

●Web表單

●跟隨頁面對象的頁面事件

●Web控件

●Web Services

●緩沖技術

●調試和跟蹤

●代碼和內容隔離

●名稱空間的通用庫

●配置

使用經過編譯的語言

現有的ASP版本是基于腳本語言的,如VBScript和JScript 。腳本語言本身并沒有什么錯,但是它們有兩大缺陷:它們是解釋型的,并且分類不嚴格。ASP.NET并沒有完全拋棄腳本語言的概念,它引入了對全編譯語言的支持,使你能夠用Visual Basic編寫自己的服務器端代碼,例如:

<script language=“vb” runat=“server”>

Visual Basic的一大優勢是其對嚴格分類變量的支持,因此以下的代碼在ASP.NET中是成立的:
Dim FirstName As String
除了Visual Basic和C++,你還可以使用最新的Microsoft語言 C#來編寫服務器端代碼。C# 將C++ 中不實用的部分都去掉了,它更容易理解。用ASP.NET,編譯動作在頁面第一次裝載時發生。即便代碼是腳本語言,它也會在執行前被編譯,因此 Jscript代碼頁面的性能也會得到提高。實際上,這是 .NET 框架的一個基本的新特征。以前版本的語言編譯器對數據類型和對象是區別對待的,這就意味著唯一可以進行跨語言開發的就是創建COM對象。Microsoft .NET框架中的通用語言運行時間環境CLR允許對已經用通用運行時間支持編譯過的任何代碼進行緊密的交互作用,這就是新的Visual Basic和C# 編譯器將要做的:創建能在運行時間中被管理的代碼。

這樣做最大的優點是使得真正的跨語言開發成為可能。有了通用運行時間環境CLR,你可以用C#創建對象,并在 Visual Basic中通過繼承功能對它們進行擴展。現在的 Visual Basic .NET支持繼承功能,這樣你就可以在C# 中編寫組件,然后在Visual Basic中將它們設置成子集。雖然 Visual Basic、C#和腳本語言是在開始的框架結構中被支持的語言,但是稍后其它語言,如Smalltalk、Eiffel、Pascal等等,也將會被支持。Microsoft .NET框架的一個優勢就是擴展非常得容易,因此使用一種新的語言僅僅需要為運行時間環境兼容的輸出提供編譯器支持。

Web表單

ASP.NET Web Forms就是Web頁面,同現在你用 ASP編寫代碼所做的工作是一樣的。但是還不僅僅如此,ASP.NET Web Forms是在一個面向對象的編程模型上設計的,這樣代碼就能夠再利用,并且使應用程序代碼與頁面內容分隔開。在Visual Basic中,你將一個控件拖曳到一個表單上,然后執行其下的事件程序。在傳統的 ASP中,這是不可能的,因為在用戶界面控件和它們的服務器端代碼之間沒有鏈接存在。但是在ASP.NET中,這樣的一個鏈接是存在的。所以,你可以編寫下面表1所示的代碼,而不用手動從變量表中拖出值:

表1 簡單ASP.NET Web Form例程

<html>
<script language=“vb” runat=“server”>
Sub SubmitButton_Click(Source As Object, E As EventArgs)
Response.Write (ÒYou entered Ò & Name.text)
End Sub
</script>
<body>
<form method=“post” runat=“server”>
Name: <asp:textbox id=“Name” runat=“server” /><br>
<asp:Button text=“Enter”
OnClick=“SubmitButton_Click” runat=“server” />
</form>
</body>
</html>

在表1中有兩點值得注意。第一是在表單上 runat=“server” 屬性和 asp:textbox控件的使用,這可以告訴 ASP.NET 服務器和客戶都可以使用這些控件。如此使用的控件叫做服務器控件。asp: 用做控件名的前綴,它本身就識別了控件是從哪來的。稍后我將討論這一點。第二個需要注意的細節是OnClick事件。開發DHTML 代碼時,你經常要用到 OnClick事件,這是為了在瀏覽器中激活一個事件。因為為控件設置了runat=“server” 屬性,所以事件只在服務器上被激活。要對這個例子進行擴展,可以去掉 Response.Write,然后用一個基于服務器的控件來代替它,比如下面的表2代碼:

表2 使用基于服務器的控件

<html>
<script language=“vb” runat=“server”>
Sub SubmitButton_Click(Source As Object, E As EventArgs)
YouEntered.Text = ÒYou entered Ò & txtName.text
End Sub
</script>
<body>
<form method=“post” runat=“server”>
Name: <asp:textbox id=“txtName” runat=“server” /><br>
<asp:Button text=“Enter”
OnClick=“SubmitButton_Click” runat=“server” />
<br>
<asp:label id=“YouEntered” runat=“server”></span>
</form>
</body>
</html>

這個代碼運行相當好,很象一個傳統的客戶或Visual Basic表單,代碼也直觀多了。你可以用服務器控件來連接事件過程和基于服務器的代碼。這些基于服務器的控件向瀏覽器發送純 HTML內容,其中不再含有客戶端腳本。實際上,這其中一個重要的設計目的就是要堅持使用固有的 HTML 3.2元素代碼以提供最大可能的瀏覽器兼容性。比如說,表2中的代碼生成了以下HTML:

<html>
<body>
<FORM name=“HtmlForm2" method=“post” action=“Test.aspx” id=“HtmlForm2">
<INPUT type=“hidden” name=“__VIEWSTATE” value=“a0z664351470__x”>
Name: <input name=“txtName” type=“text” id=“txtName”><br>
<input type=“submit” name=“Button5" value=“Enter”>
<br>
<span id=“lblYouEntered”></span>
</FORM>
</body>
</html>

生成的代碼是符合 HTML 3.2標準的。它執行一個標準投遞,將用戶輸入發送回同一個文件。這里沒有對服務器狀態進行維護,也沒有客戶端腳本對狀態進行維護。隱含的域執行對控件狀態的維護,這意味著在頁面的“提交-返回”之間,控件能自動恢復狀態,而不需要任何編程干預。雖然 ASP.NET Web控件的默認輸出是符合HTML 3.2標準的內容,但是對于更高級的瀏覽器如Microsoft Internet Explorer 5.0,也可以輸出為DHTML格式。這樣你就能只使用一套服務器控件來編寫頁面,允許控件根據瀏覽器決定發送哪種類型的輸出,從而允許你將發送 DHTML的控件和客戶端腳本用到最新版本的Internet Explorer中,將純 HTML 3.2內容發送到其它瀏覽器中。

頁面事件

在此前我提到 ASP.NET已經被從頭到腳地重寫了,但是我并沒有指出它是按照面向對象的思路重建的。在對象樹的頂部是Page對象,即頁面對象,ASP.NET的每個控件、應用程序和頁面都是從這個對象中繼承來的,也就是說每個頁面都是頁面對象的一個例示。頁面的Load (裝載)事件是一個非常重要的事件,如下面的表3代碼所示:

表3 使用頁面事件

<html>
<script language=“VB” runat=“server”>
Sub Page_Load(Source As Object, E As EventArgs)
‘ code to run when page loads
End Sub
Sub SubmitButton_Click(Source As Object, E As EventArgs)
‘ code to run when button is clicked
End Sub
Sub Page_Unload(Source As Object, E As EventArgs)
‘ code to run when page unloads
End Sub
</script>
<form runat=“server”>
<asp:Button text=“Enter” OnClick=“SubmitButton_Click” runat=“server” />
<asp:label id=“YouEntered”/>
</form>
</html>

在這里你看到了以前在Visual Basic中經常見到的同樣的 Load/Unload (裝載/卸載)過程。 當頁面被裝載時,Load事件被激活,這時所有基于服務器的控件都可用。在與用戶的交互作用過程中會生成其它事件。最后,當頁面被卸載時激活 Unload事件。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 惠水县| 涞水县| 怀远县| 武强县| 楚雄市| 南投市| 类乌齐县| 齐河县| 永川市| 沂南县| 玉林市| 德江县| 勐海县| 定州市| 无锡市| 镇康县| 德惠市| 曲阜市| 龙井市| 紫金县| 陵水| 天气| 育儿| 沙坪坝区| 扶绥县| 讷河市| 张家川| 平谷区| 图片| 青州市| 安塞县| 平江县| 海原县| 临泉县| 涪陵区| 盐津县| 洛扎县| 普宁市| 呼玛县| 堆龙德庆县| 双鸭山市|