APP下载

基于Android平台的学生成绩推送系统的研究与设计

2015-04-16付娟娟

电脑与电信 2015年8期
关键词:代理服务器客户端终端

付娟娟

(周口师范学院计算机学院,河南 周口 466001)

1 引言

智能化移动终端的使用已经普及,智能手机在高校学生中也占有了很大的市场份额。因此,如何充分及时有效地通过推送技术将学生最新的成绩信息以及学校最新的资讯即时发送到手机上,不再需要学生通过电脑不停刷新来检查服务器更新,这种便捷、及时、有效的信息推送应成为学校所关注的重要问题。建立一个以Push为技术支持的学生成绩推送管理平台,实现服务器将成绩信息推送至手机终端,减少了用户手动查询或检查信息更新的繁琐,还为学校信息发布、统一管理提供了便利。本文设计与实现了基于该平台的学生成绩推送系统。

2 系统采用的关键技术

2.1 消息中间件的发布订阅模型

在发布订阅模型中,采用分层结构中的内容作为主题把点对点模型里仅有的一个目的地给替换掉,这种通信方式采取松耦合、不同步的模式[1]。发布某个主题供多个应用程序进行订阅,而对于其它应用程序却不知道发送方是谁。先将一个主题发送给接收方去订阅,消息中间件再作为代理服务器将该主题里的消息发送给全部订阅方。

2.2 SharedPreferences数据存储

SharedPreferences采用的“键-值”对方式是Android系统采取的五种数据存储方式中能够存储配置相对简单的一种“轻量级”机制,使用Map数据结构将数据存储到程序apk的安装目录下的XML文件中,这种存储方式实现比较简单,常用来实现密码设置或发布/订阅的配置[2]。

2.3 通信协议

采用IBM开发的MQTT协议根据主题作为订阅者与发布者的连接,完成通信的发布和订阅。利用MQTT协议,代理服务器broker作为发布者可以用订阅的不同层次需求的信息准确地发送到订阅者的手机里[3]。这种轻量级的即时通讯协议使用发布/订阅的消息传递模式,允许一条消息只发布一次,即可被多个应用程序/设备所接收,实现系统间的松耦合,简化了系统开发,具有很强的扩展能力;不同的手机客户端只要连接上服务器,可以告诉服务器自己需要接收哪些消息,未订阅的信息就不会接收过来。在移动设备使用上节省电量,提供一对多的消息发布,采用TCP/IP提供网络连接,还应用于低带宽、不可靠连接、低CPU内存资源消耗上。

3 成绩推送系统设计与分析

3.1 需求分析

传统的查询模式只能通过有线网络自主查阅,但缺乏统一的管理,缺乏实时性与便捷性,无法防止信息泄露。因此,针对系统中采用的Android移动服务体系,根据学校面向学生进行的信息推送,并结合客户端的实际需要,可通过应用服务器、手机客户端和代理服务器来完成整个流程。应用服务器负责推送学生成绩及Android客户端程序的控制管理,以Android Notification的方式提示学生终端。手机客户端则用来接收院系部门发来的新闻消息或对服务器命令的应答,并向用户提供一个查看、搜索模块。

3.2 成绩查询系统整体结构

结合学校学生成绩传送需求并考虑移动智能终端的特性,选用发布-订阅机制与智能终端保持网络通讯协议的长连接完成数据推送过程中的网络通信。整个系统主要包括应用服务器、移动手机客户端和代理服务器。代理服务器(即中间件)将智能终端订阅的主题发送给管理端(即信息发布方)从而得到信息反馈,来实现对智能终端的远程管理和发布命令。而系统中代理服务器则实现信息的实时推送,接收来自应用服务器发布过来的信息并将其保存,然后再推送给手机客户端。应用服务器不但可以当作Web服务器,还能当作手机客户端回复信息的订阅方。系统的框架图如下图1所示:

图1 系统架构图

3.3 应用服务器的设计

结合系统的总体结构分析,构建应用服务器所需的系统数据库如表1所示:

表1 系统数据库说明

其中,成绩信息记录表,其包含的字段有学号(主键)、姓名、课程名、成绩、所属院系、发布人、发布时间和点击数。学生通过网页或手机客户端浏览查看成绩记录表,它保存了管理员发布的所有院系的各科成绩信息。

使用PHP开发的应用程序需要基于Web服务,其工作流程是:PHP应用程序服务器运行时要与Web服务器协同工作,当客户端在浏览器中输入对以.php为扩展名的网页请求时,浏览器会把请求传递到Web服务器,这个请求要适当地包含被请求的页面;Web服务器在自己的系统里查询并识别该扩展名,再将查询到的整个页传送给PHP应用程序服务器。服务器会针对文件源代码进行编码转换,再作为响应发送到用户客户端。

3.4 代理服务器

代理服务器(即中间件)将智能终端订阅的主题发送给管理端(即信息发布方)从而得到信息反馈,来实现对智能终端的远程管理和发布命令[4]。应用服务器根据智能终端订阅的特定主题,用来接受从客户端返回的信息。其中,加入代理服务器使得管理端与智能终端在空间、时间和控制流上的通信完全解耦,这种方式对于移动网络的高度动态环境特别适用,为参与通信的双方进行消息传递提供高效可靠的推送服务。由于系统中存在大量的订阅与发布,代理服务器需要具备的功能如图2所示:

图2 代理服务器结构

3.5 手机客户端的设计

对于手机客户端需要构建成绩信息表和推送日志记录表来存储数据信息。其中,成绩信息记录表包含学生学号、姓名、课程名、成绩、发布人和发布时间等。推送日志记录表包含推送指令、推送内容、推送时间、终端反馈时间及反馈结果这些内容完整记录了成绩信息的整个推送过程,也包括了客户端接收信息后的反馈结果。不但方便查看记录,还为以后软件升级提供了依据。

在Android中,用户登录及密码修改需要对某些很小型的数据或软件的参数进行保存,我们也可借助SharedPreferences类将密码保存到XML文件中。在启动登陆界面的时如开启了用户的自动登陆功能,则直接进入系统,并把flag的值改为1,若在默认状况或关闭自动登录时,把flag设为0。在Activity组件中,利用onResume()方法先确定标志flag是否为1,如果是,则取出用户名和密码进行自动登录[5]。

4 成绩推送系统的功能实现

4.1 应用服务器的实现过程

(1)登录验证模块

管理员登陆系统模块进入后台管理时,需要用到session来实现信息的安全性。当登录成功后,账号、密码等个人信息及权限都会存放到变量$_session中,登陆密码要经过MD5编码后存入数据库,对密码的输入及验证都要进行编码转换。当管理登录成功后,多个Web页面在应用程序中随意切换,session对象所存储的变量将一直随着会话保存而不会丢失。

(2)终端管理模块

终端管理模块是院系管理员用来添加本院系学生的Android终端,并通过手机的唯一识别IMEI与学生信息表相关联,而IMEI也是Android信息表的主关键字,管理员利用它查询到学生手机终端的学号、手机型号、手机号、SIM卡更换时间等等,再由信息表里的学号关联到学生的基本情况信息表,实现对学生添加、删除或更改等操作。

(3)推送管理模块

管理员在确定客户端所订阅的主题后,根据对应的ID、课程名、成绩、发布时间、所属院系等信息构造推送的消息。要把消息发布到departments院系表里需要连接MQTT服务器并调用SAMConnection类中的Connect函数与Send函数,再由代理服务器把该消息的ID、课程名及成绩推送到订阅该主题的学生客户端上,客户端收到的该消息后,只要连接应用服务器即可根据ID解析并获取详细的信息。管理员通过students学生信息表和phones手机信息表确定某个学生的IMEI号来查询订阅的主题,而终端所订阅的主题可以是一个或多个,命令发布时根据所需选择多个命令同时发送即可。当消息到达客户端之后,再依次解析并做出响应。

4.2 手机客户端的实现过程

(1)用户登录及密码修改功能实现

在使用客户端程序时为保护系统的安全要求用户先登陆系统才能操作系统,尤其是手机失窃之后,有密码的保护可避免他人恶意的修改设置,造成系统无法接收服务器推送的命令。

采用Context.MODE_PRIVATE操作模式调用getShared-Preferences()函数来获取一个SharedPreferences对象实例,然后通过getString()函数取出保存的用户名和密码,与用户所填写的进行比对,如果填写正确则进入系统,否则会提示“密码错误,请重新输入”并清空填写的密码。SharedPreferences接口本身没有提供写入数据,不过可借助其内部的edit()函数来获取对应的Editor对象,并利用Editor对象的putString()函数来修改指定的Key值,最后使用commit()函数提交即可在XML中保存修改后的新密码。整个密码校验过程如图4所示。

(2)系统设置功能实现

系统设置功能模块主要用来启动系统服务、部门主题设置和SIM卡更换提示。

部门主题设置要根据客户端所在院系的不同来订阅所需主题。由前文中对手机客户端的主题空间设计可知,主题要明确客户端所属院系和IMEI,用户可从下拉列表框里找到自己所在院系名称选择,IMEI是根据手机自动获取的,可利用TelephonyManager类中的getDeviceld()方法返回唯一的设备IMEI号。

对用户SIM卡的更换感知进行实时监控,要利用get-SimState()可获取手机当前状态,当手机发生失窃被恶意换卡时,可以向指定的安全号码发送提示短信,通过发送的删除指令,客户端后台会启动Service将所有短信、联系人、SD卡中的数据删除或上传,保护手记手机里的信息安全。

图验4证 流密程码验证流程

在设置好所有订阅主题后,将系统服务开启,它是将Service开启以保持后台与代理服务器之间的长连接,使得客户端能够接收到管理员推送过来的信息和指令,而且要将这种服务设置为开机自启动。

(3)备份删除功能实现

备份删除功能主要是将手机中保存的联系方式、短信息及特定文件夹下的文件信息进行保存或删除。在删除文件时,操作过程比较容易实现,只需查询“文件管理”中文件存储的位置,选中点击删除即可。

在备份客户端中获取所有联系人时需要用URI去查找数据,它所指向的是:“content://com.android.contacts/data/phones”,而在获取短信时用SMS_URI_ALL="content://sms/";其中,URI一般是由三部分组成:访问资源的命名机制、存放资源的主机名、资源自身的名称。URI前缀采用标准的“content://”来表示,其含义是指Android只能在ContentProvider中选出一个来对URI进行处理。

5 结束语

系统测试采取长连接推送方式,对功能模块进行测试,验证系统的可实现性,客户端能够实时接收推送信息及命令,并对服务器进行反馈,相关辅助功能也都可以正常使用并达到预定要求。基于Android的学生成绩推送系统的基本结构虽已完成,系统安全与数据库的建立还不全面,针对不同的需求分析还有很多具体的功能有待设计与分析。

[1]黄河清,陈文.Android平台消息推送服务的实现[J].电脑编程技巧与维护,2014,18:53-55.

[2]杨亮,袁嵩,蒋鹏,等.基于Android平台的数据存储机制应用研究[J].电脑知识与技术,2014,11:2481-2484.

[3]任亨.基于MQTT协议的消息推送集群系统的设计与实现[D].中国科学院研究生院(沈阳计算技术研究所),2014.

[4]张宗利.基于信息推送技术的公选平台消息子系统的设计与实现[D].东华大学,2014.

[5]邹春刚.基于移动互联网应用的可靠数据推送方法[J].网络安全技术与应用,2014,06:49-50.

猜你喜欢

代理服务器客户端终端
X美术馆首届三年展:“终端〉_How Do We Begin?”
通信控制服务器(CCS)维护终端的设计与实现
如何看待传统媒体新闻客户端的“断舍离”?
地铁信号系统中代理服务器的设计与实现
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
GSM-R手持终端呼叫FAS失败案例分析
大枢纽 云平台 客户端——中央人民广播电台的探索之路
IP地址隐藏器
ABB Elastimold 10kV电缆终端及中间接头