论文部分内容阅读
随着信息技术的迅速发展,数字校园已成为高校信息化建设发展的趋势和学校现代化的标志。数字校园建设为高校学生与教师的学习生活带来了深刻的影响,它正在改变着学校原有的管理、教学和办公模式。北京师范大学数字校园信息服务从师生需求出发,结合当代移动应用技术,自主开发了基于Jquery Mobile技术的数字校园移动应用。该应用包含了通知公告、校园卡移动充值、教师信息查询、数字校园地图、校内电话黄页五大模块。数字校园移动应用的推出,受到校园广大师生的一致认可,以校园卡充值为例,学生仅需在手机上即可完成转账充值,同时也节省了教职员工的管理成本与沟通成本。
一、前端架构
该应用包括IOS和Android两个版本。由于采用Jquery Mobile和Cordova技术,该应用在平台间的移植成本相对较低。
Jquery作为世界知名框架驱动着 Internet 上的大量网站,在浏览器中提供动态用户体验。在移动互联时代的今天,jQuery 团队引入了 jQuery Mobile(或 JQM)。JQM 的使命是向所有主流移动浏览器提供一种统一体验,使整个 Internet 上的内容更加丰富。WebKit 是一个开源项目,其起源可追溯到K Desktop Environment (KDE)。WebKit 项目催生了面向移动设备的现代 Web 应用程序。目前IOS和Android的内置浏览器组件均使用WebKit内核,而JQM对于WebKit的支持非常完善。 JQM目前可以支持多种移动设备,iPhone、iPod Touch、iPad、Android、Blackberry、Palm、Nokia塞班三代等。
PhoneGap是一个用基于HTML,CSS和JavaScript的创建移动跨平台移动应用程序的快速开发平台,后贡献给Apache后更名为Cordova。它使开发者能够利用JS和HTML来访问包括地理定位,加速器,联系人,声音和振动等功能,其拥有丰富的插件,可以以此扩展无限的功能。Cordova是免费的,但是它需要特定平台提供的附加软件,例如iPhone的iPhone SDK,Android的Android SDK等。尽管使用Cordova仍然需要为每个平台分别编译应用程序,但是其基本代码是一样的。
二、后端架构
后端架构业界包括以PHP、Python、Ruby、NodeJS等弱类型语言为代表的架构,与之相对应的还有以C#和JAVA为代表的强类型语言架构。由于数字校园移动应用的受众都是在校学生和教师,因此在高校中我们并不需要采用NodeJS这样适合大并发的架构,也不需要采用Mongodb这样的大型NoSQL数据库。因此我们采用了适合校情特点的ASP.NET MVC 4.0 结合 DbEntry ORM作为基础后端架构。如今ASP.net 已经很好的移植到了Mono平台上,在Mono 3.0发布之际,这种后端架构的也具有如同JAVA一样优秀的跨平台特性。
DbEntry 是梁立峰老师从2005年开始研究开发的开源ORM产品,是国产ORM的佼佼者,很适合跨平台数据库开发。尤其是其具有良好的Emit特性,使得其可以在不引用任何数据库组件的情况下完成数据库的CURD。DbEntry与EntityFrameworkCodeFirst具有设计理念上的本质不同。DbEntry采用富血模型,著名软件工程师马丁曾经对富血模型大加赞誉,其本质的思路是用户操作数据库的行为要包含在数据库模型之内。比如Save,Delete需要包含在数据库模型本身里面。而EF5.0本身的设计思路是贫血模型,尽管加入了Attribute的特性。贫血模型在大型工程上更加便于分块使用,可以减少代码耦合,但是不利于小型项目的集成开发,会徒增工作量。此外,DbEntry对组合查询支持得非常完善,而EF5.0需要借助LinqKit等工具去组合Lambda表达式树,非常不利于通用查询模型的开发。
ASP.net MVC产品是微软继ASP.net FORM 之后又一顺应潮流的力作,其采用的Razor模板引擎技术大大方便了开发者的开发,结合linq技术,使得C#在前端页面开发的便捷性上略胜Java structs一筹。
三、前端优化
在前端优化方面,我们也做了大量的实践。在采用Cordova方案之前,参照HTML5的Manifest缓存技术,我们开发了基于Manifest的缓存框架,但是由于AppStore禁止壳模式应用的上线,因此缓存模式只能在其他平台上予以实践。利用HTML5的Manifest Callback技术,在下载缓存文件的时候更新进度条,利用CSS3技术制作进度条的进度展示。缓存内容包含JS文件和图片文件。当缓存结束之后自动跳转到相关首页。每一次更新缓存的时候需要更新缓存文件,客户端再次访问的时候会自动访问更新缓存。以保障客户端的随时更新。
缓存文件用例如下:
CACHE MANIFEST
# VERSION 1209
CACHE:
sipo/www_dc9_cn.png
js/main.js
css/layout.css
NETWORK:
http://*
FALLBACK:
/404.html
Jquery Mobile与SenchaTouch等其他框架的不同在于,其采用分页结构。在页面间过渡跳转的时候会有闪屏的现象(Android的闪屏现象比IOS更加明显),由于这一特点,在使用的过程中,我们需要禁用其页面过渡效果。此外由于采用Cordova架构,所有的REST请求需要Ajax化,这也就要求所有的后端服务接口均需要采用Json序列化输出。Jquery Mobile本身有许多不完善的地方,比如,没有内建的分页机制。列表在Ajax重新载入的时候需要重新刷新等等。
四、后端优化
在移动端对于效率有较高的要求,因此我们采用HTTPFilter进行后端优化。全部数据传输采用GZip压缩传输,并且开启ETAG缓存方案,记录文件的上次缓存时间和缓存信息,根据文件的更改信息实时更新校验码。
校园卡充值与教师信息查询模块通过相应的REST JSON协议与其它数字校园应用进行通信,实时进行相关业务的操作,保证了实时性与安全性。校园地图模块中的图层使用LocalStorage进行分片存储,从而加快第二次访问速度,但由于UIWebView组件对缓存的支持不理想,因此该缓存方案在部分平台上未能生效。
五、未来与展望
给予Jquery Mobile的移动应用在用户体验上存在着一定的问题,与原生应用相比较有反应迟缓的弊端。随着数字化校园的进一步推进,在加大研发成本投入的情况下,采用跨平台的原生解决方案是未来的移动校园的必由之路,但随之也会带来后期维护成本增大等一系列问题。因此是保证用户体验,还是保证可用性是个仁者见仁智者见智的事情。根据美国数字校园移动应用的形势来看,采用超低成本的Jquery Mobile进行跨平台研发的仍然占了大多数。因此如何进行现有架构的改造,如何结合原生应用开发更适合更好的产品,是高校信息化需要一直探讨解决的问题。
一、前端架构
该应用包括IOS和Android两个版本。由于采用Jquery Mobile和Cordova技术,该应用在平台间的移植成本相对较低。
Jquery作为世界知名框架驱动着 Internet 上的大量网站,在浏览器中提供动态用户体验。在移动互联时代的今天,jQuery 团队引入了 jQuery Mobile(或 JQM)。JQM 的使命是向所有主流移动浏览器提供一种统一体验,使整个 Internet 上的内容更加丰富。WebKit 是一个开源项目,其起源可追溯到K Desktop Environment (KDE)。WebKit 项目催生了面向移动设备的现代 Web 应用程序。目前IOS和Android的内置浏览器组件均使用WebKit内核,而JQM对于WebKit的支持非常完善。 JQM目前可以支持多种移动设备,iPhone、iPod Touch、iPad、Android、Blackberry、Palm、Nokia塞班三代等。
PhoneGap是一个用基于HTML,CSS和JavaScript的创建移动跨平台移动应用程序的快速开发平台,后贡献给Apache后更名为Cordova。它使开发者能够利用JS和HTML来访问包括地理定位,加速器,联系人,声音和振动等功能,其拥有丰富的插件,可以以此扩展无限的功能。Cordova是免费的,但是它需要特定平台提供的附加软件,例如iPhone的iPhone SDK,Android的Android SDK等。尽管使用Cordova仍然需要为每个平台分别编译应用程序,但是其基本代码是一样的。
二、后端架构
后端架构业界包括以PHP、Python、Ruby、NodeJS等弱类型语言为代表的架构,与之相对应的还有以C#和JAVA为代表的强类型语言架构。由于数字校园移动应用的受众都是在校学生和教师,因此在高校中我们并不需要采用NodeJS这样适合大并发的架构,也不需要采用Mongodb这样的大型NoSQL数据库。因此我们采用了适合校情特点的ASP.NET MVC 4.0 结合 DbEntry ORM作为基础后端架构。如今ASP.net 已经很好的移植到了Mono平台上,在Mono 3.0发布之际,这种后端架构的也具有如同JAVA一样优秀的跨平台特性。
DbEntry 是梁立峰老师从2005年开始研究开发的开源ORM产品,是国产ORM的佼佼者,很适合跨平台数据库开发。尤其是其具有良好的Emit特性,使得其可以在不引用任何数据库组件的情况下完成数据库的CURD。DbEntry与EntityFrameworkCodeFirst具有设计理念上的本质不同。DbEntry采用富血模型,著名软件工程师马丁曾经对富血模型大加赞誉,其本质的思路是用户操作数据库的行为要包含在数据库模型之内。比如Save,Delete需要包含在数据库模型本身里面。而EF5.0本身的设计思路是贫血模型,尽管加入了Attribute的特性。贫血模型在大型工程上更加便于分块使用,可以减少代码耦合,但是不利于小型项目的集成开发,会徒增工作量。此外,DbEntry对组合查询支持得非常完善,而EF5.0需要借助LinqKit等工具去组合Lambda表达式树,非常不利于通用查询模型的开发。
ASP.net MVC产品是微软继ASP.net FORM 之后又一顺应潮流的力作,其采用的Razor模板引擎技术大大方便了开发者的开发,结合linq技术,使得C#在前端页面开发的便捷性上略胜Java structs一筹。
三、前端优化
在前端优化方面,我们也做了大量的实践。在采用Cordova方案之前,参照HTML5的Manifest缓存技术,我们开发了基于Manifest的缓存框架,但是由于AppStore禁止壳模式应用的上线,因此缓存模式只能在其他平台上予以实践。利用HTML5的Manifest Callback技术,在下载缓存文件的时候更新进度条,利用CSS3技术制作进度条的进度展示。缓存内容包含JS文件和图片文件。当缓存结束之后自动跳转到相关首页。每一次更新缓存的时候需要更新缓存文件,客户端再次访问的时候会自动访问更新缓存。以保障客户端的随时更新。
缓存文件用例如下:
CACHE MANIFEST
# VERSION 1209
CACHE:
sipo/www_dc9_cn.png
js/main.js
css/layout.css
NETWORK:
http://*
FALLBACK:
/404.html
Jquery Mobile与SenchaTouch等其他框架的不同在于,其采用分页结构。在页面间过渡跳转的时候会有闪屏的现象(Android的闪屏现象比IOS更加明显),由于这一特点,在使用的过程中,我们需要禁用其页面过渡效果。此外由于采用Cordova架构,所有的REST请求需要Ajax化,这也就要求所有的后端服务接口均需要采用Json序列化输出。Jquery Mobile本身有许多不完善的地方,比如,没有内建的分页机制。列表在Ajax重新载入的时候需要重新刷新等等。
四、后端优化
在移动端对于效率有较高的要求,因此我们采用HTTPFilter进行后端优化。全部数据传输采用GZip压缩传输,并且开启ETAG缓存方案,记录文件的上次缓存时间和缓存信息,根据文件的更改信息实时更新校验码。
校园卡充值与教师信息查询模块通过相应的REST JSON协议与其它数字校园应用进行通信,实时进行相关业务的操作,保证了实时性与安全性。校园地图模块中的图层使用LocalStorage进行分片存储,从而加快第二次访问速度,但由于UIWebView组件对缓存的支持不理想,因此该缓存方案在部分平台上未能生效。
五、未来与展望
给予Jquery Mobile的移动应用在用户体验上存在着一定的问题,与原生应用相比较有反应迟缓的弊端。随着数字化校园的进一步推进,在加大研发成本投入的情况下,采用跨平台的原生解决方案是未来的移动校园的必由之路,但随之也会带来后期维护成本增大等一系列问题。因此是保证用户体验,还是保证可用性是个仁者见仁智者见智的事情。根据美国数字校园移动应用的形势来看,采用超低成本的Jquery Mobile进行跨平台研发的仍然占了大多数。因此如何进行现有架构的改造,如何结合原生应用开发更适合更好的产品,是高校信息化需要一直探讨解决的问题。