移动校园助手的设计与实现
2017-05-30曾恒刘强李翰聪高沛陈大山汪小桢
曾恒 刘强 李翰聪 高沛 陈大山 汪小桢
【摘 要】文章分析了当前高校校园的信息化建设情况及移动互联网技术的发展现状。基于高校校园师生的信息需求和新兴的智能终端应用技术,充分考虑用户体验方式及網络流量的最大化节约方式,设计并实现了一个基于移动互联网技术的校园助手。文章对校园助手的相关功能进行了分析,并对软件实现涉及的PHP爬虫、Bootstrap、SharedPreference存储、Memcache、Redis消息队列、Laravel模板等关键技术进行了论述。校园助手采用B/S架构,并通过智能手机APP将归集后的信息展示给用户,为师生提供了高效、便捷的服务。
【关键词】校园助手;移动互联网;智能终端
【中图分类号】TP311.52 【文献标识码】A 【文章编号】1674-0688(2017)03-0049-03
0 引言
在当今信息时代,网络技术发展迅速,校园信息化的程度越来越高,学校师生能够使用的信息化资源也越来越多。但目前我国高校的校园数字化资源普遍存在信息比较分散的问题,各类信息分布在教务系统、图书借阅系统、水电管理系统及院系QQ和微信群等。如何整合这些独立的数字化资源,并通过统一的接入平台为校园生活提供应用服务已成为一个急需解决的问题。此外,目前高校师生中使用智能手机已经非常普及,基于移动互联网的应用有了良好的生存环境。
1 系统分析
1.1 系统总体架构
整个软件系统采用B/S架构,基于Internet实现。主要是由服务器端、WEB客户端及智能手机应用APP客户端(包括Android客户端、ios客户端)3个部分组成。服务器端由数据库服务器集群和WEB服务器组成,数据库服务器集群与各类应用的数据库建立联系,并保持同步。WEB客户端和智能手机客户端向服务器端发送数据请求,WEB服务器端快速响应,与数据库集群交互并获取数据后,向客户端返回请求数据。若用户为首次使用该系统时,则需要输入账号密码进行认证,系统将向学校数据中心请求认证,认证通过后,数据从服务器端缓存到本地,从而解决了部分服务器不稳定带来的困扰。同时,考虑到应用的稳定性,校园助手的数据库采用MYSQL主从服务进行负载均衡的方式读取存储数据。
1.2 功能需求分析
校园助手主要是方便高校师生对各类學习与生活信息进行有效的收集与分析,从而更好地规划自己的教学与学习生活。随着网络技术的快速发展及国家层面对社会信息化的总体规划,高校各类信息化应用如雨后春笋般出现——教务信息系统、考试系统、作业系统、后勤管理系统、财务管理系统、学籍管理系统等,而且各个系统的用户名、密码又不同,给学生、教师的生活带来了诸多不便。因此,有需求开发一个方便高校师生在校内学习和生活的移动应用APP,其功能涵盖高校信息化的方方面面,实现一个平台访问各类功能。
1.3 业务流程分析
校园助手的主要用户分为教师和学生两大类,为了方便管理,需要对用户的应用流程进行优化,不同类型的用户采用统一入口。用户的业务操作流程如下:启动APP—APP登录界面—认证—APP主界面—选择功能—获取数据。
当用户选择相应的功能后,将调用应用API接口,与服务器端进行交互,通过服务器端获取校内各部门、各应用的数据。APP用户要获取其他类型的数据时,只需要返回APP主界面选择相应的功能即可,用户根本无法察觉数据的不同来源,能给用户带来良好的体验。
2 系统设计与实现
2.1 系统主要功能设计
校园助手软件功能模块图如图1所示。根据师生需求的不断变化,软件功能也在不断地更新中。软件主要包括学校通知、课表信息查询、考试信息、网上作业、电费查询、二手市场等功能,软件实现了各类信息的归集,并且根据不同用户的需求直接将相关信息推送给用户,实现了个性化服务,极大地提高了师生学习与工作的效率和质量。
2.2 系统实现的关键技术
智能终端APP的客户端采用广为流行的Android平台及苹果ios平台,同时还可以为学生中的开发爱好者提供接口。客户端与服务端的交互采用可靠的https协议。交互的数据形式采用简单并高效的Json封装格式,方便了各个平台的扩展。
2.2.1 校内信息获取方式
对于校内信息获取,我们通过PHP爬虫的方式模拟用户请求后台登录部分信息系统进行数据获取,随着用户量的增加及部分信息系统存在不稳定性,通过爬虫获取数据的方式已经不能满足业务需要。在获得学校授权后,通过直接访问相应管理部门的数据库,并对数据库进行缓存,后台通过ResfulAPI提供数据接口,各个终端获取数据通过该接口即可。一方面简化了各个移动终端的开发难度,另一方面通过数据的缓存,解决了信息系统运行不稳定的问题。
2.2.2 Bootstrap
通过对用户的调研,软件采用WEB和移动APP双平台的方式进行服务。WEB端前端框架采用开源的框架bootstrap,该框架在业内以良好的浏览器兼容性著称,并能在PC端及移动端以各种分辨率良好地显示。WEB端后端为保障服务质量,我们对Bootstrap进行优化,采用内、外网分离的模式,其中内网服务器负责采集数据并用Mysql数据库下二进制流的方式同步到外网服务器,用户对信息的获取在外网服务器上进行,此举能更好地保证数据录入的稳定及获取的高效。
2.2.3 SharedPreference存储
校园助手采用SharedPreference来存储一般数据,例如APP打开的时间与次数,而对于用户的信息和成绩信息等复杂的数据,校园助手采用面向对象的思想将这些实体进行序列化后进行传输,具体表现为使用orm思想与sqlite数据库进行存储,这样能够有效地保证数据访问的准确性和效率性。在网络请求方面,校园助手使用线程池维护异步的Http请求,保证Ui主线程不被阻塞且数据能够及时被获取,获取到信息后,校园助手使用Handler进行Ui线程的更新,此举可保证不会出现ANR。
2.2.4 Memcache缓存系统
Memcache是一个高性能的分布式的內存对象缓存系统,它能够用来存储各种格式的数据,其工作流程如下:先检查客户端的请求数据是否在memcached中,如果请求的数据在,则直接返回请求数据,不再对数据库进行任何操作;如果请求的数据不存在,则在数据库中获取相应的数据,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中;每次更新数据库的同时,也要更新memcached中的数据,保证数据的一致性;当分配给memcached的内存空间用完之后,会使用LRU策略与到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。
2.2.5 Redis消息队列
经测试,利用校园助手为所有用户推送同一条消息时,会占用很大的内存,考虑到活跃用户,校园助手只处理登录用户,至于未登录用户,校园助手会推迟到用户下次登录时再处理。当大量用户同时登录的时候,如果全部即时处理,则系统容易崩溃。因此,校园助手使用一个Redis队列来保存待处理的登录用户,如此一来,虽然牺牲了一小部分的功能,但却保证了系统的稳定性。Redis的LIST数据类型便可以很自然地创建一个这样的队列。
2.2.6 Laravel+Angularjs+Bootstrap+AdminLTE
校园助手的后台采用了Laravel Angular Admin,它是一个后台模板,使用了Gulp工作流,并且支持 OAuth和JWT认证,此外还可使用Dingo API实现了Restful API,还用到了Restangular和UI-Router;在权限控制方面,使用了Romanbican/Roles和Angular ACL。
2.2.7 移动应用的相关技术
在移动终端,软件采用了部分开源技术,如课表、成绩等加载动画时的自定义view的方法;用ButterKnife框架和Retrofit2 OkHttp RxJava Gson构建网络加载、数据解析、异常统一处理;图片加载方面,采用Picasso的图像加载框架;处理APP闪退问题时,通过采用“腾讯”的x5内核,使用LeakCanary解决了内存泄露造成的闪退问题。这些开源技术的应用,保证了服务的高可用性。
3 结论
在校园助手设计方案的实现过程中,我们遇到了种种困难,通过对移动互联网技术的深入研究,最终成功地解决了问题。WEB应用和手机APP在国内各大软件应用市场上线,并在湖南工业大学成功投入应用。目前,用户已经突破20 000人,涵盖了学校1/3的师生。基于移动APP的特殊性,校园助手的版本不断地迭代更新,使用的技术也不断地突破进步,功能逐步增加。软件已经基本满足了师生的各种信息化服务需求,对高校数字化校园建设起到了很好的规范作用。后期,我们将考虑将软件进一步标准化并推向市场,从而为更多的高校师生提供便利的服务。
参 考 文 献
[1]万华明,孙芳芳,蒋雪明,等.文化特色街区网络多导系统技术架构研究[J].苏州科技学院学报(自然科学版),2016(12).
[2]曾超.高校学生学习社交综合平台的设计与实现[D].北京:北京交通大学,2015.
[3]李伟阳.基于开源技术的网络互动社区平台的技术实现[J].科技信息,2012(8).
[4]杨立身,曹志义.內存缓存技术在门户网站开发中的应用研究[J].电脑知识与技术,2008(9).
[5]肖宏.基于海量数据的存储与实时事件发现系统的设计与实现[D].北京:北京邮电大学,2010.
[6]王欣.跨平台移动应用研究与实现[D].北京:北京邮
电大学,2012.
[7]胡世港,田樱,王亮.高职院校移动学习考试平台建设中的问题与对策[J].电脑知识与技术,2016(23):95-
96,107.
[责任编辑:钟声贤]