什麼是 Web Forms

ASP.NET Web form 是 ASP.NET web 應用程式架構的一部分,而且包含在Visual Studio中。 這是您可以用來建立 ASP.NET web 應用程式的四種程式設計模型之一,而其他則是 ASP.NET MVC、ASP.NET Web Pages 和 ASP.NET 單一頁面應用程式。

Web form 是您的使用者使用其瀏覽器要求的頁面。 這些頁面可以使用 HTML、用戶端腳本、伺服器控制項和伺服器程式碼的組合來撰寫。 當使用者要求頁面時,架構會在伺服器上進行編譯和執行,然後架構會產生瀏覽器可以呈現的 HTML 標籤。 ASP.NET Web form 頁面會向使用者顯示任何瀏覽器或用戶端裝置中的資訊。

使用 Visual Studio,您可以建立 ASP.NET Web Forms。 Visual Studio 的整合式開發環境(IDE)可讓您拖放伺服器控制項,以配置您的 Web form 頁面。 然後,您就可以輕鬆地在頁面上或頁面本身設定控制項的屬性、方法和事件。 這些屬性、方法和事件是用來定義網頁的行為、外觀和風格等等。 若要撰寫伺服器程式碼來處理網頁的邏輯,您可以使用類似 Visual Basic 或C#的 .net 語言。

Note

ASP.NET 和 Visual Studio 檔涵蓋數個版本。 反白顯示舊版功能的主題,可能適用于您目前的工作和使用最新版本的案例。

ASP.NET Web form 如下:

  • 根據 Microsoft ASP.NET 技術,在伺服器上執行的程式碼會以動態方式將網頁輸出產生至瀏覽器或用戶端裝置。
  • 與任何瀏覽器或行動裝置相容。 ASP.NET 網頁會自動為樣式、版面配置等功能,呈現正確的瀏覽器相容 HTML。
  • 與 .NET common language runtime 支援的任何語言(例如 Microsoft Visual Basic 和 Microsoft Visual C#)相容。
  • 建置於 Microsoft .NET Framework 上。 這可提供架構的所有優點,包括 managed 環境、型別安全和繼承。
  • 彈性,因為您可以在其中新增使用者建立的和協力廠商控制項。

ASP.NET Web Forms 供應專案:

  • 將 HTML 和其他 UI 程式碼與應用程式邏輯分開。
  • 一套豐富的伺服器控制項,適用于一般工作,包括資料存取。
  • 功能強大的資料系結,具備絕佳的工具支援。
  • 支援在瀏覽器中執行的用戶端腳本。
  • 支援各種其他功能,包括路由、安全性、效能、國際化、測試、偵錯工具、錯誤處理和狀態管理。

ASP.NET Web Forms 可協助您克服挑戰

Web 應用程式設計所呈現的挑戰,通常不會在設計傳統用戶端應用程式時產生。 其中的挑戰包括:

  • 執行豐富的 Web 使用者介面-使用基本 HTML 功能設計和實作為使用者介面可能會很麻煩且繁瑣,特別是當頁面具有複雜的版面配置、大量的動態內容和功能完整的使用者互動物件時。
  • 區分用戶端和伺服器-在 Web 應用程式中,用戶端(瀏覽器)和伺服器是不同的程式,通常在不同的電腦上執行(甚至在不同的作業系統上)。 因此,應用程式的兩個部分幾乎不會分享資訊;它們可以通訊,但通常只會交換小型的簡單資訊區塊。
  • 無狀態執行-當網頁伺服器收到頁面的要求時,它會尋找該頁面,處理它,然後將它傳送至瀏覽器,然後捨棄所有頁面資訊。 如果使用者再次要求相同的頁面,伺服器就會重複整個順序,從頭重新處理頁面。 以另一種方式來說,伺服器沒有已處理的頁面記憶體—頁面是無狀態的。 因此,如果應用程式需要維護頁面的相關資訊,它的無狀態本質可能會變成問題。
  • 未知的用戶端功能-在許多情況下,許多使用不同瀏覽器的使用者都可以存取 Web 應用程式。 瀏覽器具有不同的功能,因此很難以建立一個應用程式,使其在所有專案上都有同樣的執行效果。
  • 資料存取的複雜性-在傳統 Web 應用程式中讀取和寫入資料來源可能會很複雜,而且需要大量資源。
  • 擴充性的複雜性-在許多情況下,使用現有方法設計的 Web 應用程式無法符合擴充性目標,因為應用程式的各種元件之間缺乏相容性。 這通常是在大量成長週期中,應用程式的常見失敗點。

滿足這些 Web 應用程式的挑戰可能需要相當長的時間和努力。 ASP.NET Web Forms 和 ASP.NET 架構會以下列方式解決這些挑戰:

  • 直覺且一致的物件模型-ASP.NET 網頁架構轉譯物件模型,可讓您將表單視為一個單位,而不是個別的用戶端和伺服器部分。 在此模型中,您可以使用比傳統 Web 應用程式更直覺的方式來設計頁面,包括設定頁面專案屬性和回應事件的功能。 此外,ASP.NET 伺服器控制項是來自 HTML 網頁的實體內容,以及瀏覽器與伺服器之間直接互動的抽象概念。 一般來說,您可以使用伺服器控制項來處理用戶端應用程式中的控制項,而不需要考慮如何建立 HTML 來呈現和處理控制項及其內容。
  • 事件驅動程式設計模型-ASP.NET web Form 引進 web 應用程式熟悉的模型,可針對用戶端或伺服器上發生的事件撰寫事件處理常式。 ASP.NET 網頁架構會將此模型抽象化,這種方式可讓您在用戶端上捕捉事件、將其傳送至伺服器,以及呼叫適當的方法,而不會受到您的影響。 結果是一個清楚、容易撰寫的程式碼結構,支援事件驅動的開發。
  • 直覺狀態管理-ASP.NET 網頁架構會自動處理維護頁面和其控制項狀態的工作,並提供明確的方式來維護應用程式特定資訊的狀態。 這是在沒有大量使用伺服器資源的情況下完成,而且可以不需要將 cookie 傳送至瀏覽器來執行。
  • 瀏覽器無關的應用程式-ASP.NET 網頁架構可讓您在伺服器上建立所有的應用程式邏輯,而不需要針對瀏覽器中的差異明確撰寫程式碼。 不過,它仍可讓您藉由撰寫用戶端程式代碼來利用瀏覽器特有的功能,以提供更佳的效能和更豐富的用戶端體驗。
  • .NET Framework common language runtime 支援-ASP.NET 網頁架構是建置於 .NET Framework 上,因此所有 ASP.NET 應用程式都可使用整個架構。 您的應用程式可以使用與執行時間相容的任何語言來撰寫。 此外,您還可以使用 .NET Framework 提供的資料存取基礎結構來簡化資料存取,包括 ADO.NET。
  • .NET Framework 可調整的伺服器效能-ASP.NET 網頁架構可讓您將 Web 應用程式從一部具有單處理器的電腦,完全擴充到多部電腦的 web 伺服器陣列,而不需要對應用程式的邏輯進行複雜的變更。

ASP.NET Web Forms 的功能

  • 伺服器控制項-ASP.NET Web 服務器控制項是 ASP.NET 網頁上的物件,會在要求頁面時執行,並將標記轉譯至瀏覽器。 許多 Web 服務器控制項類似于熟悉的 HTML 元素,例如按鈕和文字方塊。 其他控制項則包含複雜的行為,例如行事曆控制項,以及您可以用來連接到資料來源和顯示資料的控制項。
  • 主版頁面-ASP.NET 主版頁面可讓您為應用程式中的頁面建立一致的版面配置。 單一主要頁面可為應用程式中的所有頁面 (或頁面群組) 定義您想要的外觀與風格及標準行為。 接著,您可以建立包含所需顯示內容的個別內容頁面。 當使用者要求內容頁面時,他們會與主版頁面合併,以產生結合主版頁面版面配置與內容頁面內容的輸出。
  • 使用資料ASP.NET 提供許多選項來儲存、抓取和顯示資料。 在 ASP.NET Web form 應用程式中,您可以使用資料繫結控制項,將網頁 UI 元素中資料的呈現或輸入自動化,例如資料表和文字方塊和下拉式清單。
  • 成員資格-ASP.NET Identity 會將使用者的認證儲存在應用程式所建立的資料庫中。 當您的使用者登入時,應用程式會藉由讀取資料庫來驗證其認證。 您專案的 [帳戶] 資料夾包含可執行成員資格各部分的檔案:註冊、登入、變更密碼,以及授權存取。 此外,ASP.NET Web Forms 支援 OAuth 和 OpenID。 這些驗證增強功能可讓使用者使用現有的認證登入您的網站,例如 Facebook、Twitter、Windows Live 和 Google 等帳戶。 根據預設,此範本會在 SQL Server Express LocalDB 的實例上使用預設資料庫名稱建立成員資格資料庫,而在 Visual Studio Express 2013 for Web 隨附的開發資料庫伺服器。
  • 用戶端腳本和用戶端架構-您可以在 ASP.NET Web Form 頁面中包含用戶端腳本功能,藉以增強 ASP.NET 的伺服器功能。 您可以使用用戶端腳本,為使用者提供更豐富、更有回應的使用者介面。 當網頁在瀏覽器中執行時,您也可以使用用戶端腳本來對 Web 服務器進行非同步呼叫。
  • 路由-URL 路由可讓您設定應用程式,以接受未對應至實體檔案的要求 url。 要求 URL 只是使用者在瀏覽器中輸入的 URL,以便在您的網站上尋找頁面。 您可以使用路由來定義對使用者有意義的 Url,並可協助搜尋引擎優化(SEO)。
  • 狀態管理-ASP.NET Web form 包含數個選項,可協助您以每一頁面為基礎和整個應用程式來保存資料。
  • 安全性-開發更安全的應用程式很重要的部分,就是了解它的威脅。 Microsoft 開發了一種分類威脅的方法:詐騙、篡改、否認、資訊洩漏、阻絕服務、權限提高(STRIDE)。 在 ASP.NET Web form 中,您可以加入擴充點和設定選項,讓您自訂 ASP.NET Web Forms 中的各種安全性行為。
  • 效能-效能可以是成功網站或專案中的關鍵因素。 ASP.NET Web Forms 可讓您修改與頁面和伺服器控制處理、狀態管理、資料存取、應用程式設定和載入,以及有效率的編碼實務相關的效能。
  • 國際化-ASP.NET web Forms 可讓您建立網頁,根據瀏覽器的慣用語言設定或使用者的語言明確選擇,來取得內容和其他資料。 內容和其他資料稱為資源,這類資料可以儲存在資源檔或其他來源中。 在 ASP.NET Web form 頁面中,您可以設定控制項從資源取得其屬性值。 在執行時間,資源運算式會由適當當地語系化資源檔中的資源所取代。
  • 偵錯工具和錯誤處理-ASP.NET 包含一些功能,可協助您診斷 Web form 應用程式中可能發生的問題。 ASP.NET Web form 中的偵錯工具和錯誤處理都受到妥善支援,讓您的應用程式能夠有效率地進行編譯和執行。
  • 部署和裝載-Visual Studio、ASP.NET、AZURE 和 IIS 提供工具,可協助您部署和裝載 Web Forms 應用程式。

決定何時建立 Web Forms 應用程式

您必須仔細考慮是否要使用 ASP.NET Web form 模型或其他模型(例如 ASP.NET MVC 架構)來執行 Web 應用程式。 MVC 架構不會取代 Web Form 模型;因此您可以針對 Web 應用程式使用任一種架構 在您決定針對特定網站使用 Web form 模型或 MVC 架構之前,請先權衡每種方法的優點。

Web Form Web 應用程式的優點

Web Form 架構提供下列優點:

  • 支援事件模型,會在 HTTP 上保留狀態,有益於業務線 Web 應用程式開發工作。 Web Form 應用程式提供數百種伺服器控制項中支援的許多種事件。
  • 使用頁面控制器模式將功能加入至個別頁面。 如需詳細資訊,請參閱 MSDN 網站上的頁面控制器
  • 它會使用 view 狀態或伺服器形式的表單,讓您更輕鬆地管理狀態資訊。
  • 適用於希望利用提供的大量元件快速開發應用程式的小型 Web 開發人員和設計人員團隊。
  • 一般來說,應用程式開發較不復雜,因為元件(頁面類別、控制項等等)已緊密整合,而且通常需要比 MVC 模型少的程式碼。

MVC Web 應用程式的優點

ASP.NET MVC 架構提供下列優點:

  • 透過將應用程式細分成模型、檢視和控制器的方式,讓管理複雜性更為容易。
  • 此架構不使用檢視狀態或伺服器表單。 因此對於想要完全掌控應用程式行為的開發人員來說,MVC 架構相當理想。
  • 此架構使用前端控制器模式,透過單一控制器處理 Web 應用程式要求。 如此可讓您設計支援豐富的路由基礎結構的應用程式。 如需詳細資訊,請參閱 MSDN 網站上的前端控制器
  • 能為測試為導向的開發工作 (Test-Driven Development,TDD) 提供更佳的支援。
  • 這適用于大型開發人員和 Web 設計工具所支援的 Web 應用程式,需要高度控制應用程式行為。