摘 要 隨著移動互聯(lián)網(wǎng)的發(fā)展,越來越多用戶通過智能終端接入到移動互聯(lián)中,在移動客戶端開發(fā)應(yīng)用的需求也日漸增多。而在移動客戶端開發(fā)的過程中,移動端與服務(wù)器端的交互與整合是不可缺少的一環(huán)。由于當前Android操作系統(tǒng)是較為主流的移動操作系統(tǒng),因此本文探索了一種基于Web service的技術(shù)的Android移動端與服務(wù)器端的整合技術(shù),并設(shè)計了比較通用的整合架構(gòu),闡述了整合過程。
【關(guān)鍵詞】Web Service Android 整合
1 Web應(yīng)用系統(tǒng)與Android移動端的整合概述
1.1 移動端與服務(wù)器端的整合概述
在本文所論述的Web應(yīng)用系統(tǒng)主要是指傳統(tǒng)的基于PC電腦端的Web應(yīng)用系統(tǒng),如網(wǎng)站,或相關(guān)的基于B/S架構(gòu)的應(yīng)用程序。由于當前的移動互聯(lián)網(wǎng)技術(shù)飛速發(fā)展,移動端的用戶越來越多,越來越多人通過智能終端接入了移動互聯(lián)網(wǎng),因此,在移動端開發(fā)應(yīng)用的需求也是日漸增多。在開發(fā)一個移動端的時候,常常要進行移動端及PC端的整合,或者移動端與服務(wù)器端的整合。
本文要討論的,就是移動端與移動端的整合問題。
1.2 Android開發(fā)技術(shù)概述
在Android開發(fā)中有四大組件,他們分別是:用于表現(xiàn)功能的活動(Activity);主要在后臺運行的服務(wù)(Service)用于接收廣播的廣播接收器(BroadcastReceiver);相當于數(shù)據(jù)庫的、支持在多個應(yīng)用中存儲和讀取數(shù)據(jù)的內(nèi)容提供商(Content Provider)。Android中所有程序的流程都運行在Activity 之中,它是所有程序的根本,是Android當中最基本的模塊之一。在Android的程序當中,Activity一般代表手機屏幕的一屏。事實上,Activity與普通Web頁面類似,在實際開發(fā)的過程中也可在Activity當中可以添加一些UI控件。一般一個Android應(yīng)用是由多個Activity組成的。Activity之間可以像Web頁面一樣互相切換。
2 Web service技術(shù)
2.1 Web Service簡介
Web Service是一種服務(wù)導向架構(gòu)的技術(shù),通過標準的Web協(xié)議提供服務(wù),目的是保證不同平臺的應(yīng)用服務(wù)可以互操作。它基于SOAP等協(xié)議的遠程調(diào)用標準,通過Web Service可以將不同操作系統(tǒng)平臺,不同語言,不同技術(shù)整合到一起。依據(jù)Web Service規(guī)范實施的應(yīng)用之間,無論它們所使用的語言、平臺或內(nèi)部協(xié)議是什么,都可以相互交換數(shù)據(jù)。Web Service是自描述、自包含的可用網(wǎng)絡(luò)模塊,可以執(zhí)行具體的業(yè)務(wù)功能。
Web Service架構(gòu)具有的特點有:首先是連網(wǎng)特性,Web Service的服務(wù)器端和客戶端應(yīng)用程序都能連網(wǎng);其次,在大多數(shù)情況下使用SOAP標準作為數(shù)據(jù)通信格式的標準,且遵循的標準必須是開放性的。第三,客戶端和服務(wù)器端的系統(tǒng)是松耦合的,即Web Service不關(guān)心客戶端和服務(wù)器端所使用的操作系統(tǒng)、對象模型或者編程語言。
2.2 Android通過Web Service訪問異構(gòu)系統(tǒng)數(shù)據(jù)
Web Service是基于SOAP協(xié)議的。簡單對象訪問協(xié)議是交換數(shù)據(jù)的一種協(xié)議規(guī)范,是一種輕量的、簡單的、基于XML(標準通用標記語言下的一個子集)的協(xié)議,它被設(shè)計成在WEB上交換結(jié)構(gòu)化的和固化的信息。
Web Service使用SOAP用來傳遞信息的格式。SOAP可以和現(xiàn)存的許多因特網(wǎng)協(xié)議和格式結(jié)合使用,包括超文本傳輸協(xié)議(HTTP),簡單郵件傳輸協(xié)議(SMTP),多用途網(wǎng)際郵件擴充協(xié)議(MIME)。SOAP使用基于XML的數(shù)據(jù)結(jié)構(gòu)和超文本傳輸協(xié)議(HTTP)的組合定義了一個標準的方法來使用Internet上各種不同操作環(huán)境中的分布式對象。
在Android中訪問Web Service的方法有兩種,一種是通過鏈接進行訪問;另一種是通過第三方類庫進行訪問。
通過第三方類庫進行訪問,需要下載一個第三方Jar包:ksoap2。這個包可以從Google上下載,即ksoap2-Android項目包。這個第三方包提供了Android 調(diào)用Web Service的一些接口。使用它,可以使得Android方便地與服務(wù)器端進行數(shù)據(jù)交互?;玖鞒淌鞘紫纫玫椒?wù)器提供的地址、命名空間、方法名,參數(shù)的鍵和返回值的鍵;然后Android應(yīng)用程序通過這些鍵來傳遞值。
2.3 Android的兩種開發(fā)方式
Android App又可分為Web App和Native App。其中,Web App是基于普通網(wǎng)站形式的App,而Native App是基于本地系統(tǒng)的應(yīng)用,相當于電腦的桌面應(yīng)用程序。兩種App各有優(yōu)缺點,相對而言,Native App更加高效,但開發(fā)難度更加大。當然,有些功能用Web App的形式是無法實現(xiàn)的,必須用Native App的形式進行開發(fā)。本文主要討論Web應(yīng)用系統(tǒng)與Android原生App的整合問題。
3 Web服務(wù)器端與Android移動端的整合
3.1 以Web service作為通用的接口
Android端與服務(wù)端可以通過不同的方式通信,其中一種比較通用的方式就是使用Web service。在Android與有些服務(wù)端語言開發(fā)的應(yīng)用通信,則必須使用Web service。比如Android客戶端與.NET服務(wù)器端通信,則必須采用Web service,因為Android客戶端沒辦法直接訪問.NET頁面并操作后端數(shù)據(jù)庫。
因此,Web service主要目的就是為了實現(xiàn)Android客戶端和Web網(wǎng)站端進行整合。因為Android Native App客戶端是用Java語言設(shè)計的,而Web網(wǎng)站端則是用其他語言進行設(shè)計的。兩種不同語言開發(fā)的系統(tǒng),需要用特定的方法對系統(tǒng)進行整合。為了實現(xiàn)Android客戶端與網(wǎng)站服務(wù)器端及與SQL Server數(shù)據(jù)庫服務(wù)器端等進行通信,需要構(gòu)建Web service比如.NET Web service。如果采用的數(shù)據(jù)庫是SQL Server數(shù)據(jù)庫,通過Web Service,就可以將對SQL Server數(shù)據(jù)庫服務(wù)器相關(guān)操作的接口發(fā)布出去,供Android客戶端進行調(diào)用。
3.2 Web service與服務(wù)器端整合的架構(gòu)設(shè)計
下面以Android Native App客戶端與基于.NET的服務(wù)器端平臺的通信為例,說明Web service與服務(wù)器端的整合架構(gòu)。
Android Native App客戶端主要實現(xiàn)客戶端的功能,比如信息的查看、信息的咨詢等,主要是通過移動端進行操作。
由于Web端使用到的語言是ASP.NET語言,而Android Native App用的是Java語言,兩種技術(shù)所開發(fā)出來的平臺是異構(gòu)的,故需要進行系統(tǒng)整合。
要使基于Java SE技術(shù)的Android Native App與基于.NET技術(shù)的Web服務(wù)器端及SQL Server數(shù)據(jù)庫進行通信和交換數(shù)據(jù),要通過Web Service進行。
Android Native App客戶端功能模塊及其與Web端整合的框架圖1所示。
由圖1可見,Web Service成為Android Native App客戶端及服務(wù)器端的粘合劑作用,它是這兩個子系統(tǒng)的橋梁。Android Native App客戶端通過Web Service與SQL Server數(shù)據(jù)進行通信和交換數(shù)據(jù)。Android Native App客戶端對數(shù)據(jù)庫操作的結(jié)果既可以在移動客戶端查看,也可以在Web端查看。
3.3 移動客戶端與Web Service通信的實現(xiàn)流程
要實現(xiàn)Android對ASP.NET服務(wù)器端的訪問,需要編寫Web Service接口,通過Web Service接口連接所需要的操作。
對于.NET應(yīng)用程序來說,可以借助Visual Studio軟件對系統(tǒng)進行設(shè)計和實現(xiàn)。對于Android客戶端的實現(xiàn),可以借助Eclipse工具。Android Native App常用的開發(fā)工具是Eclipse。在軟件架構(gòu)中,盡量采用分層結(jié)構(gòu)。其中,與ASP.NET Web Service進行通信的方法可單獨計一個公共通信類,以實現(xiàn)移動端與服務(wù)器端的交互。
移動終端一般分為幾個基本頁面,比如登錄驗證頁以及相關(guān)的功能頁面。Android Native App的頁面由兩部分組成,一部分是XML形式的界面設(shè)計文件,一部分是頁面對應(yīng)的Activity。對頁面的控制及業(yè)務(wù)代碼在Activity文件中實現(xiàn)。
以登陸頁為例,其中登錄頁的Activity包含用戶驗證、修改用戶名、修改密碼等方法。Android的原生程序就是由這些頁面組成的,通過在頁面的操作,從服務(wù)器端請求信息,或者將信息發(fā)送給服務(wù)器端。當然,服務(wù)器端與客戶端的交互還需要進行數(shù)據(jù)格式的統(tǒng)一與轉(zhuǎn)換。
在Android端來說,可以讓幾個Activity共享一個Web Service公共通信類,在通信類中封裝與Web Service通信的基本方法。
Web Service層發(fā)布在Web服務(wù)器端,Web Service層封裝了與移動端相對應(yīng)的Web Service方法。
上面已提到,Web Service是一種基于SOAP協(xié)議的遠程調(diào)用標準,通過Web Service可以將不同操作系統(tǒng)平臺、不同語言、不同技術(shù)整合到一塊。對于Android原生應(yīng)用程序與Web Service通信來說,Android SDK中還需要使用第三方的SDK來調(diào)用Web Service。這個第三方SDK可以從Google下載相關(guān)的SDK項目包。
具體而言,Android調(diào)用Web Service步驟有幾步:
(1)指定Web service的命名空間和調(diào)用的方法名;
(2)如果調(diào)用方法有參數(shù),則需要設(shè)置調(diào)用方法的參數(shù)值;
(3)SOAP請求信息的生成。該信息由SoapSerializationEnvelope對象來進行描述。
(4)創(chuàng)建HttpTransportsSE對象。通過HttpTransportsSE類的構(gòu)造方法可以指定Web Service的WSDL文檔的URL;
(5)使用getResponse方法獲得Web Service方法的返回結(jié)果。
4 結(jié)論
以Web Service作為異構(gòu)系統(tǒng)的整合技術(shù)是一種較為常用的整合技術(shù),因為Web Service是語言中立的,它不受開發(fā)語言和操作系統(tǒng)的影響,因此,利用它能進行跨平臺開發(fā)。在傳統(tǒng)的基于電腦的Web應(yīng)用與移動App的整合應(yīng)用中,Web Service能發(fā)揮關(guān)鍵的作用,它可以開發(fā)一種通用的異構(gòu)系統(tǒng)接口,使得移動端與不同語言開發(fā)的服務(wù)器端進行整合。
參考文獻
[1]宋小倩,周東升.基于Android平臺的應(yīng)用開發(fā)研究[J].軟件導刊,2011,10(2):104-106.
[2]王志勤.Web App還是Native App[J].商學院,2012,11(5):16-17.
[3]張趁香.基于Web Services的高校教學質(zhì)量監(jiān)控系統(tǒng)的分析與設(shè)計[J].電腦知識與技術(shù),2011,21(35):30-31.
[4]StephenWalther,Kevin Scott Hoffman,Nate Dudek.ASP.NET4 Unleashed[M].Amarican:Sams Publishing,2010.
[5]劉艾俠.基于Asp.net的web service調(diào)用[J].科技信息,2010,21(23):76-76.
作者簡介
羅明挽(1979-),男,廣東省陽江市人。陽江職業(yè)技術(shù)學院講師,大學本科學歷。研究方向為Web應(yīng)用開發(fā)。
作者單位
陽江職業(yè)技術(shù)學院 廣東省陽江市 529500