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