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應用?;诖耍瑸榱擞行Ю肈otmim.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 系統應用

高校固定資產管理系統是當前高校智慧校園平臺建設的重要組成部分,而固定資產巡檢子系統建設是其重點內容。由于受校園地理結構、建筑布局等因素影響,在固定資產巡檢過程中,往往需要面對網絡不可及或網絡信號差的實際環境。因此,對離線環境的支持是固定資產巡檢子系統待解決的關鍵問題?;诒疚奶岢龅幕贒otmim.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
主站蜘蛛池模板: 日本精品影院| 中文字幕欧美成人免费| 香蕉久久国产超碰青草| 亚洲无线国产观看| 黄片在线永久| 一本久道久久综合多人| 极品av一区二区| 亚洲三级电影在线播放| 欧美成人免费| 国产精品嫩草影院av| 国产视频一二三区| 蜜臀av性久久久久蜜臀aⅴ麻豆| 免费激情网址| 亚洲欧美激情小说另类| 精品无码日韩国产不卡av| 亚洲自拍另类| 亚洲第一成年网| 久久亚洲精少妇毛片午夜无码| 国产福利一区视频| 亚洲美女久久| 久99久热只有精品国产15| 日韩欧美视频第一区在线观看| 91精品视频播放| 久久综合干| 国产激爽大片高清在线观看| 青草娱乐极品免费视频| 日韩精品毛片| 国内精自线i品一区202| 久久99国产精品成人欧美| 自慰网址在线观看| 日韩精品成人网页视频在线| 日韩a级片视频| 欧美一级99在线观看国产| 精品国产成人三级在线观看| 亚洲精品图区| 在线观看免费AV网| 91无码网站| 成人年鲁鲁在线观看视频| 热99re99首页精品亚洲五月天| 亚洲中文字幕国产av| 污视频日本| 国产在线视频自拍| 国产精品原创不卡在线| 精品国产一二三区| 国产香蕉国产精品偷在线观看| 91av成人日本不卡三区| www.狠狠| 成人在线天堂| 人人91人人澡人人妻人人爽| 欧美在线伊人| 久久久久人妻一区精品色奶水| 午夜毛片福利| 国产精品女主播| 国产乱子伦视频在线播放| 伊人成人在线| 在线欧美a| 国产精品吹潮在线观看中文| 伊人中文网| 在线观看国产网址你懂的| 色婷婷久久| 久久精品无码一区二区国产区| 四虎成人在线视频| 中文无码伦av中文字幕| 亚洲女同一区二区| 在线观看国产黄色| 国产高清精品在线91| 欧美97色| 国产精欧美一区二区三区| 日韩免费毛片视频| 乱色熟女综合一区二区| 波多野结衣一区二区三区四区| 亚洲无码A视频在线| 国产免费羞羞视频| 欧美第二区| 91精品小视频| 国产高清在线观看91精品| 亚洲综合色婷婷中文字幕| 爆操波多野结衣| 国产精品内射视频| 欧美三级自拍| 国产大全韩国亚洲一区二区三区| 国产午夜无码片在线观看网站 |