ASP.NET技術專案檔案

ASP.NET 技術的專案檔案可以簡單地理解為建構網站的各種積木。每個檔案都有其特定的功能和用途,它們協同運作,共同組成一個完整的網站應用程式。

傳統 ASP.NET (.NET Framework)

  • .aspx (Web Form)網站頁面。這是最常見的檔案類型,代表一個完整的網頁。它包含了使用者介面 (UI) 和後台邏輯,負責處理使用者請求並產生 HTML 頁面。
  • .ascx (使用者控制項)頁面元件。這是一種可重用的網頁模組,本身無法單獨運作。它就像一個小積木,可以被 .aspx 頁面引用,例如網站的導覽列或頁尾。
  • .ashx (一般處理常式)輕量級處理器。它專門用來處理簡單、快速的 HTTP 請求,例如回傳 JSON 資料、圖片或處理檔案上傳。它沒有複雜的頁面生命週期,適合用來做後台的「工具人」。
  • .asmx (Web 服務)服務接口。這是一種舊的 Web Service 技術,用來提供功能給其他應用程式呼叫。它主要回傳資料而不是 HTML,就像一個 API 接口。

現代 ASP.NET (ASP.NET Core)

在 ASP.NET Core 中,這些檔案類型被更現代的架構所取代,副檔名也發生了變化,以實現更清晰的職責分離。

  • .cshtml頁面/視圖。這是 Razor Pages 和 MVC 框架中用來建立網頁的檔案。它主要包含 HTML 和呈現邏輯,負責 UI 部分。它的後台邏輯會放在一個獨立的 .cshtml.cs 檔案中。
  • .cs (C# 類別檔):在 ASP.NET Core 中,後台邏輯、API 服務和控制器都寫在 C# 類別檔案中。Web API 的控制器、Razor Pages 的 PageModel 和 View Components 的後台程式碼,都屬於這類檔案。

總結來說,這些檔案就是 ASP.NET 網站的骨架,每種檔案類型都代表著一種特定的功能或角色,共同構建出一個完整的應用程式。


第一類:獨立的網頁和服務

這類檔案通常是應用程式的獨立入口點,它們各自處理一個完整的 HTTP 請求,並產生回應。

  • 服務「使用者」的網頁
    • .asp :它是一個獨立的網頁,當使用者在瀏覽器中輸入 http://你的網站/index.asp 時,IIS 會處理這個檔案,直譯裡面的 VBScript 或 JScript 程式碼,然後產生一個完整的 HTML 頁面回傳給使用者。
    • .aspx (Web Form):這是最常見的類型,代表一個完整的網頁。它通常包含 HTML 內容和伺服器控制項,負責處理使用者介面和後端邏輯。它是網站中一個獨立的頁面。
  • 服務「程式」的服務
    • .asmx (Web Service):這類檔案提供一個網頁服務,允許其他應用程式透過 SOAP 協定來呼叫它的方法。它沒有使用者介面,通常用來實現後端的功能,供其他程式使用。
    • .ashx (一般處理常式):這是一種輕量級的處理常式,用來處理特定的 HTTP 請求,並產生簡單的資料回應,例如圖片、JSON 或檔案。它沒有複雜的頁面生命週期,適合用來處理簡單、高效的任務。

第二類:可重用的網頁元件

這類檔案本身不能獨立執行,它們是為了被 .aspx 網頁或其他容器引用而存在的。

  • .ascx (使用者控制項):這類檔案可以視為 .aspx 頁面中的一個小元件或模組。它包含了自己的 HTML、伺服器控制項和後端程式碼。你可以將一個 .ascx 控制項放入多個 .aspx 頁面中,實現 UI 的重用。例如,一個網站的導覽列或頁尾,就可以做成一個 .ascx 檔案。


.aspx:網站的「網頁設計師」

aspx 檔案代表一個完整的網頁,它負責呈現使用者看到的介面。它裡面包含了 HTML 元素、CSS 樣式,以及可以與使用者互動的按鈕、文字方塊等等。

購物網站範例:

  • Products.aspx:顯示所有商品清單的頁面。
  • Checkout.aspx:讓使用者填寫送貨地址和付款資訊的結帳頁面。
  • Account.aspx:顯示使用者個人資料、訂單記錄的頁面。

當使用者點擊連結到 Checkout.aspx 時,伺服器會處理這個檔案,產生完整的 HTML 頁面,然後傳送給瀏覽器顯示。

.ashx:網站的「後台跑腿小弟」

ashx 檔案是一個輕量級的處理常式,它的工作是單純地處理一個請求,並回傳簡單、快速的資料。它通常沒有任何頁面設計,只專注於處理任務。

購物網站範例:

  • GetProductImage.ashx:當瀏覽器需要顯示某個商品的圖片時,它會向這個 ashx 檔案發出請求,並附上商品的 ID。ashx 檔案會根據 ID,從伺服器上找到圖片檔案,然後直接將圖片資料傳回給瀏覽器。
  • CheckUsername.ashx:在註冊頁面,當使用者輸入帳號時,瀏覽器會用 Ajax 技術向這個 ashx 檔案發送請求,詢問這個帳號是否已經被使用。ashx 檔案只會回傳「是」或「否」的簡單文字或 JSON 資料。

它就像一個專門處理簡單瑣事的工具人,效率很高,但不會負責整個網頁的呈現。

.asmx:網站的「專職客服人員」

asmx 檔案提供的是 Web Service,它的工作是專門提供功能給「其他程式」呼叫,而不是給使用者直接瀏覽。它有一套標準的溝通方式(SOAP),讓外部系統能與之互動。

購物網站範例:

  • OrderService.asmx:當網站收到一筆新訂單時,它可能會呼叫這個 asmx 檔案中的方法,將訂單資訊傳給後端的庫存系統,讓庫存系統能更新商品數量。
  • ShippingService.asmx:網站的物流系統可能也會呼叫這個 asmx 檔案,來查詢特定訂單的運送狀態。

asmx 不會產生 HTML 頁面,它只回傳結構化的資料(例如 XML 或 JSON),讓其他程式能理解和使用。它就像是專門對接其他系統的 API 接口。


ASP和ASPX的比較

.asp 和 .aspx 雖然都來自微軟,但屬於不同年代的技術,代表著兩種截然不同的開發思維和技術架構。

特性ASP (.asp)ASP.NET (.aspx)
技術框架屬於較舊的直譯式腳本技術屬於 .NET Framework.NET Core
程式語言VBScript、JScriptC#、VB.NET
程式執行直譯式,每次都重新處理編譯式,首次編譯後直接運行
開發模式程式碼和 HTML 混合強調程式碼與介面分離
效能較低較高
用途仍被用於維護舊有的網站廣泛用於開發現代化的網站和應用程式

cshtml

經典的 ASP.NET 技術,在 ASP.NET Core 中都有了更現代、更強大且更靈活的替代方案。

.aspx (Web Forms) → Razor Pages 與 MVC

.aspx 頁面代表的是一個完整的網頁,它將頁面設計和後台邏輯緊密結合。在 ASP.NET Core 中,這部分的功能被兩種不同的架構取代:

  • Razor Pages:這是最接近 aspx 概念的替代方案。每個頁面(.cshtml 檔案)都有一個獨立的後台邏輯檔案(.cshtml.cs),讓程式碼組織變得更簡潔。它非常適合開發簡單的、以頁面為主的應用程式,例如聯絡我們或產品列表頁。
  • MVC (Model-View-Controller):這是一個更傳統的架構,將應用程式分成三個獨立的部分:模型 (Model)、檢視 (View) 和控制器 (Controller)。它提供了更高的彈性,適用於需要更嚴謹程式碼分離和複雜路由的應用程式。

.asmx (Web Service) 與 .ashx (一般處理常式) → Web API

asmxashx 都負責處理特定的後台請求,並回傳資料而不是完整的網頁。在 ASP.NET Core 中,這些功能被 Web API 統一取代。

  • Web API:它是一個強大的框架,讓你能輕鬆建立 RESTful API。你可以建立一個 C# 控制器(Controller),裡面的每個方法都能處理 HTTP 請求(如 GET、POST),並回傳 JSON 或其他格式的資料。它不僅取代了 asmx 的 Web Service 功能,也包含了 ashx 用來回傳輕量資料或處理特殊請求的場景。

.ascx (使用者控制項) → View Components 與 Partial Views

.ascx 檔案是用來建立可重用的網頁元件。在 ASP.NET Core 中,這部分的功能由以下兩種技術實現:

  • View Components:這是 .ascx 最主要的現代替代方案。它是一個功能強大的元件,有獨立的 C# 邏輯和 Razor 檢視,能夠處理複雜的邏輯並渲染一個部分的 UI。例如,一個網站的導覽列或購物車摘要,就很適合用 View Components 實現。
  • Partial Views:這是一種更簡單的元件,它只有檢視檔案(.cshtml),沒有獨立的後台邏輯。它適合用來重用靜態或簡單的 HTML 區塊,例如一個產品卡片的模板。

替代比較表

舊技術副檔名ASP.NET Core 替代方案主要用途
.aspxRazor PagesMVC建立完整的網頁,包含 UI 和後台邏輯。
.asmxWeb API建立供其他程式呼叫的 API 服務。
.ashxWeb API處理輕量級的資料或檔案請求。
.ascxView ComponentsPartial Views建立可重用的 UI 元件或區塊。