共用方式為


什麼是 Web Forms

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

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

您可以使用 Visual Studio 建立 ASP.NET Web Forms。 Visual Studio 整合開發環境 (IDE) 可讓您拖放伺服器控制項,以設定您的 Web Forms 頁面。 然後,您可以針對頁面上的控件或頁面本身,輕鬆設定屬性、方法和事件。 這些屬性、方法和事件可用來定義網頁的行為、外觀和風格等等。 若要撰寫伺服器程式碼來處理頁面的邏輯,您可以使用 .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 上。 這提供所有的架構優點,包括受控環境、類型安全性和繼承。
  • 彈性,因為您可以對其中新增使用者建立的控制項和第三方控制項。

ASP.NET Web Forms 提供:

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

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

Web 應用程式的程式設計挑戰,通常不會出現在設計傳統用戶端應用程式時。 挑戰包括:

  • 實作豐富的 Web 使用者介面 - 使用基本 HTML 設施設計和實作使用者介面,可能很困難且乏味,特別是當頁面具有複雜的版面配置、大量動態內容,以及完整的使用者互動物件時。
  • 用戶端和伺服器區隔- 在 Web 應用程式中,用戶端 (瀏覽器) 和伺服器是經常在不同電腦上執行的不同程式 (甚至是在不同的作業系統上)。 因此,應用程式的兩部分共用的資訊很少:它們可以通訊,但通常只會交換少量的簡單資訊。
  • 無狀態執行 - 當 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 通用語言執行階段支援 - 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 主版頁面可讓您為應用程式中的頁面,建立一致的版面配置。 單一主版頁面定義您希望在應用程式中所有頁面 (或頁面群組) 呈現的外觀和風格和標準行為。 然後,您可以建立包含您想要呈現之內容的個別內容頁面。 當使用者要求內容頁面時,他們會與主版頁面合併產生輸出,以結合主版頁面的配置與內容頁面中的內容。
  • 使用 Data- ASP.NET 提供許多選項來儲存、擷取及顯示資料。 在 ASP.NET Web Forms 應用程式中,您可以使用資料綁定控制項,將網頁 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 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 Forms 應用程式中可能發生的問題。 偵錯和錯誤處理在 ASP.NET Web Forms 內受到很好的支援,讓您的應用程式能夠有效地編譯和執行。
  • 部署和代管服務 - Visual Studio、ASP.NET、Azure 和 IIS 提供工具,協助您部署和代管 Web Forms 應用程式的程式。

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

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

Web Forms 型 Web 應用程式的優點

以 Web Forms 為基礎的架構提供下列優點:

  • 該架構支援透過 HTTP 保留狀態的事件模型,這有利於企業營運 Web 應用程式開發。 以 Web Forms 為基礎的應用程式,提供了由數百個伺服器控制項支援的數十個事件。
  • 其使用頁面控制器模式,將功能新增至個別頁面。 如需詳細資訊,請參閱頁面控制器
  • 其使用檢視狀態或伺服器型表單,讓管理狀態資訊更容易執行。
  • 其適用於想要利用大量可用於快速應用程式開發之元件的 Web 開發人員和設計工具小組。
  • 一般而言,應用程式開發較不複雜,因為元件 (Page 類別、控制項等) 會緊密整合,而且通常需要比 MVC 模型更少的程式碼。

MVC 型 Web 應用程式的優點

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

  • 該架構將應用程式分割成模型、檢視和控制器,可更輕鬆地管理複雜度。
  • 該架構不使用檢視狀態或伺服器型表單。 這讓 MVC 架構成為想要完全控制應用程式行為的開發人員的理想選擇。
  • 該架構使用前端控制器模式,透過單一控制器處理 Web 應用程式要求。 這可讓您設計支援豐富的路由基礎結構的應用程式。 如需詳細資訊,請參閱前端控制器
  • 該架構提供更好的測試驅動的開發支援 (TDD)。
  • 其適用於大規模開發人員小組,和需要高度控制應用程式行為的 Web 設計工具小組所支援的 Web 應用程式。