[從架構到設計]第一回:設計,應該多一點

作者: Anytao  發布時間: 2008-08-16 22:16  閱讀: 1631 次  推薦: 1   原文鏈接   [收藏]  
Anytao.com
 

設計就像是轉魔方,你必須面面俱到。 

1. 引言

anytao開始想嘗試嘗試寫點設計的東西了,只所以有了這個“突如 其來”的想法,原因其實很簡單:因為對設計、架構、分層、模式,我很陌生。因為陌生,所以接觸,因為接觸,所以隨筆。系列之構思就這么誕生了。因此,這個 系列是個方法論,是個雜文集,也是個見證史。我不期望能收獲多少掌聲,但求能保持更多交流。作為技術的狂熱追求者,我始終認為兩件事情是技術的立命之本:

因為,你會發現在日新月異,紛繁復雜的技術領域里,一切都在變,一切都在趕,我們拼命的狂追,換來一片的豪賭。唯一不變的,一是底層,二是設計。所以我只關注這兩個,也只關注這兩個,這是我認為的學習方法論中的第一守則:確定不變的追求方向。

那么這個系列將關注些什么方向呢?

  • Architecture---架構
  • Method&Process---設計方法與設計過程
  • OO--面向對象
  • Design Pattern---設計模式
  • Learning Method---學習方法論

2. 從架構到設計

當年,petshop作為.NET和J2EE兩個派別之爭的產物,坐在了潮流的風口上,時間已然過去,當時硝煙早已消失。我們慶幸的是petshop一路走來,從1.0到4.0,綜觀其設計的脈搏,能夠感受到架構的日漸成熟和演變,這是技術之爭留給我們最大的看點。

(圖片來源:MSDN)

從1.0的簡單3層BS系統架構,到4.0實現較復雜的分層結構,同時引入數據緩存、異步處理機制,petshop成為典型的分層結構的代表為架構設計的學習提供了良好的資源與素材。從歷史的遺跡中,我們挖掘到的是什么?

  • 思想:分層架構,3層也好,7層也罷。根據的是具體的系統需求而定,但是基本的表示層、業務邏輯層和數據訪問層的有機劃分,是一種導向。而由分層帶來的性能影響,可以通過數據緩存、異步處理機制來彌補。
  • 方法:模式就是方法,petshop中就不乏模式的大量應用與技巧,抽象工廠模式完成對象創建;策略模式封裝業務行為。
  • 策略:面向接口的設計,剝離了層與層之間的強耦合,使得各個模塊保持相對的獨立性,體現了封裝變化的基本思想。
  • 技巧:表現層中以masterpage來實現對頁面的控制,既省時又省力。
  • 缺陷:沒有應用ORM,數據和實體的分離不夠徹底。希望在5.0中有更好的方案。

沒有一成不變的設計,也沒有一成不變的架構。方案是永遠隨著需求,隨著技術而不斷重構,設計之美就體現在不斷的否定與自我否定中。本系列不是討論petshop的專題,這方面的討論已經很多了,我們沒有必要再造輪子。因此,更關注如何,怎樣和思想,是這里的討論。

那么,設計、架構應該從哪兒入手,又如何進行?面向對象的原則又是什么?設計模式又如何融入到我們的架構體系中?這一系列的問題,我想說可能根本沒 有答案,而確有方法。本系列就力圖從方法的角度入手,以并非專業又并非經驗的視角來闡釋如何以菜鳥的立場來“空談”設計。因為,你不能說設計只是架構師的 事兒,否則滿篇的代碼又如何體現藝術之美呢?作為菜鳥, 我們少了經驗,但是多了思考,因此對架構、對設計、對模式的探索,應該從一定的方法做起,這是本 文和本系列試圖達到的目標。

作者力圖以例小心求證設計,以圖來大膽闡釋方法。例如,軟件設計的分離點應該如何來考慮呢?

Anytao.com

  • 首先,分層思想是從職責角度對架構進行了約束,表現層、邏輯層、數據層各負其責,層與層之間以接口進行信息交互,減少耦合度。
  • 其 次,框架和通用組件則是從通用性角度提高了系統復用并減少耦合度,例如,在一個應用系統中,.NET Framework是技術通用組件,提供了系統開發數以千萬計類,而系統中的進度控制、消息控制和異常處理可以開發為專用的模塊,作為領域通用組件,然后 在此基礎上再實現具體的業務需求。
  • 最后,模塊化思想則是從功能點對系統進行了分離與封裝。一個大型的系統,一定是分成多個功能模塊進行的開發,每個子模塊甚 至也有必要進行架構設計和粒度劃分,這主要依賴與其在系統中的復雜度和重要度。核心的子系統設計,最好落實到具體的類設計,對粒度的把握也是架構設計值得 思考的話題。

分層角度,框架基礎,功能劃分,一個系統設計要綜合考慮這些因素。可能還不止這些,也可能只是其中的一點,具體的架構要看具體的需求。然而探求架構和設計方法的時候,我們要把握基本的方法和思路去迎合前人總結的經驗,也叫科學。

以上述思路來回顧petshop 4.0的架構,我們很明顯的感受到,良好的設計正是巧妙的耦合了架構設計中的諸多因素,提出了近乎完美的方案。分層角度來看,在petshop中自不必 說,明顯的三層架構體現了良好的系統分離與耦合;通用角度來看,.NET Framework作為技術通用組件,提供了系統實現的基本技術基礎,而對Profile和Membership的分離,則體現了領域通用部分的價值;模 塊角度來看,由于petshop本身的業務需求比較簡單,因此模塊劃分不夠明顯,但是對Order的處理可以看作簡單的業務模塊了。而其他方面,例如設計 模式,面向接口開發的技術,也同樣體現在petshop的大框架中,讓我們受益非淺。 

3. 結論

從架構到設計,漫游在一個技術而藝術的世界,一直是我的夢想。對技術的駕馭,不是看你了解多少細節,更重要是你控制了多少格局。架構設計就是一個控 制格局的藝術,只有游刃有余的駕馭了如何將技術細節變成就輕駕熟的應用,才是設計的最高境界。屆時,你會發現,原來技術可以更美的。所以,我要說,設計, 應該多一點。

 

 

參考文獻

(中國)溫昱,軟件架構設計

(USA)Geoffrey James,The Tao of Programming

1
0
 
標簽:架構設計
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()