有朋友說應該寫個大致結構出來。想想也有道理,那麼我就來介紹一下Dotnetnuke的執行流程。基本上我這個就是照搬他的 基本思路
一個站點,無論其內容多麼豐富,頻道,欄目等無論有多少,其最終的表現形式終歸是一個一個頁面。系統直接對頁面進行處理,至於頁面上放什麼內容,這個沒有關系 ,放什麼模塊,就呈現什麼內容。和傳統CMS系統的"首頁",“列表頁”,“終端頁”的三大類分類完全不同,我們認為,無論是首頁也好,列表頁也好,它最終無非還是一 個"頁面"。而只要是頁面,那它就一定有如下特點:上面可以有若干區域,每個區域顯示若干內容。在此系統中,如果加載了“文章列表模塊”那麼就是列表頁,如果加載 了“文章模塊”那麼就是終端頁。
特點
一、整個站點只有一個頁面。非常便於集中管理。
二、所有功能模塊之間可以互不相關。便於擴充。
站點主要信息都在數據庫中集中存儲,各頁面信息也是統一管理,甚至所有url的生成也集中在一處管理,非常便於後期urlrewrite等的處理。
系統運行基本流程
系統首先請求唯一的頁面/Default.aspx.
根據參數tabid=?來判斷請求的是哪個頁面。
權限判斷。如果不滿足權限則重定向到登錄頁。
讀取頁面信息。判斷應加載那個頁面皮膚並加載之。
頁面皮膚根據頁面模塊信息加載功能模塊。
各功能模塊執行各自自己的邏輯,最終在/Default.aspx頁中顯示頁面呈現的最終結果。
/Default.aspx執行結束,一次請求結束.
基本上DotNetNuke的思路就是這些,你要說有啥深不可測的技術麼也沒有,關鍵是皮膚部分,以及執行步驟部分有不少改進的空間。
DotNetNuke的不爽之處
1,皮膚創建問題。它使用 td,div標記作為容器。這樣會導致最終頁面上會出現許多 id="ctl000_XX"之類的標記。這些標記說不定在啥時候會和美工寫的CSS其反 應.
對此我的解決方案是:全部使用placeholder做容器,這樣頁面上就不會有多余的id了
2,權限問題。這個東西部署時真是麻煩,因此我特別注意了這個問題.