999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Dotm im.Sync框架的And roid移動數據同步方法及應用*

2020-06-18 09:08:06周千明朱欣娟解建倉
計算機與數字工程 2020年4期
關鍵詞:數據庫系統

周千明朱欣娟解建倉

(1.西安工程大學計算機科學學院 西安 710048)(2.西安理工大學省部共建西北旱區生態水利國家重點實驗室 西安 710048)

1 引言

隨著移動通信與互聯網技術的迅速發展,運行在移動智能設備的各類APP大量涌現并應用到不同領域。從技術層面看,移動智能應用可以分為在線模式、純離線模式與“在線+離線”混合模式[1~2]。在線模式下系統數據一般存儲在服務器端的大中型數據庫(如SQL Server、Oracle、MySQL等),移動應用依賴于穩定可靠的網絡連接;純離線模式下系統數據一般存儲在移動終端的輕量級數據庫(如SQLite、Couchbase Lite、SQL Server CE等),移動應用不需要網絡連接;“在線+離線”混合模式則比較復雜,通常情況下系統數據存儲在服務器端,移動終端暫存部分數據,因而形成了分布式異構數據庫[3~4]。在移動應用運行過程中,當移動終端或服務器端執行數據更新操作后,為了保證數據的完整性和一致性,需要進行雙向的數據同步。然而,由于移動網絡本身具有復雜性、動態性、弱連接性以及通信延遲與帶寬相對有限等特性[5],因而移動應用的數據同步技術備受考驗。

在移動智能應用的大背景下,移動應用的數據同步逐漸成為熱點議題[6~8]。文獻[9]采用SDN技術建立移動數據同步機制,通過SDN的控制平面維護同步服務器的數據表。文獻[10]提出一種基于改進的消息摘要數據同步算法ISAMD,采用標準的SQL函數進行數據同步。這兩種移動數據同步策略的核心邏輯均依靠中間層的同步服務器完成,影響系統的部署成本和性能,難以滿足大多數移動應用的實際需求。文獻[11]與文獻[12]分別針對iOS與Windows移動平臺設計了相應的數據同步方案,缺點在于方案對平臺的可移植性有限。作為對以上移動數據同步方法的改進,微軟高級軟件工程師Sébastien Pertus在GitHub網站開源了一種跨平臺的關系數據庫同步框架Dotmim.Sync[13],該框架基于 微 軟.NET Standard 2.0[14]研 發,支 持 在IOT、Xamarin、.NET、UWP等環境中使用。基于此,本文重點依托Dotmim.Sync框架,以Android平臺的移動終端為例,探索一種高效實用的移動數據同步方法。

2 Dotm im.Sync框架簡介

Dotmim.Sync框架包含針對多種不同主流關系數據庫的子項目解決方案,每個子項目均發布為NuGet程序包[15],便于開發人員基于.NET平臺在項目中添加、移除與更新引用。在GitHub網站上展示的最新Dotmim.Sync框架中,一共發布7個NuGet程序包,如圖1所示。

圖1 Dotmim.Sync發布的NuGet程序包

其中,Dotmim.Sync.Core為核心NuGet程序包,主要執行數據同步的核心邏輯。Dotmim.Sync.SqlServer、Dotmim.Sync.Sqlite、Dotmim.Sync.MySql、Dotmim.Sync.PostgreSql分別為針對SQL Server、SQLite、MySQL、PostgreSQL數據庫的NuGet程序包,可以根據實際項目的數據庫部署需要,基于.NET平臺在服務器端與客戶端程序中分別引用相應的NuGet程序包,進而完成服務器端與客戶端數據庫的數據同步。Dotmim.Sync.Web.Server與Dotmim.Sync.Web.Client NuGet程序包實現基于HTTP協議通過Web服務器完成服務器端與客戶端數據庫的同步操作。

3 處理流程

本文提出的基于Dotmim.Sync框架的Android移動數據同步方法處理流程如圖2所示。

圖2 基于Dotmim.Sync框架的Android移動數據同步處理流程

在圖2中,采用雙向虛線連接的位于Android移動終端的SQLite與數據庫服務器SQL Server為最終需要進行數據同步的關鍵環節。首先,在服務器端創建.NETCoreWeb代理,調用Dotmim.Sync框架的Dotmim.Sync.SqlServer與Dotmim.Sync.Web.Server兩個NuGet程序包,面向客戶端提供基于REST風格的不同Web API(.NETCoreWeb API或.NETWeb API架構),實現數據交互的核心操作,數據交互格式采用輕量級的JSON格式。其次,.NET CoreWeb代理面向數據庫服務器端采用經典的ADO.NET技術訪問SQL Server。最后,在Android移動終端,Android APP采用SQLite.NET類庫完成對本地SQLite數據庫的CRUD基本操作。同時,需要調用Dotmim.Sync框架的Dotmim.Sync.Sqlite與Dotmim.Sync.Web.Client兩個NuGet程序包,實現對.NET CoreWeb代理提供的用于數據同步核心API的訪問。

4 關鍵技術及實現

4.1 創建基于REST風格的Web API

考慮到.NET Core框架整合了ASP.NETMVC與ASP.NETWeb API,具備明顯的跨平臺優勢,因此采用。NETCoreWeb API架構創建基于REST風格的Web API。核心步驟如下:

Step 1在服務配置方法中注冊同步提供程序:

services.AddSyncServer(connectionString,configuration=>{configuration.Add(new string[]{“Table”});});//connectionString為SQLServer數據庫的連接字符串,Table表示需要同步的數據表。

Step 2創建數據同步控制器,采用依賴注入的方式注入服務器端Web代理提供程序:

private WebProxyServerProvider webProxy;//定義服務器端Web代理類型成員變量

public SyncController(WebProxyServerProvider proxy){webProxy=proxy};//在構造方法中初始化webProxy,SyncController為控制器名稱。

Step 3在控制器的POST方法中調用HandleRequestAsync方法,執行異步請求,完成數據同步功能:

awaitwebProxyServer.HandleRequestAsync(this.HttpContext);//參數為請求上下文對象。

4.2 基于Xamarin.Android的移動終端APP實現

Xamarin.Android為.NET開發人員提供了完整的Android SDK,實現在Visual Studio IDE中利用C#創建完全本機的Android應用。基于此,為了有效利用Dotmim.Sync框架,基于Xamarin.Android設計與實現移動終端APP。主要步驟如下:

Step 1在項目的AndroidManifest.xm l文件中添加網絡訪問、讀寫外部存儲等權限。

Step 2由于Google從Android 6.0開始引入了危險權限動態申請授權機制,讀寫外部存儲被劃分到危險權限系列中,因此需要進行動態申請:

this.RequestPermissions(new string[]{Manifest.Permission.ReadExternal Storage,Manifest.Permission.WriteExternalStorage},1);//傳入的參數為申請的權限數組與請求碼

Step 3在數據同步事件中,開啟子線程,在子線程中執行數據同步操作:

var clientProvider= new SqliteSyncProvider(connString);//創建客戶端同步提供程序并實例化,其中connString為本地SQLite數據庫的路徑

var proxyClientProvider=new WebProxyClient-Provider(new Uri(“https://202.200.200.36/api/sync”));//創建客戶端代理并實例化,參數為.NET CoreWeb API的數據同步接口地址

await(new SyncAgent(clientProvider,proxyClientProvider)).SynchronizeAsync();//實例化SyncAgent對象,執行數據同步任務

4.3 數據同步方向與沖突問題解決

1)數據同步方向

在Dotmim.Sync框架中,提供了用于表征數據同步方向的枚舉SyncDirection。該枚舉包含3個值:Bidirectional(默認值)、DownloadOnly與Upload-Only,分別對應“雙向同步”、“僅下載同步”與“僅上傳同步”3種方向,可以具體為每個數據表分別設定同步方向:

agent.SetConfiguration(c=>{//agent為SyncAgent對象

c[“Table1”].SyncDirection=SyncDirection.Bidirectional;//設置Table1雙向同步

c[“Table2”].SyncDirection=SyncDirection.DownloadOnly;//設置Table2僅下載同步});

2)沖突問題解決

通常情況下,Dotmim.Sync框架采用SyncConfiguration對象的配置策略屬性ConflictResolution-Policy解決數據沖突問題。ConflictResolutionPolicy的可選項如下:

(1)ConflictResolutionPolicy.Serverwins,默認選項,表征服務器端為所有沖突的獲勝方

(2)ConflictResolutionPolicy.Clientwins,表征客戶端為所有沖突的獲勝方

與設定數據同步方向類似,通過SyncAgent對象的SetConfiguration方法進行設置:

agent.SetConfiguration(c=>{c.ConflictResolutionPolicy=ConflictResolutionPolicy.

ClientW ins;});//設定客戶端為所有沖突的獲勝方

當數據同步過程中產生沖突問題時,由服務器端負責解決,具體流程如圖3所示。

圖3 數據沖突問題解決流程

在圖3所示流程中,首先執行數據同步的常規過程,由客戶端發起數據同步POST請求,服務器端.NETCoreWeb API嘗試執行數據同步任務。其次,當檢測到數據沖突時,服務器端檢測預先設置的ConflictResolutionPolicy屬性值,如果其值為Serverwins,則服務器端獲勝,將服務器端的變化數據強制應用到客戶端的數據庫中,反之則客戶端獲勝,將客戶端的變化數據強制應用到服務器端的數據庫中。

5 系統應用

高校固定資產管理系統是當前高校智慧校園平臺建設的重要組成部分,而固定資產巡檢子系統建設是其重點內容。由于受校園地理結構、建筑布局等因素影響,在固定資產巡檢過程中,往往需要面對網絡不可及或網絡信號差的實際環境。因此,對離線環境的支持是固定資產巡檢子系統待解決的關鍵問題。基于本文提出的基于Dotmim.Sync框架的Android移動數據同步方法,采用Microsoft Visual Studio 2017集成開發環境,以Microsoft SQL Server 2014建立數據庫服務器,借助jQuery EasyUI界面插件技術、.NETCore框架與Xamarin.Android開發平臺研究與實現國內某高校的固定資產巡檢系統,系統體系結構圖4所示。

其中,系統的服務器端包括基于REST風格的.NET Core Web API與數據庫服務器,.NET Core Web API對外提供所有與資產巡檢相關的業務邏輯接口。系統從用戶使用的角度分為PC端與Android移動終端,二者均可以通過Internet訪問.NET CoreWeb API,不同之處在于PC端與Internet建立的連接是穩定可靠的,而Android移動終端在巡檢時不能確保對Internet的實時訪問。在系統運行過程中,高校資產部門領導從PC端登錄系統,下發巡檢任務。巡檢工作人員收到巡檢指令后,按照巡檢任務安排前往相應地點開展巡檢工作,采用Android移動終端的APP掃描預先粘貼在設備的二維碼,不需要關心現場的網絡環境,即可查看設備詳情及巡檢歷史記錄,并根據實際情況填寫與提交巡檢記錄。當網絡信號不可及或網絡信號差時,巡檢記錄保存在本地的SQLite數據庫中,等到系統檢測到穩定的網絡信號時,系統自動完成本地SQLite數據庫與服務器端SQL Server數據庫的雙向數據同步。目前,該系統運行穩定,提高了固定資產巡檢效率,進一步有效提升了學校信息化管理水平。

圖4 高校固定資產巡檢系統體系結構

6 結語

移動計算環境具有復雜性、動態性、弱連接性以及通信延遲與帶寬相對有限等特性,使得數據同步問題成為“在線+離線”混合模式移動智能應用的技術難點。本文依次為切入點,針對復雜環境下移動智能應用數據同步的實際需求,提出一種基于Dotmim.Sync框架的Android移動數據同步方法。將該方法應用到高校的固定資產巡檢系統中,取得了較好的效果,實踐表明本文提出的解決方案具有較強的可操作性與較高的應用推廣價值。

猜你喜歡
數據庫系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 国产制服丝袜无码视频| 在线观看亚洲精品福利片| 91无码人妻精品一区二区蜜桃| 高潮毛片免费观看| 国产精品人莉莉成在线播放| 国产91高清视频| 亚洲无码在线午夜电影| 亚洲AⅤ波多系列中文字幕| 亚洲—日韩aV在线| 国产成人免费视频精品一区二区 | 久久五月天国产自| 国产精品九九视频| 久久综合婷婷| 国产成人AV大片大片在线播放 | 狠狠ⅴ日韩v欧美v天堂| 啪啪啪亚洲无码| 九色视频一区| 亚洲性色永久网址| 亚洲热线99精品视频| 天天做天天爱天天爽综合区| 91成人在线观看视频| 国产二级毛片| 国产精品视频观看裸模| 亚洲欧州色色免费AV| 最新痴汉在线无码AV| 国产一区二区三区免费观看| 特级精品毛片免费观看| 亚洲一级无毛片无码在线免费视频| 久久这里只有精品2| 最新精品久久精品| 国内精品91| 毛片免费在线视频| 国产流白浆视频| 国产三级精品三级在线观看| 免费看一级毛片波多结衣| 亚洲精品国产自在现线最新| 69精品在线观看| 国产丝袜精品| 麻豆a级片| 国产成人无码综合亚洲日韩不卡| 亚洲熟女偷拍| 呦女亚洲一区精品| 精品黑人一区二区三区| 四虎永久免费地址在线网站| 欧美一区精品| 这里只有精品国产| 亚洲AV无码久久天堂| 国产欧美视频一区二区三区| 无码专区在线观看| 人妻丰满熟妇AV无码区| 亚洲无码高清视频在线观看| 91精品国产麻豆国产自产在线| 99精品视频在线观看免费播放| 自拍偷拍欧美| 日韩色图在线观看| 欧美性猛交一区二区三区| 谁有在线观看日韩亚洲最新视频 | 欧美精品亚洲二区| 无码日韩视频| 狠狠色丁婷婷综合久久| 伊人久久大线影院首页| 亚洲男人天堂2020| 国产精品99一区不卡| 欧美午夜小视频| 日韩毛片免费观看| 丝袜无码一区二区三区| 操国产美女| 中文字幕亚洲综久久2021| 亚洲精品视频免费看| 爽爽影院十八禁在线观看| 97国产精品视频自在拍| 天天激情综合| 91视频青青草| 女人av社区男人的天堂| 亚洲人成网站色7799在线播放 | 国产亚洲精品资源在线26u| 久久久精品国产SM调教网站| 国产精品无码久久久久AV| 美女免费精品高清毛片在线视| 婷婷开心中文字幕| 最新日本中文字幕| 欧美日韩在线亚洲国产人|