李利杰
摘要:为了提高智慧竞赛APP重用性和扩展性,充分分析需求分析基础上,采用分层设计思想解耦模块。数据交互上采用轻量级的简单对象访问协议实现客户端与服务器之间实现异步数据交互,减轻服务器响应负载,同时也提高了客户端用户体验。数据交互设计运用观察者设计模式实现了数据响应与多个响应线程之间一对多的依赖关系,以便所有依赖于数据请求对象都能及时刷新。最后系统设计采用百度推送方式确保消息及时性。系统测试表明上述的智慧竞赛APP设计合理,性能良好。
Abstract: In order to improve the reusability and scalability of the APP, we use the hierarchical design idea to decouple the module based on the analysis of the requirements. The lightweight simple object access protocol is used to implement asynchronous data interaction between client and server, which can reduce the load of server response and improve the user experience. The data interaction design uses the observer design pattern to achieve a multi dependency relationship between the data response and multiple response threads, so that all data requests can be refreshed in time. Finally, the system design adopts Baidu push mode to ensure timeliness of the information. The system test shows that the design of APP is reasonable and the performance is good.
关键词:分层;异步;观察者
Key words: stratification;asynchronous;observer
中图分类号: TP311 文献标识码:A 文章编号:1006-4311(2017)06-0075-02
0 引言
技能竞赛是高职院校培养高技能人才的重要载体,培养学生创新创业和团队协作能力的重要推动力[1][2]。另一方面随着学科竞赛活动规模扩展,学校竞赛管理人员采用人工方式管理和组织学科竞赛缺陷日期凸显。学科竞赛管理人员无法查看指导教师辅导轨迹和学生参加竞赛辅导的学习轨迹。竞赛信息无法覆盖到绝大部分学生信息,成为影响竞赛苗子选拔的一个重要因素。目前竞赛系统都缺乏移动端支持,使得竞赛系统不能在学生群体中得到大范围推广和使用[3][4][5]。因此基于Android的智慧竞赛APP设计和开发具有现实意义。
1 智慧竞赛APP需求分析
智慧竞赛APP设计与开发延展了竞赛协同管理平台,使随时随地参与竞赛和管理竞赛的可能成为现实。需求分析过程中考虑到过多功能影响用户体验这一不理因素,剔除智慧竞赛协同管理平台中部分使用频率较低的功能需求,最终得到的智慧竞赛APP客户端用例图(如图1所示)。
智慧竞赛APP需求涉及到技能竞赛管理人员,指导教师和竞赛学生三类角色。竞赛管理人员角色涉及到的用例有发布竞赛信息,浏览教师辅导轨迹,浏览学生学习轨迹和查看统计数据。从这个用例图中可知,整个赛事的发布是竞赛管理人员负责。当竞赛管理人员发布赛项的同时将向指导教师和竞赛学生推送这一赛项的推送消息。竞赛管理人员通过浏览教师辅导轨迹这一用例具体查看每位指导教师指导学生的具体事项,实现对教师辅导的精细化过程管理。此外,竞赛管理人员借助浏览学生学习轨迹这一用例查看竞赛学生参加竞赛培训,参加竞赛辅导的具体日期和次数,实现对竞赛学生学习的动态掌控。查看统计数据用例帮助竞赛管理人员以报表形式查看竞赛统计信息,如年度竞赛成绩信息等。指导教师相关用例为申报竞赛指导,发布竞赛指导资料,浏览学生学习轨迹和评价作品。申报竞赛指导用例要求指导指导具体技能竞赛前须提出申请,获得批准后方可指导学生竞赛,有利于学院和学校指导教师统筹安排。发布竞赛指导资料用例表示指导教师在获得指导资格后定期发布相关联赛项的各种辅导资料,如学习视频和文档等。评价作品用例表示指导教师评价学生提交竞赛作品。竞赛学生涉及用例主要为参加竞赛报名,学习竞赛资料和提交竞赛作品。
2 智慧竞赛APP架构设计
智慧竞赛APP运用分层设计思想,将其分解为界面层,功能层,中间件层和操作系统层(如图2所示)。分层设计使得开发人员只关注整个结构中的其中某一层,允许用新的实现来替换原有层次的实现,降低层与层之间的依赖,有利于标准化和各层逻辑的复用。智慧竞赛APP用户功能层提供UI访问的基础功能,主要有用户管理,数据查询,视频控制与软件升级。用户功能层使用中间件层有消息推送,数据访问代理,流媒体控制与版本控制。消息推送中间件封装了基础层中的第三方的百度云推送服务。
数据访问代理中间件借助于基础层所提供的网络层SOCKET和HTTP协议,利用简单对象访问协议SOAP实现智慧竞赛APP客户端与智慧竞赛协同管理平台之间数据交换。设计中封裝Util类实现跟SOAP协议相关方法。从图3可知,Util类中GetSoapXml方法根据协议中的body内容封装一个soap协议,getSoapBodyElement方法从完整的soap协议内容中解析出soap body内容。NetUtil方法中的sendByPost方法采用http post方式发送JSon格式报文。
3 智慧竞赛APP数据交换
智慧竞赛APP与智慧竞赛协同管理平台之间采用JSON方式进行异步数据交换。JSON是一种基于ECMAScript的轻量级的数据交换格式,是一种完全独立于语言的文本格式。智慧竞赛APP客户端中采用http post方式实现与服务器的交换。JSON请求类设计采用观察者模式(如图4所示),通过SetOnResponseEventListener方法实现与RequestThread之间通信。RequestThread负责监听和处理具体相应请求。
4 智慧竞赛APP推送服务
消息推送通过定期传送用户需要的信息来减少信息过载的一项新技术,根据用户的兴趣搜索、过滤信息,并将其定期推给用户,帮助用户高效率地发掘有价值的信息。常见的推送方式有轮询和持久连接方式。轮询方式中客户端定期向服务器端发送请求,查询数据更新状态。持久连接方式中客户端和服务器之间建立长久连接,这样就可以实现消息的及时行和实时性。
智慧竞赛协同服务平台通过百度消息推送服务将竞赛相关信息定期推送到智慧竞赛APP客户端确保消息及时性。使用百度推送服务基本流程如下:首先开发者在百度注册并登陆后,创建一个应用;接着利用百度提供的客户端android SDK编写该应用的客户端程序,将API Key写入客户端程序的配置文件;然后利用百度提供的推送平台向百度的推送服务器发送推送消息的命令,百度服务器收到命令后向客户端推送消息。该过程也可以由开发者利用百度提供的PHP SDK编写脚本完成,此时需要显式使用API Key和secret Key,根据推送需求可能还会需要user id、channel id以及tag。智慧競赛消息推送架构具体如图5所示。
5 结束语
基于Android的智慧竞赛APP采用分层设计思想实现了松耦合软件设计要求。设计方案中在简单对象访问协议基础上设计了NetUtil和Util类构造数据访问中间件,实现了模块的重用。智慧竞赛APP采用百度云推送方式快速构建了消息推送服务,采用第三方专业推送服务减少了推送服务器维护成本。
参考文献:
[1]陈红玲,崔宁,崔树林,曾文键.基于.NET平台高校竞赛管理系统设计与实现[J].计算机技术与发展,2013(01):173-176.
[2]毛洪贲,王石发,姜琪,周爱花.基于.NET的学科竞赛管理系统设计与实现[J].现代教育技术,2013(12):107-110.
[3]罗玲玲.高校学科竞赛信息管理系统的研究与分析[D].云南大学,2015.
[4]陈海俊.基于网络测评的竞赛管理系统设计与实现[D].江西财经大学,2015.
[5]芦涵丽.南昌市第一中等专业学校电子商务竞赛管理系统的研究与分析[D].云南大学,2015.