一个基于Android平台的学习系统

2015-03-20 02:06马世欢鲁华栋
襄阳职业技术学院学报 2015年2期
关键词:设计模式服务器端应用程序

马世欢,鲁华栋

(河南工业职业技术学院, 河南 南阳 473000)

一、系统简介

随着智能手机和平板电脑的使用越来越普及,智能移动设备正在改变我们的工作、学习和生活方式。无论是基于Web的E-Learning还是在移动设备上的学习都是对现有教育环境的有利支持,[1]它们都能够使学生更加便利地获取教育资源。而对于教育资源贫乏的地区,具有更重要意义。

基于Android平台的学习系统设计特点是采用SOA(面向服务的架构),将教育内容管理系统Moodle的学习环境整合进Android系统中。考虑到移动设备的多样性,未来可能需要开发iPhone和Windows Phone版本的客户端程序。由于SOA具有良好的可扩展性,[2]为支持不同的移动操作系统提供了良好的基础。

如图1所示,客户端是一个Android应用程序,服务器端是一个整合Moodle的应用程序,一组Web服务作为客户端和服务器之间的通信接口,客户通过该接口和服务器端进行数据传递。当接收到一个请求后,Web服务访问Moodle数据库获取数据,然后对数据进行相应的处理后发送回客户端。通过Web服务,客户端能够获得Moodle中的关键资源,比如论坛、评价、消息、聊天、文件下载、提示、课程评级和公告等。

图1 系统架构

在客户端的Android应用程序中,对于系统提供的每个功能(论坛、评价、消息、聊天等),都包括一系列实现该功能的操作界面。每一个操作界面对应一个负责控制该界面的Java类。最后,将每一个功能相关的Java类封装到一个包中。

图2用一个显示课程列表的例子对应用程序的执行流程进行了说明。系统通过ConnectionManager类来统一管理和web服务的调用关系,web服务通过CourseDAO类来获取数据。图中Maictivity、MFCA、Connection Manager为客户端,即Android端,CourseDAO、Web Senvice为服务器端。执行流程从客户端的MainActivity类开始,该类负责显示用户可以参与的课程列表。首先,MainActivity类调用MFCA类中的方法来获取课程集合,然后MFCA类将该请求提交给connectionManager类,connectionManager类通过调用Web服务将数据请求交给CourseDAO类处理。最后,在Moodle数据库中执行一个查询,并将查询结果按调用顺序返回给Main-Activity,这样MainActivity就可以显示一个课程列表供用户选择。

图2 执行流程

二、客户端

客户端的Andriod应用程序使用Facade Pattern(外观模式)来处理界面和connectionManager类之间的信息传递。Facade Pattern的主要作用是简化客户程序与子系统之间的交互接口,将复杂系统的内部子系统与客户程序之间的依赖解耦。[3]结合本系统的情况,Android应用程序中控制界面的类充当客户程序的角色,ConnectionManager类相当于复杂子系统的一部分,而MFCA类则将这个复杂的子系统用一个简单的接口暴露出来供客户程序使用。图3说明了Facade Pattern的使用情况。登录模块、课程模块、论坛模块和聊天模块是MFCA的客户程序,MFCA定义了使用ConnectionManager和SharedInfo的接口,从而使它们同应用程序的其他部分解耦。

图3 客户端框架

三、服务器端

如图4所示,服务器端使用了两种设计模式来进行设计。第一个使用的设计模式是DAO(数据访问对象)。Web服务通过DAO去访问和处理Moodle数据库中的信息。该模式实现了数据访问和业务逻辑的分离,并实现了业务数据的对象化封装。[4]在本系统中,对每种类型的数据,都有一个DAO接口用来表示可以在该类型上执行的操作。应用程序的模型层包括以下几种数据类型和相应的DAO接口,分别是登录、论坛、评价、消息、聊天、文件下载、通知、成绩、课程的选择、调查和统计信息。第二个使用的设计模式是Factorymethod(工厂方法)设计模式。采用这种设计模式,使用一个工厂类来创建DAO类的实例,而不是Web服务中创建,从而实现了面向对象设计中最重要的原则之一OCP(开闭原则),实现了系统的可扩展性。[5]

图4 服务器端框架

服务器端还使用Web服务对Moodle提供的功能进行了封装发布,并根据客户端的需求,对Mooddle提供的功能进行扩充,以满足需求。

本系统中的Web服务是基于REST(代表性状态传输)协议开发的,因为Android系统没有对其他协议的本地支持。本系统除了使用HTTP、REST协议来进行数据传输之外,还使用了JSON来定义传输数据的格式。JSON是一种轻量级的数据交换格式,因此非常适合在移动应用中使用。[6]

四、结论

本文考虑到移动设备的迅猛发展,设计了一个基于Android平台的移动学习系统。该系统采用SOA架构,充分利用现有E-Learning系统的资源,具可扩展性强、使用灵活等特点。为学生提供了一条便利的学习途径,并为移动学习的实际运用提供了一种解决方案。

[1]余胜泉.移动学习——当代E-Learning的新领域[J].中国远程教育,2003(22):76-78.

[2]李华.面向服务的教育信息系统体系结构的研究[J].煤炭技术,2010(4):180-182.

[3]冯新扬,范颖,崔凯,沈建京.利用设计模式改进分层架构[J].计算机工程与设计,2007(15):3686-3689.

[4]朱曦,钟珞,彭钰,李少军,刘玲.基于Java和DAO设计模式的网上购物系统的实现[J].信息技术,2005(12):120-122.

[5]蒋海昌.开闭原则在软件开发中的应用[J].软件导刊,2012(4):22-24.

[6]龚成莹,邢敬宏,胡银保.基于JSON的Android移动终端与PHP及MySQL数据通信[J].工业仪表与自动化装置,2013(1):63-65.

猜你喜欢
设计模式服务器端应用程序
“1+1”作业设计模式的实践探索
Linux环境下基于Socket的数据传输软件设计
三维协同设计模式下的航天项目管理实践与展望
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
交通机电工程设计模式创新探讨
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用
互动式设计模式研究