ASP.NET Web 網頁會:
- 以 Microsoft ASP.NET 技術為基礎,在伺服器上執行的程式碼會將 Web 網頁輸出動態產生至瀏覽器或用戶端裝置。
- 與任何瀏覽器或行動裝置相容。ASP.NET Web 網頁會自動為諸如樣式、配置等功能呈現正確的瀏覽器相容 HTML。另外,您可以設計 ASP.NET Web 網頁在特定瀏覽器上執行,例如 Microsoft Internet Explorer 6,並利用瀏覽器特定的功能。
- 與 .NET Common Language Runtime 支援的任何語言都相容,包括 Microsoft Visual Basic、Microsoft Visual C#、Microsoft J# 和 Microsoft JScript .NET。
- 在 Microsoft .NET Framework 上建置的。這麼做可提供架構的所有優點,包括 Managed 環境、型別安全 (Type Safety) 以及繼承 (Inheritance)。
- 具有彈性,因為您可以在其中加入使用者建立和協力廠商的控制項。
ASP.NET Web 網頁的元件
在 ASP.NET Web 網頁中,使用者介面程式設計分為兩個部分:視覺化元件和邏輯。如果您過去是使用像 Visual Basic 和 Visual C++ 的工具,將會察覺頁面的可見部分和置於頁面後與它互動的程式碼之間的差異。 視覺化項目是由包含如 HTML 或 ASP.NET 伺服器控制項 (或這兩者) 之靜態 (Static) 標記的檔案所組成。ASP.NET Web 網頁會做為您想要顯示之靜態文字和控制項的容器 (Container)。 ASP.NET Web 網頁的邏輯包括您建立用來與頁面互動的程式碼。程式碼可以放在頁面的 script 區塊中,或不同的類別 (Class) 中。如果程式碼是在不同的類別檔案中,這個檔案就稱為「程式碼後置」(Code-Behind) 的檔案。可以使用 Visual Basic、Visual C#、Visual J# 或 JScript .NET 撰寫程式碼後置檔案的程式碼。如需如何建構 ASP.NET Web 網頁的詳細資訊,請參閱 ASP.NET Web 網頁程式碼模型。 ASP.NET Web 網頁會編譯到動態連結檔案庫 (.dll) 檔案中。使用者第一次瀏覽 .aspx 網頁時,ASP.NET 自動產生代表此網頁的 .NET 類別檔案,然後進行編譯。.dll 檔案會在伺服器上執行,並動態產生網頁的 HTML 輸出。如需如何編譯 ASP.NET 應用程式的詳細資訊,請參閱 ASP.NET 編譯概觀。
ASP.NET Web 網頁可協助您完成的工作
Web 應用程式發展時所產生的挑戰,通常在設計傳統的用戶端架構應用程式時並不會出現。這些挑戰包括:
- 實作豐富型 Web 使用者介面:使用基本 HTML 功能設計和實作使用者介面既困難又冗長,特別是當頁面中具有複雜的配置、大量動態內容,以及全功能的使用者互動物件時。
- 分隔用戶端和伺服器:在 Web 應用程式中,用戶端 (瀏覽器) 和伺服器是通常在不同電腦上 (甚至是不同的作業系統上) 執行的不同程式。因此,這兩部分的應用程式可共用的資訊非常少;它們可以通訊,但通常只交換簡單的資訊。
- 沒有狀態 (Stateless) 的執行:當 Web 伺服器收到網頁要求時,它先尋找網頁、進行處理、將它傳送至瀏覽器,然後捨棄所有網頁資訊。如果使用者再度要求相同的網頁,伺服器會重複執行整個序列,從頭開始重新處理網頁。另一方面,伺服器並沒有它曾處理過的網頁記憶,表示網頁是沒有狀態。因此,如果應用程式需要維護網頁的相關資訊,它的沒有狀態本質可能會導致問題。
- 不明的用戶端功能:在多數情況下,多位使用者可以使用不同的瀏覽器存取 Web 應用程式。瀏覽器具有不同的功能,使得要建立可在所有的瀏覽器上都能執行良好的應用程式,十分地困難。
- 資料存取的複雜性:讀取和寫入在傳統 Web 應用程式中的資料來源,可能會相當複雜並耗用很多資源。
- 延展性 (Scalability) 的複雜性:在許多情況下,以現有方法設計的 Web 應用程式無法符合延展性目標,因為應用程式的各種元件間缺乏相容性。對於有過量成長週期的應用程式而言,這通常是共同的失敗點。
若要滿足這些 Web 應用程式的挑戰,可能需要經過相當長的時間和努力。ASP.NET Web 網頁和 ASP.NET 網頁架構會以下列方式來解決這些挑戰:
- 容易了解且一致的物件模型:ASP.NET 網頁架構所提供的物件模型 (Object Model),讓您可以將表單視為一個單元,而不是個別的用戶端和伺服器表單。相較於傳統的 Web 應用程式,您可以在此模型中以更容易了解的方式設計頁面,包括設定頁面項目的屬性並回應事件的功能。此外,ASP.NET 伺服器控制項是 HTML 網頁的實體內容以及瀏覽器和伺服器間直接互動的抽象概念。一般說來,您使用伺服器控制項的方式正如您在用戶端應用程式中使用控制項一般,並且不需要考慮如何建立 HTML 來呈現和處理控制項以及其內容。
- 事件驅動 (Event-Driven) 的程式設計模型:ASP.NET Web 網頁會針對在用戶端或伺服器上發生的事件,為 Web 應用程式提供撰寫事件處理常式時常見的模型。ASP.NET 網頁架構將此模型抽象化的方式,使得擷取用戶端事件、將它傳輸至伺服器,以及呼叫適當方法的基礎機制全部自動化,且對您來說是看不見的。結果就是產生可支援事件驅動 (Event-Driven) 發展、清楚、易於撰寫的程式碼結構。
- 容易了解的狀態管理: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 伺服陣列,而不需對應用程式的邏輯進行複雜的變更。