梁 弼,劉篤晉
(四川文理學院 計算機學院,四川 達州 635000)
基于分層模型的古建筑文物展示平臺研究
梁 弼,劉篤晉
(四川文理學院 計算機學院,四川 達州 635000)
由于傳統古建筑文物展示方式無法滿足當前國內外參觀者的需求,因此文中源于MVC思想和經典三層架構提出了一種新的六層架構分層模型,即表示層、控制層、域模型層、業務邏輯層、數據持久層和數據層,并將S2SH輕量級框架技術和Ajax前端技術融合到各層構建了古建筑文物展示平臺的架構,然后結合Web3D等技術實現了該平臺。實際開發表明,基于該分層模型所構建的古建筑文物展示平臺具有良好的擴展性、維護性和交互性,有效改變了古建筑文物的傳播方式,讓國內外參觀者足不出戶就能欣賞到中國各地著名的古建筑文物。
六層架構;古建筑文物;MVC思想;AS2SH;設計與實現
古建筑文物是歷史文化的載體,也是歷史文明最真實的記錄,它作為中華民族五千年歷史的見證者,不僅具有較高的藝術價值和文化價值,還標志著中國歷史的發展與進步以及古人的智慧和才能,如綿延萬里的長城,建于隋代的安濟橋,明清兩代的故宮,成都的武侯祠,達州的渠縣漢闕等。可以毫不過分地說,古建筑文物的造型在一定程度上體現了一個國家的國力,自然應該使用現代新興技術加以展示、推廣和傳承,讓更多國內外人士了解和認識中國各式各樣的古建筑文物及歷史文化[1]。
然而,傳統古建筑文物的展示方式由于受到時間和空間限制,已經無法滿足現代國內外參觀者的需求。伴隨著現代信息傳播方式的發展,古建筑文物網站,數字化古建筑文物、虛擬古建筑文物以及智慧古建筑文物等正在被探索與實踐。
文中采用一種改進的Web分層模型,并有效結合Ajax、S2SH和XML等主流技術,同時融合Web3D虛擬現實等技術構建了古建筑文物展示平臺。其目的是使古建筑文物傳播方式有跨越式的進步,讓國內外參觀者足不出戶就能欣賞到中國各地著名的古建筑文物,并產生身臨其境的感受。
目前主流的軟件體系架構是三層架構,即表示層、業務邏輯層和數據訪問層。這種典型的三層架構只適用于小規模的軟件開發,而對于中大規模軟件研究及開發已經顯得力不從心[2]。為了充分體現軟件分而治之的設計理念,實現軟件高內聚低耦合的目標,文中將MVC思想和經典三層架構有效結合起來,構建了六層Web應用架構的分層模型,即表示層、控制層、域模型層、業務邏輯層、數據持久層、數據層,具體如圖1所示。

圖1 分層模型
在此分層模型中,表示層負責與用戶交互,并把用戶提交的請求信息傳遞給控制層;控制層負責對傳遞過來的用戶請求進行分發派遣,但它不包含任何業務邏輯處理;業務邏輯層專門用于實現具體的業務邏輯功能;數據持久層用于建立和管理數據庫連接,完成對數據的CRUD操作;底層的數據層實現對數據記錄的存儲管理;域模型層對傳遞在不同層之間的數據進行封裝,實現數據粗粒度傳遞。該分層模型融入Ajax的Web應用模型設計思想,采用異步通信方式,有力提高了數據訪問效率[3]。同時,每一層對上層提供服務,對下層也是一個服務的對象,各層之間有條不紊地協助完成任務。
2.1 平臺層次架構設計
軟件體系架構是構建軟件系統的基礎,是一系列相關軟件結構設計的抽象模式,用于指導軟件系統各個方面的設計[4-5]。文中基于上述分層模型,設計的古建筑文物展示平臺的架構如圖2所示。

圖2 平臺層次架構圖
其中通過Html或JSP來完成古建筑文物展示平臺的表示層,并將Css/Div、JavaScript、DOM、XMLHttp等Ajax前端技術融合進來,實現了請求信息的異步處理和頁面動態局部更新,進而增強用戶體驗[6];而展示平臺的控制層使用Struts2輕量級框架技術來負責,完成對用戶請求的轉發工作;業務邏輯層通過Spring的IoC容器來有效管理業務Bean,并簡化JavaBean代碼的編寫;同時,展示平臺的數據持久層使用基于ORM思想的Hibernate來進行,以純粹的面向對象的方式來訪問關系數據庫;而數據層則通過常用的關系數據庫工具SQL Server來完成,最后的域模型層使用簡單的POJO來封裝[7]。
這樣的分層設計實現了軟件的合理分工,進而使古建筑文物展示平臺后期的開發和維護工作更為方便、快捷。
2.2 平臺功能模塊設計
該古建筑文物展示平臺主要由兩部分構成:一部分是前臺,另一部分則為后臺。其中前臺是面向普通用戶提供的服務,主要有欣賞古建筑文物,漫游古建筑文物,在線觀賞古建筑文物視頻以及對古建筑文物進行評論等功能;后臺主要完成對古建筑文物信息的管理,包括資料管理、場景漫游管理、視頻和新聞信息管理等,以及通過推薦算法實現主動為不同用戶推薦其可能喜好的古建筑文物等。具體功能模塊設計如圖3所示。

圖3 平臺功能設計圖
其中,頁面基類子模塊包括了用戶基本信息、模塊權限驗證和頁面錯誤處理,模塊權限驗證主要是驗證不同模塊的權限,并將其分配給不同權限的用戶,而頁面錯誤處理是對訪問出錯的頁面進行統一的跳轉處理。普通用戶子模塊中古建筑文物百科是對古建筑文物相關文化知識進行介紹,使用戶對古建筑文物有初步的了解和認識;古建筑文物欣賞是讓用戶多角度全方位來觀賞各種各樣的古建筑文物;古建筑文物查詢能實現用戶對自己感興趣的古建筑文物查詢,可以進行關鍵字查詢或者模糊查詢等;古建筑文物評論是指當用戶觀賞完古建筑文物后可以通過文字或者語音方式來發表自己的評論等。管理員子模塊除了包含對古建筑文物相關內容的管理外還包含了對用戶信息和權限的分配管理等。而且本平臺功能設計的最大特色在于加入了古建筑文物全景漫游功能以及主動推薦服務功能,這樣使身處世界各地的參觀者足不出戶就能快速地在線欣賞甚至漫游自己喜好的中國古建筑文物,實現與中國古建筑文物及文化零距離的接觸。
開發該古建筑文物展示平臺所需硬件配置主要包括高檔微機(CPU類型:酷睿I7處理器,主頻:2.0 GHz,內存類型:DDR3,內存容量:4 GB,獨立顯卡,且顯存容量獨立2 GB)、數碼相機(或全景拍攝器)、掃描儀(或數字化儀)等。軟件配置為Microsoft Windows 8,SQL Server 2008以及S2SH框架所需的環境,如JKD 1.7,MyEclipse 8.5,Struts2,Spring 2,Hibernate 3,jQuery 2.1,Tomcat 6.0等,還有其他一些軟件,如Microsoft Excel 2010,Photoshop 6,Dreamweaver 8,Flash 10,Panorama Studio Pro V2等。
平臺的具體實現過程按照上述設計思路依次進行,其中域模型層使用POJO類來實現對各類數據的封裝,該類只含有與之對應的屬性及get/set方法,而數據層則使用傳統的關系數據庫SQL Server 2008來實現對數據的存儲管理。以下主要論述六層中關鍵的四層即表示層、控制層、業務邏輯層和數據持久層的具體實現。
3.1 平臺表示層實現
表示層主要通過Ajax及JSP技術來實現。其中Ajax是一種新的創建交互式網頁應用的網頁開發技術,這種技術通過在客戶端和服務器間傳輸少量的數據,可以使網頁實現異步更新,這意味著可以在不重新加載整個頁面的情況下對網頁的某部分進行更新,即所謂的局部更新,進而為用戶提供更及時的體驗。它本質是一種RIA的應用,但不是一種新的編程語言,其核心是JavaScript對象XmlHttp[8]。因此該平臺的前端頁面主要使用Ajax,并且使用jQuery.ajax()方法很好地實現前端和后臺的異步通信,避免了同步通信停滯等待的情況發生。而JSP是一種動態頁面技術,它主要目的是將表示邏輯從Servlet中分離出來,其本質是一個簡化了的Servlet設計,所以該平臺后臺的表示邏輯則使用它來完成。為了讓參觀者能在線欣賞古建筑文物全景,增強用戶體驗,文中有效融合Web3D前端技術實現了古建筑文物三維場景漫游,其核心代碼如下:
……
var flashvars={};
var params={};
params.quality="high";
params.bgcolor="#ffffff";
params.allowscriptaccess="sameDomain";
params.allowfullscreen="true";params.base=". ";
var attributes={};
attributes.id="pano";
attributes.name="pano";
attributes.align="middle";
swfobject.embedSWF("2015Panorama_out.swf", "flashContent", "640", "480", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
…… ……
3.2 平臺控制層實現
Struts2是Apache提供的一個開源框架,是在Struts1和WebWork的技術基礎上進行合并的全新的MVC框架,并允許使用普通的、傳統的Java對象作為Action,因此Action編寫簡單且易于測試[9]。Struts2底層以WebWork為核心,采用基于AOP思想的攔截器機制來處理用戶請求。這樣的設計使得業務邏輯控制器能夠與Servlet API完全脫離開,因此該平臺的業務邏輯控制部分即控制層使用Struts2來完成。而且Struts2具有更強大、更易用的輸入驗證功能,并能很好地支持多種表示層技術(如Ajax、JSP等),所以它能有效地將該平臺的表示層和控制層進行集成,有機地實現兩層之間的數據通信,如表示層中用戶登陸時發送的身份校驗信息進入控制層后進行處理的重要代碼如下[10]:
……public class UserAction {
@Resource private UserService userService;
@Resource private UserInfoService userInfoService;
private String userId,userPwd; 省略屬性的getter/setter方法……
public String LoginVerification(){
String loginMassage="";
if(userId.equals("")||userId.equals(null)|| userPwd.equals("")||userPwd.equals(null)){
loginMassage="賬號或密碼不能為空!";}
else{
int id=Integer.parseInt(userId);
User user= userService.getUserByIdAddPwd(id, userPwd); if(user!=null){
ActionContext.getContext().getSession().put("nowLoginUser",user);
return "index";}
loginMassage="賬號和密碼不匹配!";}
ActionContext.getContext().getSession().put("loginMassage",loginMassage);
return "login";
}……
}……
3.3 平臺業務邏輯層實現
Spring是目前主流的一種輕量級應用程序框架,由Rod Johnson在其著作《Expert One-One J2EE Development and Design》中闡述的部分理念和原型衍生而來,它由Spring Core、Spring AOP、Spring Context、Spring DAO、Spring ORM、Spring Web和Spring Web MVC七個模塊組成,其中最核心的是Spring Core模塊。Spring框架目的是簡化傳統J2EE開發過程,讓開發者只關注業務邏輯,而不是框架本身。其首要目標是讓用戶使用POJO作為工作重心,而不是如EJB特殊對象等,通過使用POJO來完成以前只能由EJB完成的事情,因此它的重要精髓在于能夠使用POJO參與到企業服務當中[11]。Spring最重要的作用是使用一致、高效的方法開發應用程序,并整合各種優秀的框架(如Struts2或Hibernate),使之能夠在統一框架中開發優秀的應用程序。由于Spring是一種應用程序框架,因此它貫穿于整個應用程序的各個層面當中,在整個展示平臺及六層架構模型中都起到了舉足輕重的作用,其主要任務是簡化業務邏輯Bean的編寫及對它們的有效管理,其關鍵配置信息如下[12]:
……
……
……
……
……
3.4 平臺數據持久層實現
Hibernate是一個開放源代碼的ORM框架技術,它實現對象和數據庫表、對象屬性和數據庫表列的映射,并實現它們之間的自動轉換工作[13]。Hibernate內部其實輕量級地封裝了JDBC操作,實現底層對關系數據庫的讀寫,上層提供了對實體對象進行保存、更新、刪除、檢索的面向對象的API,這樣使得開發人員可以隨心所欲地使用對象編程思維來操作關系數據庫。而且Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是Hibernate可以在應用EJB的J2EE架構中取代CMP,進而完成數據持久化的重任[14]。由此可見,Hibernate成功地實現透明持久化,并以面向對象的HQL封裝SQL,為開發人員提供了一個簡潔靈活且面向對象的數據訪問接口。所以本平臺使用Hibernate實現持久層,使得開發人員以面向對象的思想進行持久化工作,而不需在對象模型和關系模型之間轉換思維,而這種轉換則由映射文件自動完成,其中古建筑文物AntiqueBuilding.hbm.xml核心配置如下:
……
……
……
對古建筑文物進行展示、保護及傳承是一項復雜而艱巨的工作,目前文物工作者及研究人員主要通過手工人為的方式展開工作,這樣不僅消耗了大量的人力、物力,而且效果不明顯。文中利用分層設計思想,將傳統的Web三層架構擴展為六層模型,并有效結合AS2SH等主流技術構建并實現了古建筑文物展示平臺。實際開發證明,根據該分層模型得到的多層古建筑文物展示平臺與傳統的三層模型比較,具有更好的交互性、擴展性和維護性,同時簡化了程序代碼編寫,縮短了軟件開發時間,提高了軟件開發質量,具體數據如表1所示。

表1 應用兩種不同模型比較
而且,所開發的平臺符合當前古建筑愛好者的需求,讓愛好者們足不出戶就能通過互聯網欣賞到自己喜歡的古建筑文物。這不僅對古建筑文物起到了推廣宣傳作用,而且也為保護和傳承古建筑文物奠定了基礎。
[1] 宋曉紅,袁 慧.三維激光掃描技術在古建筑文物保護中的應用研究[J].測繪技術裝備,2014,16(3):40-42.
[2] 閆宏印,張衛爭,劉超慧.開源框架下Web應用分層的設計與實現[J].計算機工程與設計,2008,29(23):6023-6025.
[3] 諶湘倩,狄文輝,孫 冬.基于SSH框架與AJAX技術的Java Web應用開發[J].計算機工程與設計,2009,30(10):2590-2592.
[4] 李守振,張南平,常國鋒.Web應用分層與開發框架設計研究[J].計算機工程,2006,32(22):274-276.
[5] 李 璟.基于.NET的分層架構及抽象工廠模式在Web開發中的應用[J].軟件導刊,2015,14(4):105-108.
[6] 周相兵,蘭青青,江瑜清.基于分層結構的Web服務與Ajax整合的中間件實現研究[J].計算機應用與軟件,2008,25(11):97-99.
[7] Ren Yongchang,Xing Zhaofeng,Xing Tao,et al.Application research for integrated SSH combination framework to achieve MVC mode[C]//Proc of international conference on computation and information sciences.[s.l.]:[s.n.],2011:499-502.
[8] Ajax Reference Documentation.Introduction to the Ajax[EB/OL].2015.http://www.okajax.com/.
[9] Struts Reference Documentation.Introduction to the Struts fr-amework[EB/OL].2015.http://struts.apache.org/docs/version-notes-218.html.
[10] 楊 力,陳利學,趙永清,等.基于移動代理的Struts2框架[J].計算機工程,2013,39(1):260-263.
[11] Spring Reference Documentation.Introduction to the Spring framework[EB/OL].2015.http://spring.io/docs/reference.
[12] Song Hongwei,Liu Xuning,Lu Aiqin,et al.Design and development of practical course experiment management system[C]//Proc of the 8th international conference on computer science & education.[s.l.]:[s.n.],2013:1217-1220.
[13] Hibernate Reference Documentation.Introduction to the Hibernate framework[EB/OL].2015.http://hibernate.org/orm/documentation.
[14] 沈 磊.基于Struts2和Hibernate的RBAC模型設計與實現[D].南京:南京師范大學,2011.
Research on Platform of Ancient Architecture Heritage Exhibition Based on Layering Model
LIANG Bi,LIU Du-jin
(School of Computer Science,Sichuan University of Arts and Science,Dazhou 635000,China)
Because the traditional method of ancient architecture heritage exhibition cannot meet the needs of modern domestic and foreign visitors,a new six-layer architecture layering model based on the MVC idea and the classical three-layer architecture is proposed,including presentation layer,control layer,domain model layer,business logic layer,data persistence layer and data layer.It constructs the architecture for the platform of ancient architecture heritage exhibition by integrating the S2SH lightweight framework technology and Ajax front-end technology to each layers of the model in this paper,then combines with Web3D and other technologies to implement the platform of ancient architecture heritage exhibition.The actual development indicates the platform based on this model performs well in expansibility,maintenance and interactivity,which changes the method of transmission of ancient architecture heritage and makes the domestic and foreign visitors at home to appreciate the famous ancient architecture heritage in China.
six-layer architecture;ancient architecture heritage;MVC idea;AS2SH;design and implementation
2015-07-19
2015-10-20
時間:2016-03-22
2014年國家檔案局科技項目(2014-X-65);2016年四川省教育科研一般項目(16ZB0362)
梁 弼(1982-),男,講師,碩士,研究方向為智能信息處理與應用軟件。
http://www.cnki.net/kcms/detail/61.1450.TP.20160322.1522.086.html
TP311
A
1673-629X(2016)04-0127-05
10.3969/j.issn.1673-629X.2016.04.028