慮到使用者的實際應用需求和面向未來的軟體開發理念,discuz!nt在設計和開發之初就構建了優良的架構,大大提高了軟體的伸縮性、可擴充套件性和重用性。本架構除了使discuz!nt自身結構更為清晰和更易於維護以外,也為使用者進行二次開發和完善論壇個性化提供了極大的方便。
discuz!nt採用了如下的四層結構,讓我們簡單介紹一下:
(一)顯示層
顯示層可由使用者自行進行設計和修改,用以顯示最終的web頁面介面和論壇資料。特別值得一提的是,discuz!nt在前台沒有選擇絕大多數asp.net程式所使用的控制項模式,而是另外實現了一套方便好用的模板機制。本模板機制使站長可以用html(或xhtml)來製作模板,然後由discuz!nt的模板轉換功能轉換為asp.net頁面程式(即aspx)檔案,這樣做的好處有兩點:
1)提高了易用性:asp.net的ascx檔案對於沒有學習過asp.net或對其開發模式沒有了解的人來說,是存在難度的,而discuz!nt的模板機制使得使用者只需要簡單了解html就可以製作asp.net的論壇介面,站長可以輕鬆、自由地設計和修改介面了。
2)提高了效能:一般情況下,前台程式不使用控制項模式,而使用discuz!nt的模板轉換功能,效能將會得到顯著提公升。例如discuz!nt的模板轉換功能不用資料繫結,不必判斷資料**和轉換資料型別,不用頁面控制項,避免了使用viewstate,從而大大提高了頁面效能。此外控制項模式往往追求功能齊全,而當你只需要其中一部分功能時,大量無用的**則會拖累頁面效能。
更為突出的是,discuz!nt顯示層的靈活性很高,支援在模板中定義匯入的命名空間和插入c#**,從而使顯示層可以方便的插入其它程式集的資料。
(二) 頁面資料處理層
discuz!nt的頁面資料處理層主要負責web頁面的資料輸入與輸出處理,包括檢測使用者資料提交的有效性校驗,以及為頁面程式所需要的資料來源。本層實現了論壇的主要需求,完成了前台各個頁面的功能流程,例如使用者發貼時,頁面資料處理層首先判斷使用者許可權,然後校驗使用者提交的資料是否合法,最後呼叫對應業務物件封裝類中的方法,將使用者的資料實際儲存。
如果站長希望使用者在前台輸入、輸出時,能同時與其它程式進行互動,那麼就可以在該層進行處理,例如:乙個釣魚愛好者**想在discuz!nt使用者個人資料中增加魚竿類別的選項,並儲存到主**使用者資訊資料庫,那麼就可以在前面的顯示層增加魚竿類別,然後在頁面資料處理層中,呼叫將該資料儲存入主**使用者資訊資料庫的方法,完成儲存。
discuz!nt的頁面資料處理層可以訪問資料庫,但並不推薦開發者增加在該層與資料庫進行互動,資料庫的訪問在下面要介紹的業務物件封裝層中。
(三) 業務物件封裝層
以論壇來說,使用者、主題、帖子、版塊、使用者組等都屬於業務物件的範疇,discuz!nt將業務物件描述為物件類,並提供了實現對這些物件進行各種操作的豐富方法。以主題物件來說,對主題的封裝方法裡就實現了建立、修改、刪除、更新等操作,discuz!nt內部是採用這些方法來處理主題的,同樣,開發者也可以直接呼叫這些方法來實現對discuz!nt的具體操作,而不必自己運算元據庫。
(四)資料庫訪問層
資料庫訪問層提供了對不同資料庫訪問方法的封裝,目前discuz!nt分別擁有對access和sqlserver資料庫的訪問封裝,對於sqlserver使用者來講,還可以通過修改discuz!nt的資料庫儲存過程來高效地實現一些特定的需求。
上面簡單介紹了discuz!nt的四層結構,總體而言,論壇就像是乙個飯店,論壇訪問者是客人;顯示層則是飯店餐桌和大廳,使客人的就餐場所;頁面資料處理層為服務員,負責接收客人的點菜和向廚師下單;業務物件封裝層是廚師,負責製作菜餚並返回給服務員,資料庫訪問層是採購員,用來購置廚師所需要的原材料;架構就作為飯店流程或規章制度,通過完善布置各個成員的分工、協作,從而給客人乙個良好的就餐環境和服務。
另外,無論開發者使用的是c#、vb.net還是其它任何支援.net的語言,都可以直接呼叫上述四個層中的公開方法,來實現對discuz!nt的呼叫。隨著discuz!nt完善後的開源,必將有越來越多的開發者參與開發,相信在我們共同的努力之下,discuz!nt將會愈加完善。
新聞來自: 新客網(www.xker.com) 詳文參考:http://www.xker.com/page/e2007/0410/24269.html
和Lnux親密接觸
第一次聽到linux 確切說是gnu linux 是在三年前的計算機基礎課上,那時候只知道linux是開源的 免費的,任何人可以無任何限制的使用,還有linux是多工 多使用者的作業系統,其他的就沒有了。開始使用linux在去年五一的是時候。五一放假沒什麼事做,整天就在csdn上看看,有一天突然發現...
C 與RSS親密接觸
講述動態生成rss檔案的方法。動態生成rss檔案也基本有兩種方法,一種是用字串累加的方法,另一種是使用xml文件生成的方法。字串累加的方法也比較簡單,我也就不多說了,這裡著重說一下生成xmldocument的方法,包括各種節點的建立,屬性的建立等。當然在此也有必要說明一下為什麼採用後者,因為後者符合...
我與vim的親密接觸
emmm,閒來無事,打算了解下神奇vim 用來zhuangbi 在終端操作很帥 什麼是vim?vim是從 vi 發展出來的乙個文字編輯器。補完 編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。vi vim有三種模式 命令模式常用命令 命令作用 dd刪除 剪下 游標所在整行 5d...