基于REST风格的Android系统Web服务的研究
2012-11-17冯伟
冯 伟
(淮北职业技术学院计算机科学技术系,安徽淮北 235000)
基于REST风格的Android系统Web服务的研究
冯 伟
(淮北职业技术学院计算机科学技术系,安徽淮北 235000)
随着智能移动终端的发展,传统的Web应用程序如何与移动设备进行数据交互已经成为主要研究方向,针对移动设备的特点,REST风格的Web服务与传统的基于SOAP的Web服务相比较具有许多优点,本文结合Android系统对REST风格的Web服务进行了研究和应用。
Android;REST;XML;Web服务
0 引言
随着电子商务、智能移动设备的快速兴起,Android系统凭借其代码开源、使用方便、灵活易用、价格低廉等诸多特点,在3G和无线网络领域持续走红。许多传统的PC平台上的Web应用也亟待向Android应用程序方向转变。但在当前面向移动设备的应用中,各个Web服务所使用的语言和开发平台各有不同,我们可以采用传统的基于SOAP的Web服务来实现数据交互,但这种方式的服务针对不同的平台定制自己的接口,随着服务的不断增加,接口的数量和类型也在急速的扩大,这将使Web服务的规模变得越来越庞大,对系统的性能产生很大的影响。而REST风格的Web服务则可以有效的避免定义接口的复杂性,只需要使用被广泛使用的HTTP标准协议以及URI和XML规范进行即可实现通信,从而简化了开发的复杂性,提高了软件的开发效率。本文对REST风格服务的调用、XML文档的解析进行研究,并在此基础上设计和实现了Android平台下的社区医疗卫生系统的访问。
1 REST风格的Web服务
REST(presentational State Transfer,表述性状态转移)的概念最早由美国计算机科学家Roy Fielding博士于2000年在其博士论文中提出的,随后又由Leonard Richardson进行了进一步研究,并提出了基于REST服务的新的面向资源的设计方法。REST是基于Java的一种轻量级Web服务架构风格,它与传统的SOAP相比,具有灵活性高、支持协议简单、响应速度快等特点,越来越受到广大开发人员的青睐。
REST不是Web服务标准,也不是一种软件架构,而是一种设计风格,是对Web体系结构设计原则的抽象和描述。REST通常基于HTTP,URI、XML以及HTML这些现有的广泛流行的协议和标准之上的。服务资源有URI来指定;通过HTTP协议提供的Post、Get、Put和Delete方法实现对资源的创建、获取、修改和删除操作;通过XML或HTML来描述资源,也可以是任何其他的格式。REST风格的Web服务于传统的基于SOAP的Web服务相比较具有以下区别:
表1 REST风格的Web服务与基于SOAP的Web服务对比
从表1可以看出,与传统的基于SOAP的Web服务相比较,REST具有接口统一、面向资源、文档格式丰富、通信协议简单、冗余信息较少,可被搜索引擎直接搜索等优点。目前,众多大型网络运营商均开始将REST API提供给用户,我们只要通过在移动客户端编程即可访问这些API,从而方便的访问网站所提供的服务。
2 Android平台及其架构
Android是Google公司于2007年11月5日宣布的基于Linux平台的开源手机操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。其本身是一套软件堆叠(Software Stack),自底向上分别包括Linux内核层、Android系统运行库和其他库层、应用框架层和应用程序层四部分。
2.1 Linux内核层
Android平台使用Linux2.6版本的内核,实现安全管理、内存管理、进程管理、网络协议和驱动模型等系统服务,Linux核心在硬件层和软件层之间建立了一个抽象层,使得Android平台的硬件细节对开发人员透明化。主要包括显示驱动、Flash内存驱动、照相机驱动、音频驱动、WIFI驱动、键盘驱动、蓝牙驱动、Binder IPC驱动和能源管理。
2.2 Android系统运行库和其他库层
Android包含了一个可供不同组件调用的C/C++库,这些功能模块通过应用程序框架暴露给开发者。核心库主要有:系统C库、媒体库(Media Libraries)、OpenGL ES、Free Type、嵌入式数据库引擎SQLite、SSL、WebKit等
2.3 应用框架层
Android提供了开发应用程序的一系列框架。如:Activity Manager、Window Manager、Content Providers、View Providers、Package Manager、Telephony Manager、Resource Manager、Location Manager、Notification Manager。开发人员可以使用框架提供的API来实现自己的功能。
2.4 应用程序层
Android平台搭载了一系列的核心应用程序,如E-mail客户端、日历、浏览器、电话薄等、这些应用程序都是Java语言开发的。
3 构建基于REST风格的Web服务
REST风格是对Web体系结构设计原则的抽象和描述,可以使用不同的技术实现这种设计理念,其中最为广泛适用的是HTTP协议,它是一种面向资源的协议,不仅能够利用该协议进行网络资源唯一定位,而且还可以进行对资源的操作。这也是REST风格中最为重要的理念。
3.1 HTTP资源请求
在基于REST风格的Web服务中,一切资源都有其唯一的URI,每个资源对应唯一的资源标示符,通过HttpURLConnection连接器接口对资源进行访问,使用HTTP的GET、POST、PUT和DELEIT 4个动作作为资源的请求方式。以下给出了基于REST风格的Web服务进行HTTP资源请求的参考代码:
以上代码采用的是HTTP协议中的“PUT”请求方式,其他请求方式在这里就不做描述,均与此方式基本一致。要注意的是用以标识资源的URI最好是逻辑地址,而不是物理地址,如:http://www.store.com/product/12345,这样可以保证对服务端的资源修改不影响客户端的调用。
3.2 XML文档解析
XML(Extensible Markup Language,即可扩展标记语言)是数据描述的标准通用标记语言,它不仅可以用于某平台内部的数据描述,更适合于Internet上跨平台数据交换,它具有系统无关性、平台无关性、语言无关性等特点,为不同平台间的数据交换提供了方便。Android平台上开发的移动应用程序访问Web服务也采用了XML的的数据描述。
当Android客户端向服务端申请服务后,服务端会返回响应的消息,响应的消息采用XML进行描述一个无结构的字符串序列,不能被客户端直接识别,所以必须对接收的消息进行解析,使之转换为满足XML语法的结构化组件。在Android系统中,对XML文档的解析可以使用DOM、XML pull和SAX三种技术。目前,Android SDK为XML文档的读写提供了五个包:org.w3c.dom、org.xml、org.xmlpull.v1、javax.xml、javax.xml.parsers。以DOM技术为例,可以利用DOM工厂方法建立DOM解析器,并分层逐个获取节点及节点,因篇幅限制,解析过程就不再详述。
4 结束语
本文研究了基于REST风格的Android系统Web服务,并与传统的基于SOAP的Web服务进行了比较,显示出了REST风格的轻便性、灵活性和易使用等优势,并分析了Android平台的架构对REST的支持、最后对如何在Android系统中构建REST风格的Web服务进行研究。通过使用REST风格的Web服务,统一了接口、提高了移动程序的开发效率、降低了开发成本,具有良好的应用前景。
[1]黄锦川.REST风格服务在Android平台上的研究与应用[D].成都:西南交通大学,2010.
[2]李瑞花.基于Android的XML解析技术的分析[J].计算机时代,2010(12).
[3]黄锦川,金炜东.基于Android平台Web服务的应用研究[J].计算机应用,2010(11).
[4]微软公司.XML Web Service开发[M].北京:高等教育出版社,2004.
TP393.09
A
1671-8275(2012)03-0087-02
2012-04-12
本文系安徽省自然科学基金项目“基于数据融合的动态目标检测技术的研究”(项目编号:KJ2012Z354),淮北职业技术学院科研项目“基于.NET的SOA在社区医疗信息系统中的研究与应用”(项目编号:2012-A-25)阶段性研究成果。
冯伟(1978-),男,安徽萧县人,淮北职业技术学院计算机科学技术系讲师,硕士。研究方向:软件工程、.NET技术、数据库应用技术。
孟云玲