梁 弼,刘笃晋
(四川文理学院 计算机学院,四川 达州 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