第四章 EEP MAUI APP離線功能\4-4離線資料CacheSynchronize設定

※ 此章節使用EEP.NET Core基礎課程的課程教材表單以及測試資料進行開發示範。

為了配合離線數據的處理,Server端的InfoCommand元件添加了一個CacheSynchronize屬性,用來控制切換到離線模式時,離線數據的同步條件,

一共有(None/EveryTime/Smart)三種。

1.        None,表示不自動更新。這意味著離線數據的同步需要在線上模式通過【離線下載】功能重新下載表單,以獲取主機資料庫中的數據並更新到離線模式中。

此模式的優點是能夠維持離線數據的穩定性;缺點是獲取新數據時需要重新執行離線下載的動作。CacheSynchronize屬性目前系統預設為空,也就是預設為None模式。

2.        EveryTime,表示每次切換到【離線】時,都自動進行數據的同步更新(如果有網路的話,沒有連網就不更新)

此模式的優點是每次切換到離線時,會自動同步所有資料;缺點是當表單的數據量較大時,切換至離線模式重新倒入資料的等待時間會拉長,影響使用體驗。

我們透過以下範例,來了解EveryTime的同步模式:

(1) 打開 [產品資料表] Server端,找到 "產品資料表" InfoCommand,將CacheSynchronize屬性下拉選擇為 EveryTime

(2) 我們使用EEP MANU APP登入網站,並打開主頁面執行【離線下載】功能,這邊勾選 [產品資料表] 進行下載:

一張含有 文字, 螢幕擷取畫面, 軟體, 數字 的圖片

自動產生的描述

(3) 在線上模式修改一筆資料內容,切換至離線模式後,會發現即便沒有執行【離線下載】,仍會自動同步數據。

在線上模式將"產品編號"1的資料,"產品名稱"由 舒跑 改為 舒跑Test

切換至【離線】,打開 [產品資料表],會發現"產品編號"1的資料已自動下載Server資料庫的數據同步更新。

3.        Smart,通過設定一個VerifyField欄位(如資料日期時間欄位),當行動裝置本地離線Cache Data的這個欄位比主機端最大的這個欄位小時,自動進行數據的同步更新。  此模式的離線數據同步需透過VerifyField欄位進行判斷,因此不會每次切換至【離線】時都自動更新,較不會影響使用體驗;需要留意的是,數據的同步是透過VerifyField欄位進行判斷,因此如果資料來源變更了此欄位以外的資料,系統不會認為需要進行資料同步。

我們透過以下範例,來了解Smart的同步模式:

(1) 打開 [客戶資料表] Server端,找到"客戶資料表"InfoCommand,將CacheSynchronize屬性下拉選擇為 Smart,與EveryTime不同,我們需要額外設定CacheVerifyField來作為判斷欄位,這邊我們手動輸入"日期"

(2) 為了方便讓我們清楚地知道目前最大的日期為何,我們在資料來源內添加針對"日期"進行ORDER BY的降冪排列。

目前最大的日期為"客戶編號" 162018-06-18

(3) 我們使用EEP MANU APP登入網站,並打開主頁面執行【離線下載】功能,這邊勾選 [客戶資料表] 進行下載:

一張含有 文字, 螢幕擷取畫面, 軟體, 數字 的圖片

自動產生的描述

(4) 在線上模式將"客戶編號"1的資料,"負責人"由 高志明 改為 Andy

切換至【離線】,打開 [客戶資料表],會發現"客戶編號"1的資料並未進行數據的同步更新。

這是因為我們設定的Smart模式,是根據離線Cache Data中最大的"日期"欄位與主機資料庫進行比較判斷,目前最大的日期仍是"客戶編號" 16的資料2018-06-18

(5) 我們切換為線上模式,打開 [客戶資料表],將"客戶編號"1的資料,"日期"欄位由2018-01-15改為2024-08-08

(6) 再次切換至【離線】,打開 [客戶資料表],會發現"客戶編號"1的資料因為"日期"2024-08-08大於"客戶編號" 16的資料2018-06-18,因此位於Datagrid的第一筆資料。

這也代表切換至【離線】時,MAUI APPSmart模式下因為CacheVerifyField於主機資料庫最大值,大於行動裝置中的Cache Data最大值,因此自動進行了數據的同步。

Top of Page