什麼是Web Form

ASP.NET Web Forms是 ASP.NET Web 應用程式架構的一部分,隨附于Visual Studio中。 這是可用來建立 ASP.NET Web 應用程式的四種程式設計模型之一,其他則 ASP.NET MVC、ASP.NET Web Pages,以及 ASP.NET 單頁應用程式。

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

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

注意

ASP.NET 和 Visual Studio 檔涵蓋數個版本。 醒目提示舊版功能的主題對於使用最新版本的目前工作和案例可能很有用。

ASP.NET Web Forms為:

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

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

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

Web Form Web 應用程式的優點

Web Form 架構提供下列優點:

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

MVC Web 應用程式的優點

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

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