馮 偉
(淮北職業技術學院計算機科學技術系,安徽淮北 235000)
基于REST風格的Android系統Web服務的研究
馮 偉
(淮北職業技術學院計算機科學技術系,安徽淮北 235000)
隨著智能移動終端的發展,傳統的Web應用程序如何與移動設備進行數據交互已經成為主要研究方向,針對移動設備的特點,REST風格的Web服務與傳統的基于SOAP的Web服務相比較具有許多優點,本文結合Android系統對REST風格的Web服務進行了研究和應用。
Android;REST;XML;Web服務
隨著電子商務、智能移動設備的快速興起,Android系統憑借其代碼開源、使用方便、靈活易用、價格低廉等諸多特點,在3G和無線網絡領域持續走紅。許多傳統的PC平臺上的Web應用也亟待向Android應用程序方向轉變。但在當前面向移動設備的應用中,各個Web服務所使用的語言和開發平臺各有不同,我們可以采用傳統的基于SOAP的Web服務來實現數據交互,但這種方式的服務針對不同的平臺定制自己的接口,隨著服務的不斷增加,接口的數量和類型也在急速的擴大,這將使Web服務的規模變得越來越龐大,對系統的性能產生很大的影響。而REST風格的Web服務則可以有效的避免定義接口的復雜性,只需要使用被廣泛使用的HTTP標準協議以及URI和XML規范進行即可實現通信,從而簡化了開發的復雜性,提高了軟件的開發效率。本文對REST風格服務的調用、XML文檔的解析進行研究,并在此基礎上設計和實現了Android平臺下的社區醫療衛生系統的訪問。
REST(presentational State Transfer,表述性狀態轉移)的概念最早由美國計算機科學家Roy Fielding博士于2000年在其博士論文中提出的,隨后又由Leonard Richardson進行了進一步研究,并提出了基于REST服務的新的面向資源的設計方法。REST是基于Java的一種輕量級Web服務架構風格,它與傳統的SOAP相比,具有靈活性高、支持協議簡單、響應速度快等特點,越來越受到廣大開發人員的青睞。
REST不是Web服務標準,也不是一種軟件架構,而是一種設計風格,是對Web體系結構設計原則的抽象和描述。REST通?;贖TTP,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,從而方便的訪問網站所提供的服務。
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語言開發的。
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解析器,并分層逐個獲取節點及節點,因篇幅限制,解析過程就不再詳述。
本文研究了基于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技術、數據庫應用技術。
孟云玲