許珩
【摘要】本文針對移動電子商務應用其中重要一種的PIM(Personal information management)個人信息管理應用,設計出了基于J2ME的手機客戶端、WEB服務器和后臺數據庫三層框架結構的移動PIM系統,并對核心SyncML數據同步協議進行了詳細的分析,研究了在J2ME平臺下實現SyncML中定義的慢同步及雙向增量同步邏輯的解決方案。
【關鍵詞】移動PlM系統 J2ME SyncML協議
【中圖分類號】TN929.53 【文獻標識碼】A 【文章編號】1672-5158(2013)04-0153-02
一、引言
作為移動電子商務應用中重要一種的PIM(Personal informationmanagement)個人信息管理應用,是受到廣泛關注的一個新興領域。移動終端PIM是指用戶將移動終端中的信息(通訊錄,日程安排等)以無線或者有線方式與電腦或者PIM服務器保持一致,并能使用多種終端、多種接人手段查詢和管理信息。由于移動終端操作系統以及各系統HM平臺接口的多樣性以及PIM協議的私有性使得PIM服務往往只能針對某個單一手機操作系統,PIM服務的通用性和可擴展性受到了移動終端系統軟硬件條件的極大的限制。
本文研究了基于J2ME平臺的HM相關技術,設計出了基于J2ME的手機客戶端、WEB服務器和后臺數據庫三層框架結構,并主要對核心SyncML數據同步協議進行了詳細的分析,研究了在J2ME平臺下實現SyncML中定義的慢同步及雙向增量同步邏輯的解決方案,在考慮了移動設備資源缺乏的情況下,實現了J2ME平臺移動PIM客戶端,初步達到了移動應用程序的易用性和系統的可擴展性的目標。經過深入研究和完善,本文采用MVC設計模式,研究并實現了一個功能穩定、運行可靠的J2ME平臺下的PIM個人信息管理系統,符合移動電子商務的應用環境,在支持KVM的移動終端平臺上開發的移動PIM系統使得通用性和擴展性問題在解決方案的性能上得到了進一步的提高。
二、系統框架以及重要設計
(一)系統總體框架
模型一視圖一控制器(MVC)一種軟件設計模式,最近幾年逐漸成為Sun公司J2EE平臺的設計模式,MVC強制性的使應用程序的輸入、處理和輸出分開。MVC應用程序分成三個核心部件:模型(Model)、視圖(View)、控制器(Control)。MVC標準模式經典的應用就是將JSP+Servlet+Javabean+JDBC技術編寫CGI程序,并且用于數據動態加載以及頁面響應。它們各自處理自己的任務。視圖是移動終端與用戶交互的界面。對于舊式的Web應用程序來說,視圖完全是由HTML元素組成的界面,隨著新的技術已層出不窮,在新式的Web應用程序中,雖然HTML依舊在視圖中扮演著重要的角色,但是諸如MacromediaFlash,XHTML,XML/XSL,WML等一些標識語言以及Web services的出現,HTML以及不能滿足Web應用的發展。MVC的一大優點是它能為應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發生,作為視圖來講,它只是作為一種輸出數據并且允許用戶操縱的方式,不管這些數據是聯機存儲的還是一個通信錄或者日程列表。
PIM移動終端信息管理系統采用內嵌式的程序設計,集成在移動終端的操作系統中,移動終端用戶登錄平臺系統后,通過3G網絡訪問相應WEB服務器來實現移動商務信息管理功能,獲取WEB服務,改變了過去僅依靠WAP或短信動通信技術,使得移動終端用戶不受一般電子商務的各種技術限制,能夠直接使用移動終端平臺進行通信錄管理、日志管理、獲得PIM同步服務、移動終端交換電子名片,應用等操作,利用高速無線網絡的帶寬優勢,選擇等級不同的加密登陸方式,獲取3G時代高速移動PIM服務。整個系統在網絡傳輸過程中采用了系統要求的Basic64以及MD5算法進行加密,保證了個人信息的安全。同時,系統平臺采用的J2ME技術開發,保證了系統穩定性好,界面友好,操作人性化,易用性好,管理安全等特性。平臺總結構圖1如下:
從邏輯構成上講,PIM系統包括三個部分:服務器端,移動終端,數據庫端。
服務器端:服務器用于實現移動個人信息管理系統的應用功能,并且也為移動終端提供個人數據同步服務和封裝管理功能的狀態,并且為MIDlet提供系統訪問的接口和方法,以及管理信息的途徑。Tomcat作為一個開源的servlet容器,是由JAVA進行編寫的并能夠被不做改變得移植到不同架構、OS平臺上,Tomcat服務器及其應用程序符合JSP規范,能夠完整實現servlet J2ME PIM系統應用開發設計。
移動終端:對于具備不同手機軟硬件特性,但是支持JVM虛擬機的不同移動終端設備來說,采用J2ME技術能夠使應用程序MIDlet在各種手機以及PDA上進行移植和運行,并以此屏蔽掉各移動終端軟硬件的差異性。MIDP2.0提供高層用戶界面決定PIM終端數據界面的展示方式,RMS接口提供數據的持續性保存以及GCF接口提供網絡的連接方式等。移動終端應用程序可以在支持J2ME的手機終端或者PDA上進行手機模擬器軟件運行。
數據庫:負責系統對于邏輯數據的管理和存儲,實現數據的持續性和一致性。MYSQL數據庫具備功能強大、使用方便、運行快速安全的優點,作為本系統采用的數據庫,MYSQL數據庫使得管理簡化,并增強了PIM應用程序所需的可靠性和易用性。系統移動終端的MIDlet容器,提供用戶UI并進行人機交互和網絡通信發起;WEB服務器作為PIM系統的訪問入口,處理移動終端MIDlet的管理和同步請求;由符合JSP規范的servlet調用應用服務器的JavaBean來完成數據邏輯運算,JavaBean使用JDBC方式對數據存儲庫進行存取訪問,然后將運算結果返回Servlet;Servlet經過處理將處理數據結果以返回到移動終端,并通過MIDlet容器中的用戶UI界面呈現給用戶.系統采用MVC架構有利于系統的維護,以及業務功能的擴展。
(二)服務器端詳細設計
服務器端利用基于J2EE架構的tomcat作為服務器,具體實現如下l 3l:
1、服務器端需要對同步引擎核心模塊進行實現:服務器通過解析客戶端發送的SymeML協議數據包并進行XML解析并且判斷,包括服務器端和移動終端共同采取的同步類型(雙向同步或者慢同步,代碼201和200),對認證信息進行校驗,解析出客戶端發送同步數據源的狀態,并在同步初始化過后修改(添加,刪除和更新)服務器中相應的數據存儲對象。
2、JDBC用于與1、中的模塊進行數據庫連接,本系統采用MYSQL數據庫.該數據庫中保存的信息分為3類:(1)客戶端的認證信息、登陸的用戶名和密碼,客戶端的設備類型和設備的屬性狀態;(2)客戶端同步的數據源類型和對應的數據信息(聯系人按照vCard格式保存,日程/任務按照iCalender格式來保存);(3)涉及在同步過程中的關于SyenML協議的一些信息,包括同步的同步錨,同步的系統日志,同步過程中對數據源的處理命令。
3、建立HTTP協議同SymeML同步協議底層的綁定,并且通過使用Java中的通用網絡連接框架GCF中的Httpconneetion來實現Http數據傳輸,達到傳輸的透明性,同時結合分布式并行處理方式以及多線程調度來保持和多客戶端的通信。
4、對該服務器端進行擴展,利用Javascript的腳本語言和JDBC數據庫連接來開發基于Web的應用程序來訪問服務器端的數據存儲對象,從而也提供客戶端對服務器上的數據進行修改以及管理員對整個系統進行維護和管理的功能.由于移動終端的研究應用被作為本平臺重點考慮并設計的對象,所以沒有過多考慮PC機瀏覽器部分。
三、系統數據同步架構
(一)SyncML同步框架
作為一個應用層協議,SyncML協議是唯一一種行業通用的移動數據同步化協議,用以真正實現使用任何終端設備均可隨時隨地訪問任何網絡數據。本系統通過對SyneML數據同步協議的研究以及二次開發為移動客戶端提供PIM信息的數據同步以及交換,通過使用XML在傳輸層傳輸數據,減少客戶端占用的系統資源和網絡資源,提高了效率以及系統的通用性。
SyncML同步框架由提供數據同步服務的網絡服務器端和移動終端以及中間的移動模型框架組成。終端和網絡服務器通過常用的網絡傳輸方式進行連接。終端和服務器端通過SyneML表示協議所規定的SyncML接口進行消息通信。移動框架由雙向的“同步引擎”、“同步代理”以及“同步適配器”組成。“同步引擎”負責管理整個操作過程.“同步代理”管理“同步引擎”對網絡的訪問,管理客戶端和服務器端的應用進行數據同步的相互通信過程.“同步代理”通過調用“面向同步代理的應用程序接口”完成這些功能.“同步適配器”負責消息的收發過程,在這個過程中A和B雙方相互通信,收發SyncML數據包。
(二)數據同步重要技術
由于終端和服務器端需要進行同步,所以同步協議的實現需要記錄發生在本次同步和前次同步之間所有的數據修改,并且對數據的修改通過替換,增加和刪除的操作來實現。
1.使用同步錨準確記錄同步時間范圍:
為了保證同步的完整性和數據一致性,使用了數據庫中的同步錨來記錄服務器和同步的時間。為了減少耦合性,增強獨立性,客戶端和服務器分別都有三個同步錨,Last,Next,Stored。Last同步錨對上一次同步發生的時間進行記錄,Next同步錨對本次同步發生的時間進行記錄,Stored表示服務器端儲存的與特定客戶端關聯的同步錨。初始化同步時,客戶端和服務器都將各自的兩個同步錨發給對方。同步錨必須在同步正常結束后進行更新,如果同步終端之間的通信沒有正常結束,那么終端必須不能更新同步錨,如果通信中斷后又重新開始,則Next同步錨的值需要被更新。端關聯的同步錨。當然,初始過程的兩個包中還包括其它信息,單就同步錨而言,存在一個服務器端的比較,判斷當前的同步采取什么方式:如果錨不匹配,服務器判斷當前是一個新同步或前次同步失敗。處于這種情況下通常會重新執行慢同步。如果錨匹配,則結束同步初始化,開始交換更改數據日志并且更新雙方個人信息數據。如果數據成功更新后,服務器及客戶端要刷新自己存儲的同步錨,做好下次同步的準備。
2.PIM數據ID在服務器和客戶端之間的映射:
同樣源于“耦合性減小,獨立性增強”原則,并且雙方的ID可能不匹配,服務器端和客戶端需要分別產生并且保存GUID全局數據記錄ID以及LUID本地數據記錄ID,并且由服務器保存并且維護一份GUID-LUID的映射表。也就是說,服務器必須分別記錄同一個數據記錄在客戶端和服務器端的ID。
客戶端保存本地LUID表,服務器端保存全局GUID表和LUID與GUID的映射關系表。LUID是由客戶端賦值數據記錄的,這意味著即使是服務器端添加了一個新的數據項,在客戶端該數據項的LUID仍然是由客戶端所指定。而當客戶端通過Map命令將數據項的本地ID發回給服務器端,服務器在收到客戶端的Map命令進行數據項進行映射后,服務器端就能根據客戶端的LUID更新服務器端的LUID-GUID映射表,使得兩個ID得到對應。
3.解決同步中發生沖突
如果客戶端和服務器端對同一個數據項同時實行修改,就會產生沖突。通常情況下,由服務器端的同步引擎提供解決方法,并通知客戶端沖突解決結果。由于目前移動3G客戶端的軟硬件水平加強,本系統主要對智能手機終端應用進行研究,所以客戶端也能夠有同步引擎并且能夠自己解決沖突。
(三)系統數據同步實現方式
SyncML協議總共有7種同步類型,用于服務器與客戶端不同同步情況以及沖突處理策略,下面重點介紹系統實現并且常用的兩種同步的過程:雙向增量同步以及慢同步。
1.雙向增量同步作為常用的模式,用于客戶端和服務器相互修改并且進行數據交換。同步初始化完成后,客戶端首先發送移動終端修改信息到服務器,并將同步錨和修改過的終端數據的信息發到服務器,服務器在收到客戶端的個人信息的修改信息之后,根據客戶端發送信息處理同步請求,并對收到的修改信息進行分析,最后當同步分析結束之后,將服務器修改的數據信息發給客戶端,最后客戶端修改并更新其本地數據庫,發送到客戶端的數據包括服務器對數據的分析結構以及服務器在上次同步結束到本次同步開始這個時間段內所修改數據信息。
2.慢同步是把客戶端和服務器端的不同數據庫中的數據逐條進行比較并修改的一種雙向同步,是由客戶端首先發起的同步方式。實際中,客戶端把所有的個人數據信息發到服務器端,由服務器端將數據信息和服務器上的數據進行同步對比。在同步對比后,服務器將客戶端需要進行修改的數據信息發回給客戶端。客戶端需要返回所有服務器增加記錄的映射信息。客戶端和服務器端的異常都可能導致進行慢同步,比如如客戶端或服務器丟失信息的改變記錄,產生Guid和Luid的沖突,同步錨丟失等情況。發生異常后在移動終端和服務器端進行慢同步,移動終端初始用Alert命令通知服務器同步類型為Slow Sync。服務器端也會在恢復終端初始化包中會包含一個Alert命令。移動終端接收到之后重新發起Slow Sync。如果客戶端或者服務器端在收到正常同步的Alert命令后仍然需要進行慢同步,并同時發送Slow Sync的Alert命令。