動與靜--軟體的雕塑藝術

來源:互聯網
上載者:User

     “蟬鳴林愈靜,鳥鳴山更幽”,這是中國古代純山水詩的絕句,在動與靜的映襯下別具一番優美。在軟體的領域,其實也存在這種動與靜的境界。如果軟體設計得當,也可以使軟體的設計具有雕塑一般的美。對於雕塑我不是很懂,對於這種凝固的美,我一直都是十分敬畏的。
    時下非常紅火的是敏捷式軟體開發 (Agile Software Development),討論得最熱鬧的是設計模式。敏捷式軟體開發 (Agile Software Development)的一個價值觀就是歡迎變化,擁抱變化,我可以字之為“動”。然而解決問題或者業務的變化一直是軟體工程或者軟體設計技術裡一個最為悠久也最為棘手的問題,從來也沒有一種方法可以徹底的解決。設計模式則是經驗的抽象,是一種凝固,我可以子之為“靜”。但是設計模式又更是以一種靜止的方法處理動態事務,或者說是使事務的處理更加動態,真是靜中有動,動中有靜阿。
    今天我要談的與兩者似乎都沒有關係。我想就我在一個項目中對系統配置或者系統參數的管理來強調和表述我的觀點。
    在應用領域,特別是資料庫領域,我們經常需要配置一些定義資訊。如在我的一個工作流程管理項目中,涉及到工作流程的可視化定義。工作流程的可視化定義包含了很多的內容,如節點定義,進程定義,規則定義,事件定義,人員定義,許可權定義等等,可以說是一個比較複雜的處理。按照通常的做法,我們將這些定義資訊儲存到資料表中。下次需要使用的時候再從資料庫中提取出來。
 
是工作流程中的一部分用例。
在使用這些定義資訊的時候,我們通常的做法是如所示:

這樣做的好處是:
只有一個好處:調用簡單!!
但是由此帶來的壞處是顯而易見的,至少有以下幾個壞處:
1。需要不停的查詢資料庫,每次使用的時候都要查詢資料庫。
2.   增加了資料庫的壓力。
3.   增加了網路資料的流量,同時有很多的roundtrip。效率十分低下。
4.   增加了出錯的機會。
既然這樣一種不好的方式,那麼為什麼我們還要用呢?而且又使用得這麼頻繁呢?也許真的是傻有傻的可愛?
然而在.Net世界裡,使用.Net的幾大法寶,我們就可以顛覆我們這種傳統的使用方式。這幾大法寶是什麼呢?
A。CodeDOM
B。Reflection
C。OO
是的,就是靠這幾個就可以了。
且看我們新的方式是什麼:

大家注意到箭頭所指的地方,原來我們是從資料庫中提取資訊,這次變成了從一個程式集中提取資料。
這樣做的好處是
1.除非定義資訊發生變化,永遠不需要訪問資料庫
2.減少了資料庫伺服器的壓力
3.使軟體更加健壯
4.減少了網路傳輸的壓力。
那麼具體的做法是什麼呢?
1.定義一個模板檔案,這個檔案是C#代碼,類似於CodeSmith的方式。
2.在模板檔案中定義一些抽象的基類
3.定義需要引用的程式集
4.將商務規則定義資料全部變成為一群業務類
5.採用CodeDom來動態編譯這些檔案產生一個具體的程式集
6.定義訪問這些程式集的策略。如Template1101.dll,尾碼1101表示模板的ID號,如果使用1101的模板,那麼就直接存取Template1101.dll這個程式集。
這樣我們就將需要經常訪問的資料凝固起來,我稱之為雕塑。

在軟體系統中,如果不是經常變化的資料,我們都可以採用這樣的方法來處理。個人認為這樣的處理是比較優雅的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.