【公告】因應 .NET5 2020 改版,原預計 6/1 開放 ASP.NET MVC 全系列課程訂閱暫停

ASP.NET 之路 - 淺談版本演進

ASP.NET 發展至今已經有了數種不同的版本(參考 ASP.NET 之路),這些版本存在著相容的問題,無論新手或是有經驗的開發人員,為了應付職場需求,學習ASP.NET都注定是一段持續且不輕鬆的過程,因此怎麼學能夠有效率的持續更新ASP.NET技能,是個極度重要的議題。

ASP.NET 是 Web 應用開發技術框架,這個技術歷次版本持續演進的目標都是相同的 - 在以網頁為基礎的「要求/回應」架構限制下,處理各種可能的應用需求,而因為技術環境的進步,新的方式往往會出現,提供更有效的解決方案,導致了目前出現的各種ASP.NET版本。

「要求/回應」架構非常容易理解,瀏覽器送出一個要求(Request),伺服器接收要求(Response),然後回應處理結果,這種架構適合網路環境,只有在送出要求或是接收回應的時刻,客戶端與伺服器端才會發生連線,如此一來可以節省巨大的網路資源,但相對的,客戶端與伺服器端彼此間只有在連線的短暫期間會產生溝通,其它時間彼此完全沒有聯繫,因此這種架構下發展出來的Web應用被視為一種無狀態的應用程式。

無狀態應用很適合靜態網頁文件的瀏覽傳送,使用者點擊一個連結送出某個網頁的瀏覽要求,然後伺服器端找到網頁回應至客戶端,這也是早期網際網路被發展出來的主要功能,時至今日,簡單的「要求/回應」架構早已無法應付網路上運行的服務需求,開發任務在這種情形下也變得日益困難。

ASP.NET 從Web Forms 將目標專注於簡化「要求/回應」架構下的開發環境開始,逐步演化至 ASP.NET Core,瞭解這個過程,學習ASP.NET,無論新手入門或是升級都會容易許多。

Web Forms

Web Forms剛出現的時候著實令人驚艷,快速開發的設計配合當時初步起飛的網路環境,既滿足了應用需求,同時簡化開發人員的門檻,當網路飛快發展, Web Forms 開始曝露了其隱藏的缺陷,最大的問題是網頁內容的控制,大量控制項構成的網頁內容在面對愈來愈複雜的應用介面時,變得難以掌握,惱人的 POSTBACK 與自動化的狀態處理甚至成為開發人員的惡夢。

另外一個 Web Forms 的問題,在於以網頁檔案為基礎的流程架構,每一個要求與回應均對應至特定的網頁檔案,這嚴重限制了大型專案發展的彈性。

MVC

實作 MVC 樣式的ASP.NET 版本接下來登場,這個版本的主要變革有幾個 - 領域模型實作的導入,要求回應流程的運作,從網頁檔案導向,轉換成為以控制器為導向,並回復到 HTML 的原始頁面內容設計,並以 Razor 技術取代控制項支援伺服器端內容的生成,雖然還是侷限在要求與回應的架構之下,但是相關的改良,讓 ASP.NET 終於成長為應付大型商業系統開發足以被信賴框架。

與 Web Forms比較,MVC 的優勢:
  • 網頁內容:MVC依循標準的HTML網頁架構,以Razor語法取代控制項,開發人員可以完全控制前端內容的生成。
  • 網頁檔案 vs. 控制器:MVC以控制器類別檔案處理要求回應機制,不再受限特定檔案路徑,可以根據需求撰寫邏輯程式碼,彈性處理網頁與伺服器之間的往返流程。
至於狀態處理,由於網頁內容由開發人員完全控制,透過模型繫結進行處理,因此亦不再有POSTBACK的問題。

Ajax 與另外一個更好的選擇  - WEB API

MVC 儘管改變了 Web Forms開發 Web 應用的方式,但是依然必須面對要求回應架構下的無狀態問題,這兩種框架開發出來的介面,都要經過翻頁才能完成狀態的更新,以簡單的表格內容資料編輯為例,如果只是更新清單列表中的一個欄位,就必須重新載入整個網頁,這導致敏捷互動介面的建構變得格外困難。

本質上 ASP.NET 是以網頁為基礎的應用開發技術,翻頁的設計是為了配合網頁無狀態特性而妥協的設計,雖然足以應付簡單的網頁操作,卻沒有辦法處理複雜的現代 Web 介面需求,為了支援無換頁的即時互動介面設計需求,我們必須藉由進一步導入其它技術助來達到互動介面的需求。

簡單的互動可以透過 AJAX(Asynchronous JavaScript and XML)提供的支援,更複雜的互動,則需進一步考慮使用 Web API 。

Web API是一種可以透過 AJAX 技術互動的後端服務,這一部份後續在 Web API 的教學會提供完整的討論。 

ASP.NET Core

ASP.NET Core 是最新一代的ASP.NET版本,主要的改革是跨平台支援,技術本身倒是沒有如Web Forms 到 MVC 的跳躍式發展,但依然是個全新的平台,與舊版的 ASP.NET 並不相容,不過技術上是延續的,MVC、Web API 以及搭配的 Entity Framework 技術知識都可以在這裏沿用,只是必須重新瞭解專案組態的配置,這倒還簡單。

ASP.NET Core 為了讓 ASP.NET 同樣在簡易的網頁開發容易上手,另外亦發展出了一個以MVC 技術為基礎的類型 - Razor Pages,這個類型的 ASP.NET 開發以網頁檔案為基礎,並保留了後置程式碼的概念,但是移除了糟糕的伺服器控制項,改由 Razor 取代後端內容的建置,避免了 Web Forms 的問題,又保留簡易開發的好處 。


沒有留言: