古建筑文物展示平台研究
古建筑文物是历史文化的载体,也是历史文明最真实的记录,
它作为中华民族五千年历史的见证者,不仅具有较高的艺术价值和
文化价值,还标志着中国历史的发展与进步以及古人的智慧和才能,
如绵延万里的长城,建于隋代的安济桥,明清两代的故宫,成都的
武侯祠,达州的渠县汉阙等。可以毫不过分地说古建筑文物的造型
在一定程度上体现了一个国家的国力,自然应该使用现代新兴技术
加以展示、推广和传承,让更多国内外人士了解和认识中国各式各
样的古建筑文物及历史文化。然而,传统古建筑文物的展示方式由
于受到时间和空间限制已经无法满足现代国内外参观者的需求,伴
随着现代信息传播方式的发展,古建筑文物网站、数字化古建筑文
物、虚拟古建筑文物以及智慧古建筑文物等正在探索与实践。本文
采用一种改进的Web分层模型,并有效结合Ajax、S2SH和XML等
主流技术,同时融合Web3D虚拟现实等技术一起来构建古建筑文物
展示平台,其目的是使古建筑文物传播方式有跨越式的进步,让国
内外参观者足不出户就能欣赏到中国各地著名的古建筑文物,并有
身临其境的感受。
1分层模型设计
目前主流的软件体系架构是三层架构,即表示层、业务逻辑层
和数据访问层,这种典型的三层架构只适用于小规模的软件开发,
而对于中大规模软件研究及开发已经力不从心。为了充分体现软件
分而治之的设计理念,实现软件高内聚低耦合的目标,本文将MVC
思想和经典三层架构有效结合起来,构建了六层Web应用架构的分
层模型,即表示层、控制层、域模型层、业务逻辑层、数据持久层、
数据层,具体如图1所示。在此分层模型中表示层负责与用户交互,
并把用户提交的请求信息传递给控制层;控制层负责对传递过来的
用户请求进行分发派遣,但它不包含任何业务逻辑处理;而业务逻
辑层则专门用于实现具体的业务逻辑功能;数据持久层用于建立和
管理数据库连接,完成对数据的CRUD操作;而底层的数据层则实
现对数据记录的存储管理;域模型层用于对传递在不同层之间的数
据进行封装,实现数据粗粒度传递。并且该分层模型融入Ajax的
Web应用模型设计思想,采用异步通信方式,有力提高了数据访问
效率。同时,每一层对上层提供服务,对下层也是一个服务的对象,
各层之间有条不紊地协助完成任务。
2古建筑文物展示平台设计
2.1平台层次架构设计软件体系架构是构建软件系统的基础,是
一系列相关软件结构设计的抽象模式,用于指导软件系统各个方面
的设计。本文基于上述所设计的分层模型,将古建筑文物展示平台
的架构设计如下图2所示。其中通过Html或JSP来完成古建筑文物
展示平台的表示层,并将Css/Div、JavaScript、DOM、XMLHttp等
Ajax前端技术融合进来,实现了请求信息的异步处理和页面动态局
部更新,进而增强用户体验;而展示平台的控制层使用Struts2轻量
级框架技术来负责,完成对用户请求的转发工作;业务逻辑层通过
Spring的IoC容器来有效管理业务Bean,并简化JavaBean代码的编
写;同时,展示平台的数据持久层使用基于ORM思想的Hibernate
来进行,以纯粹的面向对象的方式来访问关系数据库;而数据层则
通过常用的关系数据库工具SQLServer来完成,最后的域模型层使
用简单的POJO来封装。这样的分层设计实现了软件的合理分工,进
而使古建筑文物展示平台后期的开发和维护工作更为方便、快捷。
2.2平台功能模块设计本古建筑文物展示平台主要由两部分构成,
一部分是前台,另一部则为后台。其中前台是面向普通用户提供的
服务,主要有欣赏古建筑文物,漫游古建筑文物,在线观赏古建筑
文物视频以及对古建筑文物进行评论等功能;后台主要完成对古建
筑文物信息的管理,包括资料管理,场景漫游管理,视频和新闻信
息管理等,以及通过推荐算法实现主动为不同用户推荐其可能喜好
的古建筑文物等,具体功能模块设计如下图3所示。其中,页面基
类子模块包括了用户基本信息、模块权限验证和页面错误处理,模
块权限验证主要是验证不同模块的权限,并将其分配给不同权限的
用户,而页面错误处理是对访问出错的页面进行统一的跳转处理。
普通用户子模块中古建筑文物百科是对古建筑文物相关文化知识进
行介绍,使用户对古建筑文物有初步的了解和认识;古建筑文物欣
赏是让用户多角度全方位来观赏各种各样的古建筑文物;古建筑文
物查询能实现用户对自己感兴趣的古建筑文物查询,可以进行关键
字查询或者模糊查询等;古建筑文物评论是指当用户观赏完古建筑
文物后可以通过文字或者语音方式来发表自己的评论等。管理员子
模块除了包含对古建筑文物相关内容的管理外还包含了对用户信息
和权限的分配管理等。而且本平台功能设计的最大特色在于加入了
古建筑文物全景漫游功能以及主动推荐服务功能,这样使身处世界
各地的参观者足不出户就能快速地在线欣赏甚至漫游自己喜好的中
国古建筑文物,实现与中国古建筑文物及文化零距离的接触。
3古建筑文物展示平台实现
开发本古建筑文物展示平台所需硬件配置主要包括高档微机
(基本要求为CPU类型:酷睿i7处理器,主频:2.0GHz,内存类型:
DDR3,内存容量:4GB,独立显卡,且显存容量独立2GB)、数码相
机(或全景拍摄器)、扫描仪(或数字化仪)等。软件配置为
MicrosoftWindows8,SQLServer2008以及S2SH框架所需的环境,如
JKD1.7,MyEclipse8.5,Struts2,Spring2,Hibernate3,jQuery2.1,
Tomcat6.0等,还有其他一些软件,如MicrosoftExcel2010,
Photoshop6,Dreamweaver8、Flash10、PanoramaStudioProV2等。平
台的具体实现过程按照上述设计思路依次进行,其中域模型层使用
POJO类来实现对各类数据的封装,该类只含有与之对应的属性及
get/set方法,而数据层则使用传统的关系数据库SQLServer2008来
实现对数据的存储管理,以下主要论述六层中关键的四层即表示层、
控制层、业务逻辑层和数据持久层的具体实现。
3.1平台表示层实现本平台的表示层主要通过Ajax及JSP技术来
实现,其中Ajax是一种新的创建交互式网页应用的网页开发技术,
这种技术通过在客户端和服务器间传输少量的数据,可以使网页实
现异步更新,这意味着可以在不重新加载整个页面的情况下对网页
的某部分进行更新,即所谓的局部更新,进而为用户提供更及时的
体验,它本质是一种RIA的应用,但不是一种新的编程语言,其核
心是JavaScript对象XmlHttp。因此本平台的前端页面主要使用Ajax,
并且使用jQuery.ajax()方法很好地实现前端和后台的异步通信,避免
了同步通信停滞等待的情况发生。而JSP是一种动态页面技术,它
主要目的是将表示逻辑从Servlet中分离出来,其根本是一个简化了
的Servlet设计,所以本平台后台的表示逻辑则使用它来完成。并且
为了让参观者能在线欣赏古建筑文物全景,增强用户体验,本文有
效融合Web3D前端技术实现了古建筑文物三维场景漫游,其核心代
码。
3.2平台控制层实现Struts2是Apache提供的一个开源框架,是
在Struts1和WebWork的技术基础上进行合并的全新的MVC框架,
并允许使用普通的、传统的Java对象作为Action,因此Action编写
简单而且易于测试。它底层以WebWork为核心,采用基于AOP思
想的拦截器机制来处理用户的请求,这样的设计使得业务逻辑控制
器能够与ServletAPI完全脱离开,因此本平台的业务逻辑控制部分
即控制层使用Struts2来完成。而且Struts2具有更强大、更易用的
输入验证功能,并能很好支持多种表示层技术(如Ajax、JSP等),
所以它能有效将本平台的表示层和控制层进行集成,有机地实现两
层之间的数据通信,如表示层中用户登陆时发送的身份校验信息进
入控制层后进行处理的重要代码。
3.3平台业务逻辑层实现Spring是目前主流一种轻量级应用程序
框架,由RodJohnson在其著作ExpertOne-
OneJ2EEDevelopmentandDesign中阐述的部分理念和原型衍生而来,
它由SpringCore、SpringAOP、SpringContext、SpringDAO、
SpringORM、SpringWeb和SpringWebMVC七个模块组成,其中最核
心的是SpringCore模块。Spring框架目的是简化传统J2EE开发过程,
让开发者只关注业务逻辑,而不是框架本身,其首要目标是让用户
使用POJO作为工作重心,而不是如EJB特殊对象等,通过使用
POJO来完成以前只能由EJB完成的事情,因此它的重要精髓在于能
够使用POJO参与到企业服务当中[11]。而且Spring的最重要作用是
使用一致、高效的方法开发应用程序,并整合各种优秀的框架(如
Struts2或Hibernate),使之能够在统一框架中开发优秀的应用程序。
由于Spring是一种应用程序框架,因此它贯穿于整个应用程序的各
个层面当中,在整个展示平台及六层架构模型中都起到举足轻重的
作用,其主要任务是简化业务逻辑Bean的编写及对他们的有效管理,
其关键配置信息如下。