-
Web窗體
鎖定
可以使用 Web 窗體頁來創建可編程的 Web 頁,這些 Web 頁用作 Web 應用程序的用户界面。Web 窗體頁在任何瀏覽器或客户端設備中向用户提供信息,並使用服務器端代碼來實現應用程序邏輯。Web 窗體頁輸出幾乎可以包含任何支持 HTTP 的語言(包括標準通用標記語言的子集HTML與XML、WML 和ECMAScript (JScript, JavaScript))。
- 中文名
- Web 窗體
- 外文名
- Web Forms
Web窗體簡介
其他兩種編程模式是 Web Pages 和 MVC(Model View Controller 模型-視圖-控制器)。
Web Forms 是最古老的 ASP.NET 編程模式,是整合了 HTML、服務器控件和服務器代碼的事件驅動網頁。
Web Forms 是在服務器上編譯和執行的,再由服務器生成 HTML 顯示為網頁。
Web Forms 有數以百計的 Web 控件和 Web 組件用來創建帶有數據訪問的用户驅動網站。
Web窗體特點介紹
基於 Microsoft ASP.NET 技術。在該技術中,在服務器上運行的代碼動態地生成到瀏覽器或客户端設備的 Web 頁輸出。有關 ASP.NET 的詳細信息,請參見 ASP.NET 技術背景介紹
[1]
。
- 兼容所有瀏覽器或移動設備。Web 窗體頁自動為樣式、佈局等功能呈現正確的、符合瀏覽器的 HTML。此外,您還可以選擇將 Web 窗體頁設計為在特定瀏覽器(如 Microsoft Internet Explorer 5)上運行並利用多樣式瀏覽器客户端的功能。
- 兼容 .NET 公共語言運行庫所支持的任何語言,其中包括 Microsoft Visual Basic、Microsoft Visual C# 和 Microsoft JScript .NET。
- 基於 Microsoft .NET Framework 生成。它提供了該框架的所有優點,包括託管環境、類型安全性和繼承。
- 在 Visual Studio 中通過強大的快速應用程序開發 (RAD) 工具受到支持,該工具用於對窗體進行設計和編程。
- 可使用為 Web 開發提供 RAD 功能的控件進行擴展,從而使您能夠快速地創建多樣式的用户界面。
- 具有靈活性,因為您可以向它們添加用户創建的控件和第三方控件。
Web窗體組件
在
[1]
Web 窗體頁中,用户界面編程分為兩個不同的部分:可視組件和邏輯。如果您以前使用過類似於 Visual Basic 和 Visual C++ 的工具,您將認同在窗體的可視部分和窗體後與之交互的代碼之間存在這樣一種劃分。
視覺元素稱作 Web 窗體“頁”(page)。這種頁由一個包含靜態 HTML 和/或 ASP.NET 服務器控件的文件組成。
Web 窗體頁用作要顯示的靜態文本和控件的容器。利用 Visual Studio Web 窗體設計器和 ASP.NET 服務器控件,您可以按照在任何 Visual Studio 應用程序中的方式來設計窗體。有關更多信息,請參見可在 Web 窗體頁上使用的控件。
Web 窗體頁的邏輯由代碼組成,這些代碼由您創建以與窗體進行交互。編程邏輯位於與用户界面文件不同的文件中。該文件稱作“代碼隱藏”文件,並具有“.aspx.vb”或“.aspx.cs”擴展名。在代碼隱藏文件中編寫的邏輯可以使用 Visual Basic 或 Visual C# 來編寫。
Web窗體文件結構
項目中所有 Web 窗體頁的代碼隱藏類文件都被編譯成項目動態鏈接庫 (.dll) 文件。.aspx 頁文件也會被編譯,但編譯方式稍有不同。當用户第一次瀏覽到 .aspx 頁時,ASP.NET 自動生成表示該頁的 .NET 類文件,並將其編譯成另一個 .dll 文件。為 .aspx 頁生成的類從被編譯成項目 .dll 文件的代碼隱藏類繼承。當用户請求 Web 頁 URL 時,.dll 文件將在服務器上運行並動態地為您的頁生成 HTML 輸出。有關更多信息,請參見 Web 窗體頁處理。
有關如何構造 Web 窗體頁的更多信息,請參見 Web 窗體代碼模型。
Web窗體幫助
Web 應用程序編程帶來了一些特殊的難題,在對傳統的基於客户端的應用程序進行編程時,通常不會遇到這些難題。這些難題包括:
- 實現多樣式的 Web 用户界面。對於佈局複雜且包含大量動態內容和功能齊全的用户交互對象的用户界面而言,使用基本的 HTML 功能來進行設計和實現將會既困難又費事。其中尤為困難的是為可能在多個不同的瀏覽器和客户端設備平台上運行的應用程序創建多樣式的用户界面。
- 客户端與服務器的分離。在 Web 應用程序中,客户端(瀏覽器)和服務器是不同的程序,它們通常在不同的計算機上運行(甚至在不同的操作系統上運行)。因此,共同組成應用程序的這兩個部分僅共享很少的信息;它們可以進行通信,但通常只交換很小塊的簡單信息。
- 無狀態執行。當 Web 服務器接收到對某頁的請求時,它會查找該頁,對其進行處理,將其發送到瀏覽器,然後丟棄所有頁信息。如果用户再次請求同一頁,服務器則會重複整個過程:從頭開始對該頁進行重新處理。換言之,服務器不會記憶它已處理的頁。因此,如果應用程序需要維護有關某頁的信息,這就成為一個必須在應用程序代碼中解決的問題。
- 未知的客户端功能。在許多情況下,Web 應用程序可由多個使用不同瀏覽器的用户進行訪問。瀏覽器具有不同的功能,因此很難創建將在所有瀏覽器上都同樣正常運行的應用程序。
- 數據訪問方面的複雜性。對位於傳統 Web 應用程序的數據源進行讀取和寫入可能比較複雜,並且會消耗大量資源。
- 可縮放性方面的複雜性。在許多情況下,由於應用程序的不同組件之間缺乏兼容性,用現有方法設計的 Web 應用程序未能實現可縮放性的目標。對於發展週期較短的應用程序,這往往是會導致失敗的地方。
若要解決這些 Web 應用程序的難題,可能需要大量的時間和精力。Web 窗體頁和 ASP.NET 頁框架通過以下幾個方面來處理這些難題:
- 直觀、一致的對象模型。ASP.NET 頁框架提供了一種對象模型,它使您能夠將窗體當作一個整體,而不是分離的客户端和服務器模塊。在此模型中,您可以通過比在傳統 Web 應用程序中更為直觀的方式來對窗體進行編程,其中包括能夠設置窗體元素的屬性和響應事件。此外,ASP.NET 服務器控件是基於 HTML 頁的物理內容以及瀏覽器與服務器之間的直接交互的一種抽象模型。通常,您可以按照在客户端應用程序中使用控件的方式使用服務器控件,而不必考慮如何創建 HTML 來顯示和處理控件及其內容。
- 事件驅動的編程模型。Web 窗體頁給 Web 應用程序帶來了一種您熟悉的事件處理程序編寫模型,用於為客户端或服務器上發生的事件編寫事件處理程序。ASP.NET 頁框架對此模型進行了抽象,使捕獲客户端上的事件、將其傳輸到服務器並調用適當方法等操作的基礎機制都是自動的,並對於實施者都是不可見的。這樣就得到了一個清晰的、易於編寫的、支持事件驅動開發的代碼結構。
- 直觀的狀態管理。ASP.NET 頁框架自動處理窗體及其控件的狀態維護任務,它使您能夠以顯式方式維護應用程序特定信息的狀態。這種狀態管理無需使用大量服務器資源即可實現,而且可以通過向瀏覽器發送 Cookie 來實現,也可以不通過向瀏覽器發送 Cookie 來實現。
- 獨立於瀏覽器的應用程序。ASP.NET 頁框架支持在服務器上創建所有應用程序邏輯,使您無需為瀏覽器中的差異而進行顯式編碼。但是,它仍允許您自動利用瀏覽器特定的功能,方法是通過編寫客户端代碼來提供增強的性能和更豐富的客户端體驗。
- .NET Framework 公共語言運行庫支持。ASP.NET 頁框架是 ASP.NET 的一項技術。ASP.NET 是基於 .NET Framework 生成的,因此整個框架都可用於任何 ASP.NET 應用程序。您可以使用任何與運行庫兼容的語言(包括 Microsoft Visual Basic、Visual C# 和 JScript .NET)來創作應用程序。此外,數據訪問通過 .NET Framework 提供的數據訪問基礎結構(包括 ADO.NET)得到了簡化。
- .NET Framework 可縮放服務器性能。ASP.NET 頁框架使您能夠將 Web 應用程序從一台只裝有一個處理器的計算機有效地縮放到多計算機“網絡場”(Web farm),而無需對應用程序的邏輯進行復雜的更改。
- 參考資料
-
- 1. ASP.NET Web Forms 教程 .W3Cschool 菜鳥教程[引用日期2014-01-21]