親密接觸Discuz!NT之架構篇

發表于:2007-09-07來源:作者:點擊數: 標簽:
考慮到用戶的實際應用 需求 和面向未來的軟件 開發 理念,Discuz!NT在設計和開發之初就構建了優良的架構,大大提高了軟件的伸縮性、可擴展性和重用性。本架構除了使Discuz!NT自身結構更為清晰和更易于維護以外,也為用戶進行二次開發和完善論壇個性化提供了
  考慮到用戶的實際應用需求和面向未來的軟件開發理念,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的具體操作,而不必自己操作數據庫?! ?

 ?。ㄋ模祿煸L問層  

  數據庫訪問層提供了對不同數據庫訪問方法的封裝,目前Discuz!NT分別擁有對Aclearcase/" target="_blank" >ccess和SQLServer數據庫的訪問封裝,對于SQLServer用戶來講,還可以通過修改Discuz!NT的數據庫存儲過程來高效地實現一些特定的需求?! ?

  上面簡單介紹了Discuz!NT的四層結構,總體而言,論壇就像是一個飯店,論壇訪問者是客人;顯示層則是飯店餐桌和大廳,使客人的就餐場所;頁面數據處理層為服務員,負責接收客人的點菜和向廚師下單;業務對象封裝層是廚師,負責制作菜肴并返回給服務員,數據庫訪問層是采購員,用來購置廚師所需要的原材料;架構就作為飯店流程或規章制度,通過完善布置各個成員的分工、協作,從而給客人一個良好的就餐環境和服務?! ?

  另外,無論開發者使用的是c#、vb.net還是其它任何支持.net的語言,都可以直接調用上述四個層中的公開方法,來實現對Discuz!NT的調用。隨著Discuz!NT完善后的開源,必將有越來越多的開發者參與開發,相信在我們共同的努力之下,Discuz!NT將會愈加完善。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97