摘 要:本文對(duì)數(shù)據(jù)管理過程中出現(xiàn)的問題:數(shù)據(jù)不一致,有冗余性,獨(dú)立性差提出了面向服務(wù)的移動(dòng)應(yīng)用數(shù)據(jù)管理的解決方案。該方案采用4層架構(gòu):客戶端,VPN,Web Service和服務(wù)器,可以保障系統(tǒng)的安全性、可重用性和可移植性。然后,本文提出了移動(dòng)應(yīng)用數(shù)據(jù)管理的基本功能以及相應(yīng)流程,并結(jié)合例子給出了具體實(shí)現(xiàn)。
關(guān)鍵詞:面向服務(wù);移動(dòng)應(yīng)用;數(shù)據(jù)管理;Web Service
中圖分類號(hào):TP311.13
當(dāng)今世界,移動(dòng)設(shè)備正成為人們不可或缺的通信設(shè)備,人們使用移動(dòng)設(shè)備瀏覽網(wǎng)頁,與人交流以及發(fā)布信息??梢哉f,移動(dòng)設(shè)備是人們生活中非常重要的組成部分。移動(dòng)設(shè)備廣泛使用使得移動(dòng)應(yīng)用也受到人們的歡迎。迄今為止,已有41萬蘋果移動(dòng)應(yīng)用可以供用戶下載,70萬Android應(yīng)用由用戶選擇,6萬Win8應(yīng)用要為用戶提供獨(dú)特的體驗(yàn)。在移動(dòng)應(yīng)用的開發(fā)和維護(hù)當(dāng)中,數(shù)據(jù)的管理是一個(gè)重要問題。怎樣提供一個(gè)良好的方案進(jìn)行數(shù)據(jù)的管理,展現(xiàn)一個(gè)可維護(hù),可重用,易使用,安全的平臺(tái)是本文主要解決的問題。
1 移動(dòng)應(yīng)用的數(shù)據(jù)管理的發(fā)展
移動(dòng)應(yīng)用發(fā)展的早期,一般使用文件系統(tǒng)來管理數(shù)據(jù),移動(dòng)應(yīng)用只需要從本地文件中進(jìn)行加載和存儲(chǔ)數(shù)據(jù),不需要和服務(wù)器進(jìn)行交互,適合在網(wǎng)絡(luò)無覆蓋的情況下使用。這種方式比較簡單,但是不能解決數(shù)據(jù)冗余和數(shù)據(jù)獨(dú)立性的問題;而且,文件系統(tǒng)不能管理龐大的數(shù)據(jù)量。
數(shù)據(jù)庫是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉庫。數(shù)據(jù)庫存放的數(shù)據(jù)是結(jié)構(gòu)化的,沒有有害的數(shù)據(jù)和不必要的冗余,可以被多個(gè)應(yīng)用程序共享。而移動(dòng)數(shù)據(jù)庫擴(kuò)展了傳統(tǒng)的數(shù)據(jù)庫系統(tǒng),它是由客戶與服務(wù)器的節(jié)點(diǎn)動(dòng)態(tài)連接的。移動(dòng)數(shù)據(jù)庫的數(shù)據(jù)在地理上是分散的,邏輯上是集中的,用戶要實(shí)現(xiàn)數(shù)據(jù)處理和查詢功能可以使用終端和節(jié)點(diǎn)服務(wù)器的連接。
基于SOA的移動(dòng)應(yīng)用數(shù)據(jù)管理就是服務(wù)器提供一套訪問數(shù)據(jù)的Web Service,移動(dòng)應(yīng)用可以使用這些Web Service從服務(wù)器下載數(shù)據(jù),并保存在本地文件存儲(chǔ)中,支持在離線狀態(tài)使用。根據(jù)移動(dòng)應(yīng)用的具體業(yè)務(wù),移動(dòng)應(yīng)用還可以使用Web Service將某些數(shù)據(jù)保存到服務(wù)器上,實(shí)現(xiàn)客戶端和服務(wù)器數(shù)據(jù)的同步。
2 面向服務(wù)的移動(dòng)應(yīng)用數(shù)據(jù)管理的設(shè)計(jì)
在將軟件應(yīng)用移植到移動(dòng)應(yīng)用時(shí),需要根據(jù)移動(dòng)應(yīng)用的業(yè)務(wù)的常用性,易用性和可維護(hù)性來選擇移動(dòng)應(yīng)用的功能。面向服務(wù)的移動(dòng)應(yīng)用的主要功能包括: 根據(jù)用戶的查詢請(qǐng)求,訪問服務(wù)器的數(shù)據(jù)并進(jìn)行本地緩存;根據(jù)用戶的保存請(qǐng)求,保存數(shù)據(jù)到服務(wù)器中;在離線狀態(tài)下可以使用移動(dòng)應(yīng)用的功能。除了滿足移動(dòng)應(yīng)用的功能需求,非功能需求也很重要。面向服務(wù)的移動(dòng)應(yīng)用的非功能需求包括:(1)安全性。(2)可重用性。(3)可維護(hù)性。(4)可移植性等。
為了實(shí)現(xiàn)移動(dòng)應(yīng)用的功能需求和相應(yīng)的非功能需求,以移動(dòng)銷售助手為例,該系統(tǒng)的業(yè)務(wù)實(shí)體有:賬戶,銷售訂單,聯(lián)系人,銷售機(jī)會(huì),合同和活動(dòng)。除了業(yè)務(wù)實(shí)體,其他的主要實(shí)體有:國家,地區(qū),活動(dòng)類別,機(jī)會(huì)團(tuán)體,銷售地區(qū)等。對(duì)于業(yè)務(wù)實(shí)體數(shù)據(jù)的加載,需要根據(jù)系統(tǒng)的業(yè)務(wù)流程來實(shí)現(xiàn);由于主數(shù)據(jù)是在系統(tǒng)中被其他業(yè)務(wù)實(shí)體所使用的數(shù)據(jù),是在整個(gè)系統(tǒng)中共享的數(shù)據(jù),所以,主數(shù)據(jù)的加載需要在應(yīng)用啟動(dòng)的時(shí)候進(jìn)行。
系統(tǒng)的E-R圖如下:
3 面向服務(wù)的移動(dòng)應(yīng)用數(shù)據(jù)管理的實(shí)現(xiàn)
在面向服務(wù)的移動(dòng)應(yīng)用的數(shù)據(jù)管理的實(shí)現(xiàn)中,系統(tǒng)體系結(jié)構(gòu)包括如下4層:客戶端,VPN(虛擬專用網(wǎng)絡(luò)),Web Service和服務(wù)器組成??蛻舳诵枰卿沄PN才能訪問服務(wù)器的數(shù)據(jù),保證了數(shù)據(jù)傳輸?shù)陌踩?。以移?dòng)銷售助手為例,在訪問銷售訂單時(shí),詳細(xì)過程如下:
(1)用戶選擇查詢賬戶下的所有的銷售訂單。
(2)系統(tǒng)生成查詢字符串。
(3)系統(tǒng)以查詢字符串通過Web Service請(qǐng)求服務(wù)器。
(4)服務(wù)器響應(yīng)請(qǐng)求,將銷售訂單列表以xml格式返回給應(yīng)用。
(5)應(yīng)用解析xml并顯示銷售訂單列表。
具體代碼如下:
DataServiceQuery
LoggingEventSource.Log.Debug(\"Backendcall: '\" + query.RequestUri.ToString() + \"'\");
odataSalesOrderList = await query.ExecuteAsync();
SalesOrder odataSO = odataSalesOrderList.First();
OdataUtil.MapSingleSalesOrderOdataEntityToVOWithSingleSalesOrderPassedIn(odataSO, ref so, parentAcc);
加載活動(dòng)類別主數(shù)據(jù)的詳細(xì)過程如下:
(1)用戶選擇啟動(dòng)應(yīng)用。
(2)系統(tǒng)在啟動(dòng)應(yīng)用時(shí),生成查詢活動(dòng)類別的字符串。
(3)系統(tǒng)通過Web Service向服務(wù)器發(fā)出請(qǐng)求。
(4)服務(wù)器將聯(lián)系人的列表以xml格式返回給應(yīng)用。
(5)應(yīng)用解析xml并將結(jié)果加載到內(nèi)存。
具體代碼如下:
rootAccount.Categorys.Items.Clear();
string partUriString = \"GetActivityCategoryList\";
Uri uri = new Uri(partUriString, UriKind.Relative);
LoggingEventSource.Log.Debug(\"Backendcall: '\" + uri.ToString() + \"'\");
MSAExceptionHandler.ResetError(rootAccount);
IEnumerable< Category> categories = await ctx.ExecuteAsync< Category>(uri);
foreach (Category category in categories)
{
Category domainCategory = rootAccount.Categorys.Create();
domainCategory.CategoryCode = category.CategoryCode;
domainCategory.CategoryName = category.CategoryName;
}
4 結(jié)論
可見,采用面向服務(wù)的移動(dòng)應(yīng)用的數(shù)據(jù)管理解決方案可以克服文件系統(tǒng)管理帶來的問題,保證數(shù)據(jù)的一致性和獨(dú)立性。采用客戶端,VPN,Web Service和服務(wù)器的系統(tǒng)體系結(jié)構(gòu)能很好的解決系統(tǒng)安全性的問題。另外,該方案還可以應(yīng)用于其他的移動(dòng)應(yīng)用,具有高度的重用性和可移植性。
參考文獻(xiàn):
[1]饒?jiān)?面向服務(wù)體系結(jié)構(gòu)的企業(yè)資源計(jì)劃系統(tǒng)應(yīng)用模型與集成策略[J].計(jì)算機(jī)集成制造系統(tǒng),2006,12(10):1570-1576.
[2]張斌.移動(dòng)數(shù)據(jù)庫的數(shù)據(jù)管理技術(shù)研究[D].北方工業(yè)大學(xué),2010,5:12-13.
作者單位:北京航空航天大學(xué) 軟件學(xué)院,北京 100083