杨 健,张晓玲,杨邓奇
(大理学院数学与计算机学院,云南大理 671003)
移动学习是一种在移动计算设备帮助下的能够在任何时间任何地点开展的学习,其所使用的移动计算设备必须能够有效呈现学习内容,并提供教师与学习者之间的双向交流〔1〕。目前高等学校在校生平均人手拥有一台甚至多台的便携式移动设备(智能手机、平板电脑、PDA等),而在日常课程学习的间歇和各种各样的等待时间里,这些移动设备除了作为通信设备来使用以外,似乎唯一的功能就是上网、娱乐。这也使得大好的时间和便携的学习工具(资源)被浪费,没有用于专业技能知识的提高上。利用移动学习作为高校教学的辅助学习手段可以进一步提高学生充分利用各种学习时间的能力〔2-3〕。
另一方面,作为两大移动平台操作系统之一的Android,尽管诸如碎片化、安全漏洞等问题让其屡遭诟病,但截至2014 年7 月,其市场份额却一举超越iOS,成为市场占有率最大的移动平台操作系统。在Android 下开发移动学习系统首选的语言工具是Java。此外,Google 以及其他开源软件组织也为Android 平台下Java 应用软件的开发提供了良好的支持,如 Eclipse for ADT(Android Development Toolkit)等。在Android下开发基于Java的移动学习系统,在移动平台前端开发方案的选择上有两个:使用浏览器作为瘦客户端或开发自有的Java 客户端界面。这两种方案各有优缺点:前者不需要开发客户端软件,只需要安装浏览器即可,但受制于浏览器的功能,无法提供移动学习系统中应当有的各种多媒体交互学习能力,且界面表现和跳转等受到一定的限制;后者虽然需要开发前端App 软件,但可以根据需要提供各种音视频及复杂的交互能力,从而进一步提高学习者的学习效果。
本文考虑建立Android 系统下的移动学习系统,主要应用环境是为在校学生提供移动学习服务,通过多媒体展现形式提高学生学习兴趣,同时建立学习过程中教师与学生的互动交流,从而增强学生的学习效果。论文提出了系统结构和功能,并详细介绍系统中前端和后端的远程信息交换方案。内容主要包括:首先将介绍Android 系统下基于Java的移动学习系统功能和结构,接下来将针对本系统中用于远程信息交换的Web Service 开发和访问提供解决方案,最后一节进行总结并提出需要进一步解决的问题。
考虑到移动设备在存储、计算和续航能力上所受的约束,应尽可能地将复杂的耗能的计算任务进行分解,并形成类似于C/S(客户/服务器)模式的结构,其中客户端(移动设备)面向用户展示学习内容、通知公告,同时提供交互界面,而服务器端则使用PC界面提供给管理员和教师进行辅助管理及学习内容、测验试题和公告的管理〔4-5〕。根据本系统的需求进行分析,得出系统的功能模块。见图1。
图1 系统功能图
上述系统功能中,学习者使用移动设备登录客户端系统进行学习,各模块中最重要的就是学习、测验和交流互动3 个子系统,而这3 个子系统在实现中是相互提供功能的。例如,学习过程中可能调用测验子系统进行知识点相关例题的选择,还可以直接针对当前知识点向教师进行提问,或者查看教师对以前问题的回答;而学习交流论坛中,也可通过学习知识点的链接来确定交流的主题。服务端系统是在PC 机上建立Java EE 应用来实现的,并且通过无线网络给客户端提供所需的信息(主要包括学习的知识点、试题、公告通知和学习相关多媒体文件的传输)。服务器端的使用者除了教师以外,还需要有教务系统的管理员来完成非教学所需的信息管理相关操作。
从图1中可以看到,本系统的两大子系统之间需要进行频度较高的、数据量较大的信息交换,在客户端与服务器之间需要有高效的信息传输方法。为了让客户端的Android 应用与远程服务器之间进行交互,一种方法是借助于Java 的RMI(Remote Method Invocation)技术,但这要求远程服务器程序必须采用Java 实现,不利于以后后台服务端的扩展。当然,也可以借助于CORBA(Common Object Request Broker Architecture)技术,但这种技术过于复杂。除此之外,Web Service是一个较好的选择。
系统采用Web Service 作为客户端与远程服务器信息交互手段,由于系统前端为Android应用,后端为Java EE应用服务器,因而建立如图2所示的整合架构图。
图2 客户端Android应用与服务器端的整合架构
Web Service 是本系统中最为重要的组成部分,由后台的Java EE 应用来提供服务,供移动客户端调用,从而实现移动客户端与服务端的信息交互。下面着重介绍Web Service的基本概念,并提出本系统中的Web Service的构建方法。
2.1 Web Service 及关键技术根据W3C(万维网联盟)对 Web Service 的定义〔6〕,Web Service 技术使得在不同机器上的不同应用可以相互交换数据或集成,且无须借助附加的、专门的第三方软件或硬件。由于基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP等,Web Service很容易部署。
Web Service涉及的关键技术有:
1)XML:可扩展标记语言,是表示Web Service中服务器与客户端相互交换信息的基本格式。
2)SOAP:简单对象访问协议。一个SOAP 消息包含如下3 个主要元素:a.为描述信息内容和如何处理内容定义了框架(Envelope 元素);b.将程序对象编码成为XML 对象的规则(Header 元素,包含SOAP 的头信息);c.执行远程过程调用(RPC)的约定(Body元素,包含所有的调用和响应信息)。
3)WSDL:Web Service 描述语言,通过 XML 描述Web Service,供服务调用者使用。
4)UDDI:统一描述、发现和整合协议,是一套用于Web Service发布和发现的规范。
Java 本身提供了对Web Service 的支持,建立了如 JAX-WS 规范和面向 RESTful(Representational State Transfer)Web服务的JAX-RS规范等。现有实现这些规范的框架也已有较多,典型的开源框架如Apache 的 Axis2/Axis、CXF 等。这些技术不但可以用于非常方便地对外提供Web服务,也可用于简化调用Web服务的客户端编程。
2.2系统Web Service 实现由于本系统服务器端由Java EE 应用实现,就需要Web 服务能与后端的Servlet、Spring 等框架无缝结合。现有Web Service框架中,能与Java EE的控制器Spring框架较好结合的有 Axis2、Axis 和 CXF。其中,Axis 本质上是一个SOAP 引擎,提供创建服务器端、客户端和网关SOAP 操作的基本框架。Axis2 则是下一代的Axis,具有更强的灵活性并可扩展到新的体系结构。CXF也是Apache基金会发布的Web Service实现框架〔7-8〕,支持多种Web Services 的标准。此外,CXF 框架实现Web Service 时,既支持WSDL 优先开发,也支持从Java 的代码优先开发模式,并且支持Spring 2.0更加简化的XML 配置方式;同时,它还是一种可插拨架构,支持 XML 和非 XML 的类型(例如 JSON 或CORBA)绑定,使得其具有更好的可兼容性。
2.2.1 服务端的Web Service 实现 考虑到本文的移动学习系统是在已有的Java EE 应用基础上构建,服务器上的业务流程由Spring 框架来实现,而CXF 与Spring 的结合通过XML 配置文件的更改就可实现,所以采用CXF作为本系统中Web Service的实现框架。这里不再介绍CXF 和Spring 的类库安装,假设Spring 和CXF 已经作为编译类库导入到项目中。为了让Spring 支持CXF 提供的Web Service的发布,需要在Spring 的配置文件中添加对CXF 的支持,并在Web配置界面中添加对Web Service调用时Servlet的映射。
其中,在Spring 配置文件中,除了在<beans…>中添加CXF的名字空间和规范的定义以外,还需要使用<import resource…>节点导入CXF 的配置文件cxf.xml、cxf-extension-soap.xml 和 cxf-servlet.xml,同时,配置Web Service 的实现类,如下面Spring 的配置文件代码所示:
在Java EE 的配置文件web.xml 中,为了使对Web Service 的访问自动转向CXF 框架,需要定义CXF 框架的引用Servlet,并指向服务类org.apache.cxf.transport.servlet.CXFServlet。同时,还要定义访问这个Servlet的URL模式,例如“/services/*”。通过这样的配置,客户端对Web服务的请求URL应形如“http://.../services/...”,从而在服务器端转入通过CXF框架提供的Web服务的实现类的处理。此外,在服务器端的Web 服务实现类之前要使用@Web-Service标注,如下面代码:
可以注意到@WebService 标注有endpointInterface 等几个属性,其中targetNamespace 对应着客户端创建SOAP 对象时应指定的Namespace。在这种形式的Web服务中,并没有在部署之前提供服务的描述WSDL文件,因为这种情况下,CXF是根据服务提供类动态生成Web服务的描述。
2.2.2 Android 移动客户端的Web Service 访问 在上述的Web 服务实现方式下,Android 客户端要做的就是使用URL 请求服务,并将返回结果解析为SOAP 对象,然后读取SOAP 对象中包含的信息即可。根据请求的URL 也可以看出,包装信息的SOAP 消息是通过HTTP 协议传输的。为了在Android 下对HTTP 传输的Web Service 消息更容易进行处理,Google公司提供了Ksoap2包。使用Ksoap2包调用Web Service分为如下几个步骤:
1)创建 HttpTransportSE 对象,该对象使用HTTP协议完成网络上的数据传输任务;
2)创建SOAP 的封装对象SoapSerializationEnvelope 和SoapObject 对象,同时为后者设置需要传递给远程服务器的参数;
3)设置SOAP 的封装对象SoapSerializationEnvelope 的 bodyOut 属性,将上面创建的 SoapObject 对象作为传出SOAP消息体;
4)调用HttpTransportSE 对象的 call()方法,从而发送Web Service请求;
5)调用完成后,访问SOAP 封装对象的bodyIn属性,获得一个SoapObject 对象,这也就是以SOAP对象格式封装的Web Service的返回消息。
在上述步骤中,还要注意的一个问题是,Android 4及以后版本环境下,不允许应用程序的主线程访问网络,因此,需要将网络访问部分放在新建的线程中调用。
本文探讨在Android 下创建C/S 模式的移动学习系统,为了在客户端和服务器端进行信息传输,使用Web Service 提供服务。考虑到前端和后端的可扩展性,服务器采用Java EE 来实现,为了能跟其中的Spring 框架较好集成,在服务器端的Web Service用了Apache 的CXF框架。系统测试表明,CXF框架能很好地跟业务流程框架Spring 集成,创建具有良好的可扩展性的Web 服务端。下一步的工作包括:
1)建立基于RESTful架构的Web Service在移动学习系统中的应用。由于基于SOAP/WSDL 的Web Service 是RPC(远程过程调用)式的,仅仅将HTTP协议当做一种传输协议来使用,还依赖于XML这种冗余度较高的文本格式,因此这种Web Service应用性能较为低下,不适合大流量的Web 应用〔9〕。相比之下,RESTful Web Service,是一种面向资源的架构,采用标准的HTTP 方法,HTTP 协议在其中不只是作为传输协议,而是作为信息的载体,无需引入SOAP 消息传输层,避免了各种封装产生的资源消耗,从而更加快捷、方便。
2)此外,移动学习系统中的文字性学习内容不仅仅是字符(或汉字),还应当考虑数学公式等非字符型学习内容的表现〔10〕,以及客户端和服务端的该种类型信息的交流。在系统中实现数学公式相关的学习内容表示和编辑,是本文另一个后续工作。
〔1〕Dye A. Mobile Education:A Glance at The Future〔J/OL〕.(2012-01-15)〔2014-12-20〕. http://www. dye. no/articles/a_glance_at_the_future/index.html.
〔2〕宋巍.开放大学移动学习平台设计与实现〔J〕.沈阳师范大学学报:自然科学版,2014,32(1):107-110.
〔3〕郑兆华,彭金莲,邱锡光,等.移动互联网在高校教育中的应用〔J〕.计算机教育,2014(5):80-83.
〔4〕刘帅,李建伟,勾学荣.互动式移动学习系统的设计与开发〔J〕. 北京邮电大学学报:社会科学版,2014,16(6):111-116.
〔5〕李芙玲,白磊,陈超.基于Java技术的手机移动学习平台的设计与开发〔J〕. 华北科技学院学报,2014,11(10):75-78.
〔6〕W3C Working Group. Web Services Glossary〔EB/OL〕.(2004-02-11)〔2014-12-20〕. http://www. w3. org/ TR/2004/NOTE-ws-gloss-20040211/#webservice.
〔7〕Apache Software Foundation. Apache CXF:An Open-Source Services Framework〔CP/OL〕.(2014-12-11)〔2014-12-30〕.http://cxf.apache.org/docs/index.html.
〔8〕梁晓,俞立,洪榛. 基于J2EE 的旅游票务分销管理系统〔J〕.计算机系统应用,2014(2):52-59.
〔9〕韩陆.Java RESTful Web Service 实战〔M〕.北京:机械工业出版社,2014:1-8.
〔10〕洪留荣.一种应用于移动学习环境中的数学公式标记语言〔J〕.计算机系统应用,2010(10):117-121.