Discuz!NT论坛代码小分析
Discuz開源代碼結構分析
2008-4-11
右圖是DiscuzNt(以下簡稱DZ)開源代碼的方案結構
20個項目,看上去好像很龐大,現在我們來分析一下它的層次,從本人的個人分析角度上看discus是比較典型的應用三層架構,可以說在架構上是比較普通的,
左圖是DZ的幾個數據層項目,Data項目提供公用訪問接口, Data.Access 和Data.MySql以及Data.SqlServer是公用接口的三種數據訪問層的實現,IDataProvidor接口所提供的接口數量驚人…..代碼行將近5000,DZ的業務邏輯的確非常龐大,其實這樣的接口編寫方式,個人是比較抵制的,這樣看起來,這種實現純粹是為了接口而寫接口,在實現了普通訪問層代碼后,在反過來把所有實現的方法做為基類的接口成員,這個方式在實際中是沒有問題的,很多時候我們是傾向于這么做,只是這樣的5000行的接口代碼就實在不敢恭維…依此可見,DZ的多數據庫支持是建立在這樣一個為每種數據庫重建訪問層實現的方式上的,可幸的是這沒有影響它的運行性能,^^繼續分析,Discuz.Data.DatabaseProvider 提供數據層工廠方法以實現多數據庫支持,那么以上就是數據訪問層的分析,很普通的做法,DZ在重構的時候看來只是簡單的實現接口編程,沒有對業務結構做出新的重構;
再來看業務層和web層,因為如前面分析所說,已經實現了普通而良好的數據工廠和數據訪問層接口,所以上層就是完全面向接口的了,在這幾個層次里也看不到任何的數據庫訪問,sql語句等,
這個就是web層,它把后臺頁面代碼分離成為獨立的dll,這樣做是處于版權的考慮,讓你不能獲得源代碼,獲得了也不能輕易的修改,^^這個做法也使得以下的web目錄非常的輕便,只有幾個文件和目錄,通常編寫龐大的web應用頁面必然會很多,沒有全盤考慮,一下就會建好多的頁面出來,而很多情況,頁面中的部分甚至整個頁面是功能類似的,因此應該考慮以組件,
控件等方式進行復用,DZ就是個例子.
?
下面這幾個是作為DZ的插件功能,用來在后續開發中擴充應用,以類似方式定義程序集名稱,按照一定的規范來編寫DZ平臺的插件,這是現在普遍采用的方式,
一些網站或者開源控件會提供這樣的規范,讓開發人員添加一些基于該平臺等的應用,DZ的具體插件應用我就不清楚了 不想接著看^^主要是分析大體結構
這些則是一些通用的方法程序集,沒有什么好討論的,里面封裝的一些類可以拿出來單獨使用,還是挺方便的,Discuz.Cache實現DZ的緩存機制,
以上就是DZ主論壇的源碼分析
?
轉載于:https://www.cnblogs.com/qiantuwuliang/archive/2009/06/04/1496426.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Discuz!NT论坛代码小分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在SQL中使用convert函数进行日期
- 下一篇: Java EE WEB工程师培训-JDB