张 亮 ,王 超 ,张宏彬 ,2
(1.扬州工业职业技术学院 电气信息工程学院,江苏 扬州 225127;2.扬州大学,江苏 扬州 225127)
近年来,各种信息服务系统在高校已经得到广泛应用,各高校纷纷建成了如教务查询系统、图书查询系统、校园一卡通系统等信息系统,为师生校园生活带来了很大便利。由于这些系统普遍建设较早,基本都采用传统的B/S或C/S架构,只能在计算机上通过浏览器或专用客户端来使用,对于使用的时间和地点有极大的局限性。另外,大部分高校原有的各个信息服务系统不能互联互通、共享数据,形成了一个个信息孤岛,导致重复建设,资源浪费,严重影响了学校的信息化建设和日常管理工作。目前在高校中,智能手机的普及率非常高,通过智能手机上网已经成为广大师生的普遍行为,而现有信息服务系统设计时大都未考虑到在智能手机平台上运行的兼容性,致使这些系统在智能手机上要么无法打开,要么即使能够打开,但版式设计无法和手机平台完全兼容,从而可用性极低。因此,通过无线通信网络及移动互联技术,设计一个基于智能手机平台的掌上校园系统,将原有各种信息资源和应用服务进行整合、挖掘和展现,为管理人员、教职工、学生、学生家长和公众提供便捷的移动信息服务,有着极大的现实意义。
目前,智能手机平台主流系统有苹果的IOS系统、Google的Android系统、微软的WP系统和诺基亚的塞班系统,其中微软的WP系统和诺基亚的塞班系统由于市场占有率太小,实际上已经退出了一线竞争行列,市场基本处于苹果和Google两强争霸的局面[1]。经过科研服务团队前期调研发现,苹果手机由于定位高端,价格昂贵,在校园人群中占有率不高,而Android手机国产品牌众多,价格低廉,且校内电信运营商推广强势,因此为广大师生所青睐,占有率高达90%以上。同时,Android操作系统是开源系统,所有编程接口全部对外开放,开发程序也十分便利,因此科研服务团队考虑首先在Android系统平台实现掌上校园系统。
和传统的信息系统一样,基于移动平台的掌上校园系统的核心仍然是客户端和数据库服务器的通信。客户端App用户通过软件界面选择查询内容,软件编码后通过特定的网络协议将查询内容传输给服务器端数据库,数据库查询后,将信息返回给客户端,客户端解码后在界面上显示结果。然而,与传统C/S架构及B/S架构不一样的是,Android系统无法安全高效地与远端数据库服务器直接进行通信,如微软SQL Server官方驱动就不支持Android平台,而第三方驱动无论功能和安全性都得不到保证。另外,在客户端App中调用SQL语句直接向数据库发起查询也不是一个好的做法,这样做无论安全性和效率都存在严重的问题。因此,目前Android客户端连接远端SQL数据库,主流的做法是在中间加层,即通过Web Service等技术来间接访问数据库,形成Android App+Web Service+Database的连接访问方式[2]。Web Service接收来自Android客户端的各种查询请求,然后转发给数据库进行查询,对查询所返回的数据进行解析、抽取并通过合适的协议和数据格式将所需的数据传回给Android客户端程序。这样,很多操作实际由Web Service来完成,Android客户端的工作量将大大减少,从而大幅度降低对电池和网络流量的消耗,而这又恰恰是移动开发的关键。具体来说,本系统分为服务器端程序和客户端程序两部分,服务器端程序主要包含数据库和Web service程序。其中,数据库用来存放学院各职能部门提供的数据,如学生成绩、一卡通消费记录等;Web service程序则负责接收客户端发来的查询请求并对数据库进行查询,最后将查询到的结果返回给客户端。客户端程序以Android系统apk安装包的形式发布,在Android手机安装后,可以查询相应学生的课程成绩、图书借阅、学费缴纳、一卡通消费记录等数据。系统的总体架构如图1所示。
图1 系统总体架构
由于学校原有的各大信息系统都是各部门独立开发或采购的,因此采用的数据库类型不尽相同,如教务处自主开发教务系统采用SQL Server数据库,而图书馆采购的汇文图书系统则使用Oracle数据库。在一个Web Service中对多种不同的数据库进行操作难度非常大,同时各个部门出于安全性的考虑,大都也不愿意将自己的数据库开放给外部程序来访问。因此,本系统Web service程序并没有直接对各部门数据库进行操作,而是采取了每周定期从各部门导出相关数据,生成excel文件,然后汇总到本地,利用SQL Server的导入向导功能将excel文件导入本地SQL Server数据库来进行查询的方式。这种方式在查询的实时性方面要稍逊一筹,但降低了编程难度,确保了原有系统的安全,易于为各职能部门接受,降低了系统推广的难度。在目前的1.0系统版本中,数据导出和导入由本系统管理员手动完成,预期在下一个版本中,加入数据库导入接口,使各部门的数据库管理员可以定期向本系统导入其部门数据,以减轻本系统管理员的工作量。
目前,实现Web Service可选的两大技术平台分别为java平台和.Net平台,这两种平台技术可以说是各有千秋,但本项目已经选择了微软SQL Server数据库,在这种情况下,显然选择.Net平台开发相应的Web Service更能保证兼容性。因此本系统Web service采用C#语言编写,运行在.Net 2.0环境下,Web服务器为IIS,采用了常规的ADO.net技术对SQL Server数据库进行操作,技术细节在此不在赘述。
掌上校园Android客户端采用Java语言,在Eclipse和ADT环境下开发,兼容Android2.3版及以上系统,主要包括用户登录、个人信息查询、成绩查询、图书借阅查询、学费查询、一卡通消费查询等模块。图2为客户端登录界面,用户必须通过身份认证后,才能进行其他各项信息的查询。在各个信息查询模块中,主要采用了listview控件在Activity界面显示获取到的信息。在开发的过程中碰到的最大技术难点在于Android客户端和Web service如何进行信息的交互。.Net平台下的Web service采用SOAP协议进行信息的交互,SOAP是基于XML的简易协议,可使应用程序在HTTP之上进行信息交换[3]。遗憾的是,在Android官方SDK提供的编程接口中,并没有处理SOAP协议的API,因此在编程时就有两种选择,一种是详细学习SOAP协议标准,在代码中手动构造SOAP数据包结构,并利用java sdk中提供的HttpURLConnection类进行发送,在接收时也是手动对XML数据进行解析,提取出相关的数据。很显然,这种方式难度较大,且编码繁琐,容易出错。另一种方法是选用第三方类库来对SOAP协议进行解析,在本项目中,开发团队选择了Ksoap2类库来进行开发[4]。
Ksoap2是一个开源项目,为Android平台提供了一个轻量级的高效的SOAP库,使用方便,其关键代码如下:
SoapObjectrpc = newSoapObject(NameSpace,MethodName);
rpc.addProperty("id",myid);
AndroidHttpTransport ht=new AndroidHttpTransport(url);
ht.debug=true;
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut=rpc;
envelope.dotNet=true;
envelope.setOutputSoapObject(rpc);
ht.call(soapAction,envelope);
SoapObject result=(SoapObject)envelope.bodyIn;
主要代码流程为构造SoapObject和SoapSerializationEnvelope对象,将相应的查询参数添加到对象中,并发送给Web Service API对应的URL,然后再将返回的信息进行解析。尤其需要注意的是,由于是和.Net平台下的Web service网络接口进行通信,envelope.dotNet=true这句代码必不可少,否则将出现异常。图3为成绩查询界面,其他模块业务虽然不同,但代码逻辑类似,都是通过Web Service从数据库取得数据后,使用listview控件展示在界面上,由于篇幅所限,这里不在进行阐述。
扬州工业职业技术学院掌上校园系统研发成功后,已在校园网内部进行了初步测试,测试结果表明,由于该系统兼容性好,安装使用方便且流量消耗很小,深受广大师生欢迎。项目团队正在优化相关模块功能,进一步对系统进行完善,并争取能够向同类院校推广。
图2 系统登录界面
图3 成绩查询界面
[1]王彦恩.2013-2014年中国手机市场研究年度报告[EB/OL].(2014-01-29)[2014-11-08].http://zdc.zol.com.cn/431/4315148.html.
[2]马杰克.基于WEBService的校园信息管理系统设计与实现[D].电子科技大学,2013.
[3]隋菱歌,殷树友,黄岚.SOAP协议在XML数据传输中的应用[J].长春大学学报,2006,16(4):52-55.
[4]华建祥.基于Android平台的校园信息查询系统客户端设计与实现[J].软件导刊,2014,13(2):101-103.