王海燕,吳 潔
(1.商丘師范學(xué)院 計算機與信息技術(shù)學(xué)院,河南 商丘 476000;2.河南信息工程學(xué)校 河南 鄭州 450000)
隨著Internet的豐富和發(fā)展,促成了數(shù)字化信息內(nèi)容的迅速成長。但同時很多網(wǎng)站卻不能迅速跟進(jìn)大量信息衍生及業(yè)務(wù)模式變革的腳步,尤其是遇到網(wǎng)站擴充或整合的時候,需要花費很多時間和精力去更新信息,人們的工作變得異常復(fù)雜,而網(wǎng)站內(nèi)容管理系統(tǒng)的出現(xiàn)有效的解決了這個問題。這里我們對內(nèi)容管理系統(tǒng)的現(xiàn)狀和存在的問題進(jìn)行了闡述,并給出了架構(gòu)設(shè)計。
處在科技高速發(fā)展的時代,網(wǎng)絡(luò)技術(shù)給人們的生活和工作帶來了深刻的變革,信息化、網(wǎng)絡(luò)化、數(shù)字化正滲透到社會的各個角落,企業(yè)對于通過互聯(lián)網(wǎng)來收集、處理和傳遞數(shù)據(jù)的依賴性越來越強。面對越來越大的信息處理量,我們也面臨著許多問題,如建站困難、大量信息堆積及信息更新不及時,服務(wù)功能不健全、手工處理效率低下、發(fā)布的信息無時效價值;改版工作量大,系統(tǒng)的擴展能力差等。
對于上述問題,如何來有效管理各種數(shù)據(jù)信息和維護(hù)這些信息內(nèi)容,全面提升管理水平,真正達(dá)到快捷、準(zhǔn)確、實時的發(fā)布信息,解決用戶網(wǎng)站建設(shè)與信息發(fā)布中常見的問題,以適應(yīng)各級企業(yè)不斷增長的需求,就成為一個耗費人力、物力、時間的工作,基于這樣的目的,一套專業(yè)的網(wǎng)站內(nèi)容管理系統(tǒng)應(yīng)運而生。
新一代的內(nèi)容管理平臺的發(fā)展應(yīng)著重以下幾個方面:
1)強健的架構(gòu)、良好的集成擴展性,方便進(jìn)行維護(hù)和管理
新一代的內(nèi)容管理系統(tǒng)必須基于優(yōu)良穩(wěn)定的體系結(jié)構(gòu),具有更高的安全性,易于集成和功能的擴展,可以提供方便的管理維護(hù)功能或工具,并可以快速部署[1]。
2)系統(tǒng)管理和內(nèi)容業(yè)務(wù)分離,更強的業(yè)務(wù)獨立性和靈活性
網(wǎng)站內(nèi)容管理的復(fù)雜度和靈活性要大大高于一般的業(yè)務(wù)系統(tǒng),因此網(wǎng)站內(nèi)容管理必須能夠提供更強的業(yè)務(wù)獨立性和靈活性[2]。
3)表現(xiàn)和內(nèi)容分離,用戶體驗和內(nèi)容質(zhì)量的和諧統(tǒng)一
內(nèi)容表現(xiàn)和內(nèi)容本身需要盡可能的獨立,用戶無需過多的關(guān)注內(nèi)容表現(xiàn)形式的制作,由系統(tǒng)提供預(yù)設(shè)可選的模板來展現(xiàn)內(nèi)容[3]。
該內(nèi)容管理系統(tǒng)使用了標(biāo)準(zhǔn)的三層體系結(jié)構(gòu),在框架設(shè)計中需要考慮很多問題:怎樣建立用戶接口;在哪里處理業(yè)務(wù)邏輯;怎樣持久化數(shù)據(jù);怎樣設(shè)計能松散耦合還能靈活改變,應(yīng)用程序如何做各種級別的業(yè)務(wù)處理。為了使系統(tǒng)的各個應(yīng)用層保持一致,讓每個層在一種松散耦合的方式彼此作用而不用考慮低層的技術(shù)細(xì)節(jié),為此選擇一個主流技術(shù)架構(gòu)Struts2+freemarker+Spring2+Hibernate3,將應(yīng)用功能分成表現(xiàn)層、邏輯層和數(shù)據(jù)層,Struts2+freemarker主要是解決表現(xiàn)層的問題,Spring主要是解決應(yīng)用邏輯層問題。Hibernate主要是解決數(shù)據(jù)庫持久的問題。系統(tǒng)完整的處理過程如圖1所示。
圖1 三層架構(gòu)處理過程Fig.1 Three layer software architecture
這是一種先進(jìn)的協(xié)同應(yīng)用程序開發(fā)模型,各層是邏輯的,而不是實際的物理上的,這種三層架構(gòu)具有很多優(yōu)勢:
1)安全性
通過應(yīng)用三層結(jié)構(gòu),使中間邏輯應(yīng)用層和前臺界面、后臺數(shù)據(jù)庫分開。利用功能層有效地隔離開表示層和數(shù)據(jù)層,未授權(quán)的用戶難以繞過功能層而利用數(shù)據(jù)庫工具或黑客手段非法地訪問數(shù)據(jù)層,這就為嚴(yán)格的安全管理奠定了堅實的基礎(chǔ),整個系統(tǒng)的管理層次也更加合理和可控制[4]。
2)便于升級、維護(hù)
三層結(jié)構(gòu)技術(shù)是一個基于組件的開發(fā)模式,是根據(jù)業(yè)務(wù)涉及的數(shù)據(jù)和處理流程、不同的行業(yè)特性設(shè)計成屬性、方法并獨立封裝,使業(yè)務(wù)工作對象化。當(dāng)用戶需求發(fā)生變化時,只要修改相應(yīng)的對象就可以了。
3)獨立性
合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對獨立性,從而使整個系統(tǒng)的邏輯結(jié)構(gòu)更為清晰,能提高系統(tǒng)和軟件的可維護(hù)性和可擴展性[5]。
在該內(nèi)容關(guān)系系統(tǒng)中,第一層是表示層,作為應(yīng)用的用戶接口部分,它擔(dān)負(fù)著用戶與應(yīng)用間的對話功能。中間邏輯層由功能對象和應(yīng)用邏輯組成。它提供定義良好的接口,使表示層可以方便地存取數(shù)據(jù),從而適應(yīng)于服務(wù)中的各種請求,第三層是數(shù)據(jù)層,封裝了對數(shù)據(jù)庫的訪問功能。
文中內(nèi)容管理系統(tǒng)的視圖層提供給用戶視覺上的界面,負(fù)責(zé)面向最終用戶的信息發(fā)布,與用戶進(jìn)行交互。用戶輸入的信息通過該層傳輸給邏輯層,并負(fù)責(zé)邏輯層提取數(shù)據(jù)呈現(xiàn)給用戶。Struts2可以非常簡單地使用FreeMarker模板作為視圖技術(shù),對于傳統(tǒng)的JSP頁面而言,F(xiàn)reeMarker是一個絕佳的替代方案。
展示數(shù)據(jù)的實現(xiàn)過程是:由java程序準(zhǔn)備好要顯示的數(shù)據(jù),由FreeMarker生成頁面[6],通過模板顯示準(zhǔn)備的數(shù)據(jù)如圖2所示。
圖2 Freemarker流程圖Fig.2 Freemarker flow chart
為了在Struts2應(yīng)用中使用FreeMarker模板技術(shù),我們需要在Struts.xml文件中進(jìn)行配置。雖然FreeMarker自己提供了一些FTL指令,可以對數(shù)據(jù)模型中的數(shù)據(jù)進(jìn)行迭代輸出,也提供了一定的條件判斷能力。但Struts2提供的標(biāo)簽遠(yuǎn)不止于此,它還提供了一系列的表現(xiàn)標(biāo)簽,例如form標(biāo)簽等。因此,還是需要在FreeMarker模板中使用Strut2標(biāo)簽.
在內(nèi)容管理系統(tǒng)的持久層的上方是業(yè)務(wù)邏輯層,在該層中主要負(fù)責(zé)企業(yè)信息內(nèi)容的業(yè)務(wù)管理,包括欄目、新聞信息等。
業(yè)務(wù)邏輯層在代碼中主要體現(xiàn)在Service層,Service層大多時候都是簡單的調(diào)用DAO里面的方法,但沒有它又不行,因為有些復(fù)雜的業(yè)務(wù)邏輯就需要在Service層完成,否則易造成業(yè)務(wù)代碼和底層的代碼混亂,對以后功能的修改帶來災(zāi)難性的影響,而且Service層也是Spring實現(xiàn)事務(wù)控制的地方。
Service層設(shè)計的時候首先需要對上層使用到的對象定義一系列接口,所有與業(yè)務(wù)層有交互的代碼都應(yīng)該通過這些接口實現(xiàn)。對于由Spring負(fù)責(zé)管理的對象,可以通過依賴注入加以實現(xiàn)。在Service層還不得不提到的一點就是 Spring處理的事務(wù)管理,Spring提供兩種事務(wù)處理的方法:聲明式事務(wù)和編程式事務(wù)。聲明式事務(wù)是借助于Spring AOP模塊來實現(xiàn),是系統(tǒng)級的事務(wù)管理,在內(nèi)容管理系統(tǒng)開發(fā)中也用到了該事務(wù)管理方法.另外在內(nèi)容管理系統(tǒng)設(shè)計時還要額外注意事務(wù)邊界的劃分,例如在處理聲明式事務(wù)管理功能時,那就需要將事務(wù)控制在方法層面,這樣可以將多次的調(diào)用封裝在同一個事務(wù)之中.使用 Spring的聲明式事務(wù)管理,業(yè)務(wù)接口的方法就是事務(wù)的邊界。
數(shù)據(jù)庫持久層的設(shè)計目標(biāo)是為整個項目提供一個高層、統(tǒng)一、安全和并發(fā)的層設(shè)計的好壞很大程度上決定了是否能完成該項目。此時可以考慮采用數(shù)據(jù)持久層框架,本項目采用了Hibernate,它提供了數(shù)據(jù)訪問方法,能夠使其它程序數(shù)據(jù)持久機制,程序員避免手工編寫程序訪問數(shù)據(jù)持久層,使其專注于業(yè)務(wù)邏輯的開發(fā),并且能夠在不同項目中重用映射框架,大大簡化了數(shù)據(jù)增、刪、改、查等功能的開發(fā)過程,同時又不喪失多層結(jié)構(gòu)的天然優(yōu)勢,集成延續(xù)JAVAEE特有的可伸縮性和可擴展性[6]。
內(nèi)容管理系統(tǒng)數(shù)據(jù)庫表主要包含:用戶信息部分、權(quán)限部分、模板部分。在設(shè)計數(shù)據(jù)庫表時要遵守規(guī)范式的設(shè)計要求,已達(dá)到數(shù)據(jù)庫表設(shè)計的合理化。同時為了保證數(shù)據(jù)庫的一致性和完整性,要為數(shù)據(jù)庫表設(shè)計相應(yīng)的關(guān)鍵字、識別、缺省等信息。Struts+Spring+Hibernate,實現(xiàn)了系統(tǒng)層次的松散耦合,框架把業(yè)務(wù)邏輯和持久性邏輯分開能減輕了開發(fā)人員從頭構(gòu)建持久層代碼的精力,從而集中精力來處理邏輯問題,分層的另一大好處是,對日后系統(tǒng)的升級和維護(hù)帶來很大的好處。在分層的基礎(chǔ)上進(jìn)一步實現(xiàn)是下一步的目標(biāo)。
[1]熊文,方亮,張淑芳.三層web體系結(jié)構(gòu)的特點與比較[J].計算機應(yīng)用與研究,2006:61-63.XIONG Wen,F(xiàn)ANG Liang,ZHANG Shu-fang.The characteristics and comparation of the three-tier web architecture[J].Application Research of Computers,2006:61-63.
[2]李發(fā)英,朱海濱.基于Struts+Hibernate的Web應(yīng)用的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2009(4):91-94.LI Fa-ying,ZHU Hai-bin.Design and implementation of Web applications based on Struts+Hibernate[J].Technology and Development of Computers,2009(4):91-94.
[3]李邵平,彭志平.一種Web應(yīng)用框架及其實現(xiàn)[J].計算機技術(shù)與發(fā)展,2009(8):117-119.LI Shao-ping,PENG Zhi-ping.An implementation of the Web application framework[J].Technology and Development of Computers,2009(8):117-119
[4]潘春華,李悅,唐茂元.基于Spring框架的北京林業(yè)大學(xué)圖書館門戶系統(tǒng)設(shè)計與實現(xiàn)[J].現(xiàn)代情報,2008(4):169-172.PAN Chun-hua,LI Yue,TANG Mao-yuan.The library portal system design and implementation of the Beijing Forestry University based on the spring framework[J].Modern Information,2008(4):169-172.
[5]徐博藝,姜麗紅,董理.一種基于J2EE的軟件架構(gòu)的研究與應(yīng)用[J].計算機應(yīng)用研究,2006,23(9):146-148 XU Bo-yi,JIANG Li-hong,DONG Li.Research and application of a kind of software architecture based on J2EE[J].Application Research of Computers,2006,23(9):146-148.
[6]JIANG Zi-jing.The analysis and design of the content management system based on J2EE[EB/OL].(2009)http://www.dco88.com/p-199579990680.html