程序的界面與業(yè)務(wù)邏輯的分離是現(xiàn)在大家的共識, 即所謂的mvc, 應(yīng)該說, asp.net中的控件模式已經(jīng)為mvc模式做了實現(xiàn), 但discuz!nt還是選擇了另外一種方式. 這主要是基于以下考慮:
1 模板制作者的接受度. discuz!nt是一個通用型產(chǎn)品, 用戶為廣大論壇站長, 各個論壇都有自己的界面?zhèn)€性化需求, 因此界面模板的制作必須容易被各個普通站長學(xué)習(xí)掌握, 而asp.net的ascx文件對于沒有學(xué)習(xí)過asp.net或?qū)ζ溟_發(fā)模式?jīng)]有了解的人來說, 是存在難度的. discuz!nt使得用戶了解html基本就可以制作asp.net論壇界面, 站長可以輕松掌握如何修改和設(shè)計界面.
2 一般情況下, 前臺程序不使用控件模式, 性能都得到了提升. 控件的開發(fā)方式比較有利于提高開發(fā)效率, 提高模塊的重用性, 但缺陷是性能上會有一些損失, 例如不用數(shù)據(jù)綁定, 顯然也就不必判斷數(shù)據(jù)來源和轉(zhuǎn)換數(shù)據(jù)類型, 不用頁面控件和控件事件等, 也就避免了使用viewstate, 此外控件往往追求功能齊全, 當(dāng)你只需要一部分功能時, 大量無用的代碼同樣會拖累性能.
這兩點簡單歸納起來就是提高了易用性和性能.
discuz!nt使用的界面模板方式與一些其它web程序有相似之處, discuz! (php)采用的方式是將模板html文件轉(zhuǎn)換為php文件, 然后在相應(yīng)php程序文件中#include進(jìn)來, 另一個國外asp.net程序dnn則是將html文件翻譯為了ascx文件. discuz!nt采用的模式可以認(rèn)為是對前者的模式又進(jìn)行了層次的劃分(界面與業(yè)務(wù)分離), 也可以認(rèn)為是后者的更進(jìn)一步(既然那些ascx也是自動生成了, 何不干脆aspx化讓第一次執(zhí)行前的編譯更簡單?)
discuz!nt的前臺頁面層次如下:
如果還是不太清楚, 則以文件類型可以直觀描述如下:
用戶的html模板文件在后臺選擇生成模板時被轉(zhuǎn)換為aspx文件, 負(fù)責(zé)進(jìn)行discuz!nt前臺的頁面顯示(例如showuser.htm被轉(zhuǎn)換為showuser.aspx)
aspx.cs文件為頁面類, 負(fù)責(zé)接收用戶提交, 獲取頁面所需要的各種變量并"交付"給aspx文件, 這里是實現(xiàn)論壇功能的主要部分(例如showuser.aspx.cs為showuser.aspx提供變量具體數(shù)據(jù))
對于一些常用的論壇對象, 又進(jìn)行了業(yè)務(wù)對象封裝以方便使用(例如對用戶的信息封裝為userinfo類, 用戶常用操作封裝于userfactory類)
當(dāng)然, 除了顯示層外, 其它層次的代碼最后都被編譯進(jìn)dll文件中, 對于純粹只是使用的站長來說, 你一般只需要修改顯示層即可滿足你的界面修改要求.
以上所講述的是大概的層次結(jié)構(gòu), 具體細(xì)節(jié)會在后面的章節(jié)中逐步提到.
新聞熱點
疑難解答
圖片精選