ASP.NET 網站架構設計模式速談

  • 5427
  • 0

身為一名過氣的 MVP ,在這裏分享一下自己的 ASP.NET 經驗,從簡單到複雜,快速的來看看ASP.NET 幾種架構設計模式,正入門學習 ASP.NET 者可以看一下有個底 …

ASP.NET彈性相當大,從個人小網站到超大型全球性網路服務,只要有錢有人都可以開發的出來,要具備這麼強大的能力,她的複雜度是可想而知的,不過正因為彈性,對於入門者或是有經驗的開發人員,都可以在使用 ASP.NET 的學習與開發過程中獲得滿足,無論是成就感或是滿足感,甚至賺到錢的飽足感。

這裏分享一下自己的 ASP.NET 經驗,從簡單到複雜,快速的來看看ASP.NET 幾種開發設計的架構模式。
  • 最簡單
 
以這種模式建構網站最簡單,拉好控制項,完成設定,寫一些程式碼,一個網站就完成了,這是吸引初學者投入 ASP.NET 最有效的方式,也因此寫書時最喜歡拿這個炫耀給讀者看,證明一般人不需要多辛苦就可以成為一名 ASP.NET 網站程式設計師,帶大家一起跳火坑。
  • 稍微像樣的模型

一旦開始真正下海開發 ASP.NET 網站,你就會發現用最簡單的方式來開發行不通的,然後會嘗試將其中一些程式碼切割出來,程式量就開始大了起來,不過還算單純,只要學好 C# ,會設計類別就不會有太大的問題。

  • 像樣不夠還要好維護

從網頁抽離出來的程式碼愈來愈多,接下來會就變得很難維護,在這種情形下,針對這些程式碼,再進一步作切割的動作,而最明快的作法是直接分成兩種,一種是與資料庫直接存取有關的程式碼,也就是與 CRUD(新增、查詢、修改、刪除)功能有關的程式再抽離出來,這一堆程式碼集中在一起變成資料層,剩下的就是邏輯層,邏輯層不牽涉資料的存取,重點放在提供網站各種運算服務邏輯所需的程式碼。
  • 彈性是大型程式設計的真理

網站規模一旦開始成長,就必須考慮到彈性的問題,特別是資料的抽換與擴充,要達到這個目的當然就從資料存取的相關程式碼開刀,至於怎麼下刀,一個很簡單的原則,不要直接存取資料庫,再建立一個虛擬層對應至資料庫,然後再次抽離包含 CRUD 的程式碼,只針對這層虛擬層進行存取,而關於底層資料結構的變動,則直接由這一層虛擬層來負責。
  • 不要讓彈性成為效率的殺手


一般來說,網站成長到需要建立對應資料庫的虛擬層,通常已經很大了,而其中的維護工作相當費力,當然很厲害的台灣老板還是可以用非常精簡的人力進行開發維護的工作,苦命工程師們如果不想爆肝只有兩條路,一是老板增加人力,當然這是只是理論,原理很簡單卻窒礙難行,另外一條路就是從架構上再動手腳,以工具取代人工維護虛擬層運作,因此進一步導入 ORM 技術,也就是 Entity Framework。
  • 面子裏子都要
內涵有了,要吸引人最快的方式當然就是一張漂亮的臉蛋,漂亮也不見得成得了巨星,想要影史留名,朝演技派前進是必經之路,ASP.NET 網頁儘管可以作得很漂亮,但就是缺少了生動的靈魂,所以 Silverlight 、 Flash 就這麼進駐為單純的網頁改頭換面。
  • 說好的溝通呢


當系統發展到這裏,該追求的維護效率與開發彈性也都差不多了,系統膨脹到這種規模,無可避免的同時將產生溝通的問題,從伺服器資料庫到最前端的網頁介面,資料不可能如同一開始只有兩層時,直接在兩端來回傳送,因此進一步導入了各種溝通的機制,Web 服務、WCF 等技術根據需求被融入設計當中。

沒有最完美的架構,只有不斷演進的設計,網站就如同一個巨大的有機體,只要運作的一天,就會有維護與改進的需求,所以建構網站的技術一再的翻新,有用的沒有的技術不斷的出現,這是一條沒有盡頭的漫漫長路,所以認命吧,直到真正退休的一刻,學習都不會停止。