摘要:隨著3G網絡的覆蓋,Pocket PC在智能化小型數據庫領域應用越來越多。文中分析了SQL Server Mobile合并復制的模型,介紹了開發環境的搭建,在此基本上實現了.Net Compact FrameWork下合并復制的C#代碼,并測試了合并復制代碼,測試結果顯示Pocket PC與遠程SQL Server 2005保持數據同步。
關鍵詞:Pocket PC;合并復制;訂閱;同步
中圖分類號:TP393.09
文獻標識碼:A
0 前言
Pocket PC(簡稱PPC)是基于微軟的Windows Mobile操作系統的一種PDA掌上電腦。Pocket PC是一種手持設備,可幫助存儲并檢索電子郵件、聯系人和約會信息,播放多媒體文件,玩賞電子游戲,交換文本消息,瀏覽Web內容等,能夠與臺式機實現信息交換和數據同步。所以Pocket PC可以作為移動數據中心,采取數據后,通過GPRS網絡或者WIFI與遠程數據庫連接,自動與遠程數據庫保持數據同步,可以確保數據的可靠性和實時性。與其他操作系統的PDA相比,PPC所公認的優勢在于:1.友好的用戶界面和更佳的易用性;2.與PC平臺有極佳的兼容性;3.更廣泛的軟件及硬件擴展支持,制造Pocket PC的著名廠家有惠普、戴爾、華碩電腦等。所以Pocket PC在貨物銷售與后勤分配、工業部門、生產企業、材料流通和服務等領域得到了快速的普及和推廣。
1 SQL Server Mobile合并復制
合并復制技術十分適合嵌入式數據庫與遠程SQL Server 數據庫之間的數據同步,它可以在嵌入式設備與數據庫服務器之間交換數據,并且可以解決數據沖突機制。Pocket PC使用的是嵌入式SQL Server Mobile數據庫,既可以單獨在設備端上用于存儲和管理數據,也可以在遠程數據庫連接的情況下,實現數據同步。SQL Server Mobile設備端環境主要包括數據庫引擎、數據庫文件以及SQL Mobile Agent(設備端代理)。同步時,服務器端環境是運行SQL Server和IIS的環境,駐留在IIS服務器上的SQL Server Mobile Edition的服務器代理處理來自設備中Client Agent發出的HTTP請求,通過合并復制技術與SQL Server進行通信,保持設備端和服務器端同步。它們之間的關系如圖1所示:
2開發環境搭建
(1)操作系統的選擇和IIS組件的安裝
操作系統可以選擇windowsXP、windows 2K、windows 2003均可,本文選擇的是windows XP,默認是不安裝IIS的,可以打開“控制面板”,雙擊“添加或刪除程序”,在“windows組件中”選擇IIS,開始安裝IIS。
(2)數據庫和開發語言的選擇
我們可以選擇SQL Server 2000或者SQL Server 2005,這里推薦選擇后者,因為SQL Server 2005能更好地支持數據的復制和訂閱。在安裝SQL Server 2005時,注意安裝結束時,啟動服務“SQL Server Agent”,否則不支持數據的復制和訂閱。編程環境,我們選擇VS 2005,選擇C#語言,同時要求先安裝IIS再安裝VS 2005。
3實現過程
3.1 SQL Server Mobile數據庫中的合并復制的工作流原理:
(1)服務器端中實施SQL Server 2005數據庫發布;
(2)在設備端通過SQL Server Mobile的Replication的編程接口創建針對(Publication)數據庫的設備端數據庫訂閱;
(3)在設備端上訂閱數據庫成功之后,可以對SQL Server Mobile數據庫進行修改操作;
(4)在Pocket PC支持GPRS或WIFI連接情況下,設備端數據庫與服務器數據庫之間可以進行數據同步操作。
3.2數據庫發布和訂閱的設定
在數據庫服務器端SQL Server 2005中,在對象資源管理器中“右擊”復制,新建一個發布,我們把這個發布命名為“MyPublication”。創建完成后,測試一下MyPublication的快照代理狀態,如果成功,說明創建的發布是正確的。
創建成功后,可以配置IIS實現Web遠程同步。Pocket PC的SQL Server Mobile 客戶端代理需要通過網絡向遠程服務器端發出HTTP請求,這時可以使用IIS來實現同步。
實現Web遠程同步后,可以創建SQL Server Mobile數據庫訂閱。連接到“SQL Server Mobile”,向SQL Server 2005 數據庫創建訂閱,創建的訂閱命名為“MySubcription”。
3.3合并復制的實現
實現中,使用了.net Compact FrameWork提供的SqlCeReplication類。設置 SqlCeReplication 對象的多個屬性,然后調用 Synchronize 方法,可以保持Pocket PC和遠程數據庫同步。首先要求實例化一個SqlCeReplication對象repl,repl的InternetUrl屬性指定在連接到 SQL Server Mobile Server Agent 時使用的 URL,用于定義設備端代理通過網絡向服務器代理發出HTTP請求,以實現Web同步的URL,本文中使用http://機器名/用戶名/sqlcesa30.dll;Publisher屬性,指定 SQL Server 發行者的名稱,發行者是發布所在的、運行著 SQL Server 2005的計算機,文中使用的是在SQL Server 2005中建立的發布“MyPublication”; Subscriber 屬性指定訂戶的名稱,文中使用的是在SQL Server 2005中建立的訂閱“MySubcription”。同步的代碼如下:
{
repl = new SqlCeReplication();
repl.InternetUrl = InternetUrl;
repl.Publisher = Publisher;
repl.PublisherDatabase = PublisherDatabase;
repl.Publication = Publication;
repl.PublisherSecurityMode = SecurityType.NTAuthentication;
repl.SubscriberConnectionString = ConnectionString;
repl.Subscriber = Subscriber;
if (!File.Exists(AppPath))
{
repl.AddSubscription(AddOption.CreateDatabase);
}
//Synchronize with SQL Server 2005
repl.Synchronize();
}
catch (SqlCeException e)
{
MessageBox.Show(e.ToString());
}
finally
{
repl.Dispose();
}
上述代碼中,通過調用Synchronize方法,在 SQL Server Mobile 訂閱和 SQL Server 2005發行者之間調用合并復制,從而保持Pocket PC和遠程數據庫同步。
5 測試
測試環境的選擇:測試時Pocket PC選擇三星i900,該款PPC帶有WIFI功能,可以通過802.11協議連接無線路由器,無線路由器再連接到SQL Server 2005服務器端。測試時,待i900與PC機同步后,把移動數據庫文件UserDB.sdf拷貝到i900的My Document路徑下,再把上面代碼對應的工程文件編譯后生成的可執行文件拷貝到i900的任意文件夾下,運行后,在i900上修改數據,單擊同步后,如圖2所示。遠程數據庫服務器中的數據是否被更新?打開遠程數據庫,看看結果,如圖3所示,數據被更新。正好說明使用合并復制技術使i900和遠程的SQL Server 2005同步成功。
[參考文獻]
[1]彭智勇. 基于Pocket PC的便攜式故障診斷專家系統設計[J].裝甲兵工程學院學報.Feb 2008 Vol 22 No 1.
[2]田東風.W indows CE應用程序設計[M].北京:機械工業出版社, 2003.
[3]范盛榮.W indowsMobile應用程序開發實踐[M].北京:科學出版社, 2006.
[4] 廖中平,沈云中. 測量機器人與Pocket PC無線通信設計與實現[J]. 遼寧工程技術大學學報, 2007,(04) .
[5] 張志雄, 胡飛. 嵌入式移動數據庫技術分析研究[J]. 微處理機, 2008,(03)