標籤:

什麼是 ASP/ASP+/ASP.NET

什麼是 ASP?ASP 是一種使嵌入網頁中的腳本可由網際網路伺服器執行的伺服器端腳本技術。ASP 是一項微軟公司的技術ASP 指 Active Server Pages(動態伺服器頁面)ASP 是運行於 IIS 之中的程序IIS 指 Internet Information Services(網際網路信息服務)IIS 是 Windows 2000 捆綁的免費組件IIS同時也是 Windows NT 4.0 的可選組件此可選組件可通過網際網路下載PWS 的體積更小 - 不過擁有 IIS 的完整功能PWS 可在 Windows 95/98 的安裝 CD 中找到ASP 文件是什麼?ASP 文件和 HTML文件類似ASP 文件可包含文本、HTML、XML 和腳本ASP 文件中的腳本可在伺服器上執行。ASP 文件的擴展名是 ".asp"它如何工作?當瀏覽器請求某個 HTML 文件時,伺服器會返回這個文件而當瀏覽器請求某個 ASP 文件時,IIS 將這個請求傳遞至 ASP 引擎ASP 引擎會逐行地讀取這個文件,並執行文件中的腳本最後,ASP 文件將以純 HTML 的形式返回到瀏覽器在您繼續學習 ASP .NET 之前,擁有對微軟 ASP 技術的基本了解釋有幫助的。如需學習更多 ASP,請訪問我們的《ASP 教程》。什麼是 ASP+?ASP+ 等同於 ASP.NET。ASP+ 是微軟研發 ASP.NET 期間所使用的早期名稱。什麼是 ASP.NET?ASP 3.0 是 ASP 的最新版本,但不會再有 ASP 4.0 版本了。ASP.NET 是下一代的 ASP,但是不能把 ASP.NET 稱為 ASP 的升級版本。ASP.NET 是全新的伺服器端 ASP 腳本。ASP.NET 是 .NET 框架的組成部分。微軟耗時三年從底層重寫了 ASP.NET,而 ASP.NET 無法完全向後兼容 ASP 3.0。您會在本教程的下一節了解到 ASP 與 ASP.NET 之間的差異所在。.NET 框架(.NET Framework).NET 框架是微軟 .NET 平台的基礎結構。.NET 框架是構建、開發及運行 Web 應用程序和 Web 服務的一種環境。.NET 框架含有公共語言運行庫和公共類庫 - 比如 ADO.NET、ASP.NET 以及 Windows 窗體 - 來提供可整合入各種計算機系統的高級標準服務。.NET 框架可提供特性豐富的應用程序環境、簡化的開發以及眾多開發語言之間的輕鬆整合。.NET 框架中立於語言。目前,它支持 C++、C#、Visual Basic 以及 JScript(微軟的 JavaScript 版本)。微軟的 Visual Studio.NET 是針對 NET Framework 的公共開發環境。ASP 與 ASP.NET 之間的差異Previous PageNext PageASP.NET 擁有更好的語言支持,一整套新的控制項,基於 XML 的組件,以及更好的用戶身份驗證。ASP.NET 通過允許編譯的代碼,提供了更強的性能。ASP.NET 代碼不完全向後兼容 ASP。ASP.NET 的新特性更好的語言支持可編程的控制項事件驅動的編程基於 XML 的組件用戶身份驗證,帶有帳號和角色更高的可伸縮性更強的性能 - 編譯代碼更容易配置和開發不完全的 ASP 兼容語言支持ASP.NET 使用新的 ADO.NET。ASP.NET 支持完整的 Visual Basic,而非 VBScript。ASP.NET 支持 C# (C sharp) 和 C++。ASP.NET 支持 JScript,和以前一樣。ASP.NET 控制項ASP.NET 包含大量 HTML 控制項。幾乎所有頁面中的 HTML 元素都能被定義為 ASP.NET 控制項,而這些控制項都能由腳本控制。ASP.NET 同時包含一系列新的面向對象的輸入控制項,比如可編程的列表框和驗證控制項。新的 data grid 控制項支持分類、數據分頁,以及您對一個數據集控制項所期待的一切。事件驅動的控制項所有 Web 頁面上的 ASP.NET 對象都能夠發生可被 ASP.NET 代碼處理的事件。可由代碼處理的載入、點擊和更改事件使得編程更輕鬆,更有條理。ASP.NET 組件ASP.NET 組件深入地基於 XML。比如新的 AD Rotator,它使用 XML 來存儲廣告信息和配置。用戶身份驗證ASP.NET 支持基於表單的用戶身份驗證,包括 cookie 管理和自動的非授權登錄重定向。(您仍然能夠定製自己的登陸頁面和用戶驗證程序)。User 帳戶和角色ASP.NET 允許用戶帳戶和角色,賦予每個用戶(帶有一個給定的角色)不同的伺服器代碼訪問許可權。高可伸縮性ASP.NET 在提供更大的可伸縮性方面已有非常多的改善。伺服器對伺服器的通信已得到極大的增強,這使得在若干個伺服器上按比例分配一個應用程序成為可能。關於這一點的一個例子是,我們有能力在不同的伺服器上運行 XML 解析器、XSL 轉換,甚至耗費資源的 session 對象。編譯代碼對伺服器上 ASP.NET 頁面的第一個請求是編譯其 ASP.NET 代碼,並在內存中保存一份緩存的備份。這樣做的結果當然極大地提高了性能。易於配置通過純文本文件就可完成對 ASP.NET 的配置。配置文件可在應用程序運行時進行上傳和修改。無需重起伺服器。也沒有 metabase 和註冊方面的難題。易於開發不需要重起伺服器來配置和替換已編譯的代碼。ASP.NET 會簡單地把所有新的請求重定向到新的代碼。兼容性ASP.NET 不完全兼容早期的 ASP 版本,所有大部分舊的 ASP 代碼需要進行修改才能在 ASP.NET 下運行。為了解決這個問題,ASP.NET 使用了一個新的文件後綴 ".aspx"。這樣就使 ASP.NET 應用程序與 ASP 應用程序能夠一起運行在同一個伺服器上。ASP.NET - Web 頁面Previous PageNext Page一個簡單的 ASP.NET 頁面看上去類似一張普通的 HTML 頁面。Hello W3School為了開始我們的 ASP.NET 學習之旅,首先我們將構造一張簡單的 HTML 頁面,這張頁面將在瀏覽器中顯示 "Hello W3School":

用 HTML 編寫的 Hello W3School這張 HTML 頁面的 HTML 代碼:<html><body bgcolor="yellow"><center><h2>Hello W3School!</h2></center></body></html>如果您希望親自試一試,可以把這些代碼保存在名為 "firstpage.html" 的文件中,然後創建一個到此文件的鏈接,就像這樣:firstpage.html。用 ASP.NET 編寫的 Hello W3School把 HTML 頁面轉換為 ASP.NET 的最簡單的方法是,把這個 HTML 文件拷貝為帶有 .aspx 後綴的新文件。這些將把我們的例子顯示為一個 ASP.NET 頁面:<html><body bgcolor="yellow"><center><h2>Hello W3School!</h2></center></body></html>如果您希望親自試一試,請把這些代碼保存在一個名為 "firstpage.aspx" 的文件中,並創建一個到此文件的鏈接:firstpage.aspx。它如何工作?從根本上講,ASP.NET 頁面與 HTML 完全相同。HTML 頁面的擴展名是 .htm 或 .html。假如瀏覽器從伺服器請求某張 HTML 頁面,伺服器不進行任何修改,就會把該頁面發往瀏覽器。ASP.NET 頁面的擴展名是 .aspx。如果瀏覽器請求某張 ASP.NET 頁面,那麼在把結果發回瀏覽器之前,伺服器首先會處理頁面中的可執行代碼。上面的 ASP.NET 頁面不包含任何可執行的代碼,因此也不會執行任何代碼。在下面的例子中,我們將向頁面添加一些可執行代碼,以便向您演示靜態 HTML 頁面與動態 ASP 頁面的不同之處。經典的 ASPActive Server Pages (ASP) 已經流行很多年了。通過 ASP,可以把可執行代碼放置於 HTML 頁面內部。ASP.NET 之前的 ASP 版本經常被稱為經典 ASP(Classic ASP)。ASP.NET 不完全兼容 Classic ASP,但是通過少量的修改,Classic ASP 可以良好地作為 ASP.NET 進行工作。如果您希望學習更多有關 Classic ASP 的知識,請訪問我們的ASP 教程。用 Classic ASP 編寫的動態頁面為了向您演示如何使用動態內容顯示頁面,我們向上面的例子添加了一些可執行代碼:<html><body bgcolor="yellow"><center><h2>Hello W3School!</h2><p><%Response.Write(now())%></p></center></body></html><% --%> 標籤內的代碼在伺服器上執行。Response.Write 是 ASP 代碼,用來向 HTML 輸出流文本。Now() 是一個可返回伺服器當前日期和時間的函數。如果您希望親自試一試,可以把這些代碼保存在名為 "dynpage.asp" 的文件中,並創建一個指向該文件的鏈接:dynpage.asp。用 ASP .NET 編寫的動態頁面下面的代碼可把我們的例子顯示為一個 ASP.NET 頁面:<html><body bgcolor="yellow"><center><h2>Hello W3School!</h2><p><%Response.Write(now())%></p></center></body></html>如果您希望親自試一試,請把這些代碼保存在名為 "dynpage.aspx" 的文件中,然後創建到此文件的鏈接:dynpage.aspx。ASP.NET vs Classic ASP上面的例子無法展示出 ASP.NET 與 Classic ASP 之間的不同之處。正如您在最後的兩個例子中看到的,在這個兩個 ASP 和 ASP.NET 頁面之間,沒有什麼不同之處。在下面的章節,您會看到,伺服器控制項如何使 ASP.NET 比 Classic ASP 更加強大。伺服器控制項是伺服器可以理解的標籤。Classic ASP 的局限性下面列出的代碼是從上一節中拷貝的:<html><body bgcolor="yellow"><center><h2>Hello W3School!</h2><p><%Response.Write(now())%></p></center></body></html>上面的代碼能夠反映出 Classic ASP 的局限性:代碼塊必須放置在需要進行輸出的位置。通過 Classic ASP,我們是無法將可執行代碼與 HTML 本身進行分離的。這使得頁面難以閱讀,也難以維護。ASP.NET - 伺服器控制項通過伺服器控制項,ASP.NET 已經解決了上面所描述的「義大利麵條式代碼」的問題。伺服器控制項是可被伺服器理解的標籤。有三種類型的伺服器控制項:HTML 伺服器控制項 - 傳統的 HTML 標籤Web 伺服器控制項 - 新的 ASP.NET 標籤Validation 伺服器控制項 - 用於輸入驗證ASP.NET - HTML 伺服器控制項HTML 伺服器控制項是伺服器可理解的 HTML 標籤。ASP.NET 中的 HTML 元素是作為文本來進行處理的。要想使這些元素可編程,就需要向這些 HTML 元素添加runat="server" 屬性。該屬性指示,此元素是一個伺服器控制項。同時要添加 id 屬性來標識該伺服器控制項。id 引用可用於操作運行時的伺服器控制項。注釋:所有 HTML 伺服器控制項必須位於帶有 runat="server" 屬性的 <form> 標籤內。runat="server" 屬性指示該表單應在伺服器進行處理。它同時指示其包括在內的控制項可被伺服器腳本訪問。在下面的例子中,我們在 .aspx 文件中聲明了一個 HtmlAnchor 伺服器控制項。然後我們在一個事件句柄中操作該 HtmlAnchor 控制項的 HRef 屬性。Page_Load 事件是眾多 ASP.NET 可理解的事件中的一種類型:注釋:事件句柄(event handler)是一種針對給定事件執行代碼的子常式。<script runat="server">Sub Page_Loadlink1.HRef="http://www.w3school.com.cn"End Sub</script><html><body><form runat="server"><a id="link1" runat="server">Visit W3School!</a></form></body></html>提示:可執行代碼本身已被移到 HTML 之外了。ASP.NET - Web 伺服器控制項Web 伺服器控制項是伺服器可理解的特殊 ASP.NET 標籤。類似 HTML 伺服器控制項,Web 伺服器控制項也在伺服器上創建,它們同樣需要 runat="server" 屬性以使其生效。不過,Web 伺服器控制項沒有必要映射任何已存在的 HTML 元素,它們代表更複雜的元素。創建 Web 伺服器控制項的語法是:<asp:control_name id="some_id" runat="server" />在下面的例子中,我們在 .aspx 文件中的聲明了一個 Button 伺服器控制項。然後我們為 Click 事件創建了一個事件句柄,它可修改按鈕上的文本:<script runat="server">Sub submit(Source As Object, e As EventArgs)button1.Text="You clicked me!"End Sub</script><html><body><form runat="server"><asp:Button id="button1" Text="Click me!" runat="server" OnClick="submit"/></form></body></html>ASP.NET - Validation 伺服器控制項Validation 伺服器控制項用於驗證用戶輸入。如果用戶輸入沒有通過驗證,將給用戶顯示一條錯誤消息。每種 validation 控制項執行一種特定的驗證類型(比如驗證某個具體的值或者某個範圍的值)。默認地,當點擊 Button, ImageButton 或 LinkButton 時,頁面驗證才會被執行。您可通過把 CausesValidation 屬性設置為 false,來阻止某個按鈕控制項被點擊時進行驗證。創建 Validation 伺服器控制項的語法是:<asp:control_name id="some_id" runat="server" />在下面的例子中,我們在 .aspx 文件中聲明了一個 TextBox 控制項,一個 Button 控制項,以及一個 RangeValidator 控制項。如果驗證失敗,文本 "The value must be from 1 to 100!" 將顯示在 RangeValidator 控制項中:<html><body><form runat="server"><p>Enter a number from 1 to 100:<asp:TextBox id="tbox1" runat="server" /><br /><br /><asp:Button Text="Submit" runat="server" /></p><p><asp:RangeValidatorControlToValidate="tbox1"MinimumValue="1"MaximumValue="100"Type="Integer"Text="The value must be from 1 to 100!"runat="server" /></p></form></body></html>TIY事件句柄(event handler)是一種針對給定事件來執行代碼的子常式。ASP.NET - 事件句柄請看下面的代碼:<%lbl1.Text="The date and time is " & now()%><html><body><form runat="server"><h3><asp:label id="lbl1" runat="server" /></h3></form></body></html>上面的代碼什麼時候會被執行?答案是:「我不知道. . .」Page_Load 事件Page_Load 事件是眾多 ASP.NET 可理解的事件之一。Page_Load 事件會在頁面載入時被觸發,然後 ASP.NET 會自動調用子常式 Page_Load,並執行其中的代碼:<script runat="server">Sub Page_Loadlbl1.Text="The date and time is " & now()End Sub</script><html><body><form runat="server"><h3><asp:label id="lbl1" runat="server" /></h3></form></body></html>注釋:該 Page_Load 事件不包含對象引用或事件參數!TIYPage.IsPostBack 屬性Page_Load 子常式會在頁面每次載入時運行。如果您僅希望在頁面第一次載入時執行 Page_Load 子常式中的代碼,您可以使用 Page.IsPostBack 屬性。如果 Page.IsPostBack 屬性為 false,則頁面第一次被載入,如果為 true,則頁面傳回伺服器(例如,通過點擊表單上的按鈕):<script runat="server">Sub Page_Loadif Not Page.IsPostBack then lbl1.Text="The date and time is " & now()end ifEnd SubSub Submit(s As Object, e As EventArgs)lbl2.Text="Hello World!"End Sub</script><html><body><form runat="server"><h3><asp:label id="lbl1" runat="server" /></h3><h3><asp:label id="lbl2" runat="server" /></h3><asp:button text="Submit" onclick="submit" runat="server" /></form></body></html>上面的例子僅在頁面初次載入時創建 "The date and time is...." 這條消息。當用戶點擊 Submit 按鈕時,submit 子常式將在第二個 label 創建 "Hello World!",但第一個 label 中的日期和時間不會改變。TIY
推薦閱讀:

乾貨 || .NET逆向工程 (一)
軟體序列號生成組件SoftwareProtector
.NET CORE 框架ABP的代碼生成器(ABP Code Power Tools )使用說明文檔
CLR線程概覽(上)

TAG:.NET | ASP.NET |