王磊
摘要:針對門戶網(wǎng)站增加欄目,更新版面困難的問題,提出了利用數(shù)據(jù)庫描述網(wǎng)站架構,通過后臺管理,可以在不影響網(wǎng)站運行的情況下,實現(xiàn)對網(wǎng)頁欄目的變更和版面的更新。
關鍵詞:可定制;數(shù)據(jù)庫;門戶網(wǎng)站
1引言
對于一個門戶網(wǎng)站,除了要定期更新其內(nèi)容外,還經(jīng)常面臨著增加欄目,更新版面等問題,而這些問題的解決往往需要專業(yè)的網(wǎng)站開發(fā)人員來完成。而對于一般的單位,門戶網(wǎng)站的管理人員都不是專業(yè)的技術人員,當遇到這類的問題時,只能求助于當初開發(fā)門戶網(wǎng)站的公司,重新提需求,進行二次開發(fā)。這樣,一方面增加了成本,另一方面也會因為開發(fā)周期等問題而影響門戶網(wǎng)站的正常使用。針對以上問題,結合我們學院可定制門戶網(wǎng)站的開發(fā),嘗試在不影響系統(tǒng)應用的前提下,快速高效地定制門戶網(wǎng)站。
2門戶網(wǎng)站分析
通過對互聯(lián)網(wǎng)中一些門戶網(wǎng)站的調(diào)查,對于一般的門戶網(wǎng)站,大多的網(wǎng)站頁面由以下幾部分構成:頂端是Logo,Logo的下面一般都有一個菜單,底部為版權、備案和聯(lián)系方式等信息,中間是網(wǎng)頁內(nèi)容的呈現(xiàn)部分。
中間部分是一個網(wǎng)頁的核心部分,一般由兩部分或三部分組成。無論是兩部分還是三部分,最大的部分主要顯示兩類內(nèi)容:一是分成幾塊,按信息發(fā)布時間顯示各類信息的列表;二是顯示某個信息的詳細內(nèi)容。而相對較小的部分一般用來顯示以下幾類內(nèi)容:一是整個網(wǎng)站的信息或某類信息按時間排序的列表;二是整個網(wǎng)站的信息或某類信息按點擊排行的列表;三是一些圖片或文字鏈接。如圖1所示,顯示了一個普通的門戶網(wǎng)站的結構。
3可定制門戶網(wǎng)站的數(shù)據(jù)庫設計
根據(jù)對門戶網(wǎng)站的分析,總結其布局特點和網(wǎng)頁呈現(xiàn)方式,形成了可定制門戶網(wǎng)站的數(shù)據(jù)庫。數(shù)據(jù)庫由頁面總體框架表(PageFrame)、中間部分詳細設計表(PageDetail)、頁面附加信息表(PageAdditional)、菜單表(PageMenu)和菜單詳細信息表(PageMenuItem)五個表組成。
3.1PageFrame表
PageFrame表記錄了門戶網(wǎng)站中所有頁面的布局參數(shù),包括以下信息:(1)每個網(wǎng)頁的標題、寬度、背景、字體;(2)頂端的Logo圖片地址及其高度;(3)底部信息的內(nèi)容、前景色、背景色、高度、字體、行高;(4)網(wǎng)頁是否有菜單,如果有,使用菜單表中的哪一個菜單;(5)中間部分由哪些部分構成等信息。
包括主頁面在內(nèi),門戶網(wǎng)站中有幾個頁面,就會在此表中出現(xiàn)幾條記錄。
3.2PageDetail表
PageDetail表記錄了組成每一個頁面中間部分的詳細設計信息,是可定制門戶網(wǎng)站布局的關鍵表,可以根據(jù)門戶網(wǎng)站的具體需求而設計,可變參數(shù)越多,網(wǎng)站顯示形式越豐富,但后臺管理也就越復雜。我們在設計時將網(wǎng)頁的中間部分,按照其顯示的內(nèi)容和形式,分成了若干模塊,每個功能模塊形成一條記錄。
每個記錄的Position字段決定了該模塊在網(wǎng)頁中間部分的位置(左、中、右);ModelWype字段決定了該模塊顯示信息的類型(信息列表、詳細信息、文字鏈接或圖片鏈接);PositionOrder字段決定了該模塊在與自己在同一Position上時的排列順序,比如,在中間頁面的左側存在兩個模塊,一個是最新信息列表,一個是按點擊排行列表,那么PositionOrder值的大小就決定了這兩個模塊哪一個排在上面,哪一個排在下面;OrderKind字段是在ModelType為信息列表時,決定是按時間順序顯示信息還是按點擊次數(shù)排序;InfoKindID字段決定了顯示哪一類信息。
除了上述的關鍵字段外,每個模塊還都有布局參數(shù),包括前景色、背景色或圖片、字體、邊距信息、行高、顯示行數(shù)等字段。
3.3PageAdditional表
PageDetail表無法完成所有中間部分的描述,比如文字鏈接需要顯示的文字、圖片鏈接的圖片地址以及點擊它們后跳轉放鏈接等信息,因此增加了PageAddition表。
在表中,Title字段保存文字鏈接需要顯示的文字;ImgUrl字段保存圖片存儲的地址;TipText字段保存鼠標停留在文字或圖片上時的提示信息;ShowOrder字段保存顯示的順序;IsBlank字段決定是否在新窗口中顯示打開的鏈接;Url字段保存了鏈接直接跳轉的網(wǎng)址,比如友情鏈接的跳轉地址;Content字段保存了直接顯示的內(nèi)容;LinkPageFrameID字段保存了網(wǎng)站內(nèi)部的跳轉鏈接。url、Content和LinkPageFrameID字段對于一條記錄只能有一個字段有值。
3.4PageMenu表和PageMenuItem表
對于一般的網(wǎng)站,菜單的層級一般不會超過三級,PageMenu表記錄了每級菜單的link、hover、active和visited的前景顏色和背景顏色,以及菜單的字體、寬度和高度等信息。
PageMenuItemi~錄了各級菜單每個菜單項的詳細信息。包括:標題、鏈接、菜單級別、父菜單ID和在同級菜單中的顯示順序等信息。鏈接的處理方式與PageAdditional表中的處理方式相同,只是少了Content字段。
4系統(tǒng)實現(xiàn)
我們學院在進行可定制門戶網(wǎng)站開發(fā)時,采用TAsP.NETMVC架構。
ASP.NET MVC是微軟官方提供的以MVC模式為基礎的ASP.NET Web應用程序框架,將一個web應用分解為Model(模型)、View(視圖)和Controller(控制器),同時提供了對HTML、CSS和JavaScript的完全控制。
結合ASR NET MVC的特點,我們將頁面布局的數(shù)據(jù)模型建立在Model中,使用Controller中的不同Action,通過數(shù)據(jù)模型實現(xiàn)對數(shù)據(jù)庫的查詢等操作,在View中,使用查詢得到的數(shù)據(jù)模型中的數(shù)據(jù)和View引擎Razor,實現(xiàn)對門戶網(wǎng)站的布局。
對于整個系統(tǒng)的后臺管理,同樣使用ASP.NET MVC架構,同樣使用Action,通過數(shù)據(jù)模型,實現(xiàn)對數(shù)據(jù)庫的增、刪、改和查詢操作,在View中,使用jQuery EasyUI,結合HTML實現(xiàn)后臺管理界面的開發(fā)。使用jOuery EasyUI可以使整個頁面布局如同應用程序,操作方便,美觀大方。
5結語
在對可定制門戶網(wǎng)站架構的設計和開發(fā)中,數(shù)據(jù)庫的設計是很關鍵的,而且數(shù)據(jù)庫的設計也不是統(tǒng)一的,要根據(jù)門戶網(wǎng)站的整體風格來設計;在實現(xiàn)的技術上,建議采用MVC架構,MVC架構可以試開發(fā)者在不依賴業(yè)務邏輯的情況下專注于視圖設計,非常適合網(wǎng)站頁面的定制開發(fā)。
文章對可定制門戶網(wǎng)站的開發(fā)提供了一個相對完整的解決方案,整體設計相對簡單,不可能完全滿足各類門戶網(wǎng)站的開發(fā)需求,在這里我們只是拋磚引玉,給門戶網(wǎng)站的開發(fā)者提供一個思路,供大家參考。