離線應用——業務數據同步方案探討

目標:服務器

你們能夠設想這樣一個情景,公司已經部署信息化,且不少辦公流程已經挪到線上正在運營的系統來解決,這帶給企業的員工很是大的便利,節省辦公時間,提升辦公效率,但是咱們把全部的流程和數據都放到了公司服務器,一旦離開了公司,咱們就至關於和咱們全部的辦公環境脫離了,再也不能夠查看公司系統上的運營數據,再也不能夠進行添加刪除等等一系列操做。若是你最近的工做很是的多,你在有限的正常辦公時間內不能完成,那怎麼辦,只有在辦公室奮戰,叫苦連天的夜晚辦公室生活就開始了.app

離線應用生來就是爲了解決這樣的問題,針對上面所列舉的狀況,你不須要在辦公室進行奮戰,你要作的只有spa

1.將線上系統某個列表(或存儲結構)的數據按需選擇同步到本地blog

2.回到家,利用閒暇時間,打開離線應用,對數據進行操做事件

3.次日回到公司,同步數據到公司服務器部署

說了這麼多,咱們的目的只有一個:實現離線辦公get

 

實現方案:同步

咱們將整個離線應用分爲兩塊it

1.業務數據同步到本地io

2.本地提交到業務系統

對於中間支持用戶怎麼去操做數據,不是咱們這裏討論的重點,這也是隨業務邏輯而變的,通常都會在功能上作成和線上的系統同樣

1.業務數據同步到本地

將雲上的業務上的數據按需同步到本地並非什麼難的操做,可是這裏也不容小覷

技術實現要點:

  • 可以按需選擇數據同步到本地,爲了讓用戶不用花大量的時間在等待同步數據到本地,咱們能夠採用由用戶選擇數據的同步 機制,有選擇的將真正對用戶有用的數據同步到本地,固然咱們在代碼邏輯中,還須要記住用戶的這些選擇,並持久化,爲用戶回到公司進行數據提交提供處理基礎

  • 離線客戶端數據暫存器可以實現數據的持久化

offline-app01

業務數據同步到本地除了上面涉及到的,實際上咱們還必須解決差別同步問題

雖然咱們在同步業務數據到本地的時候,用戶能夠按需進行選擇,可是若是用戶當前選擇的數據,有若干數據已經在本地有副本了,這些應該怎麼處理呢?差別同步的實現不知道你們有沒有比較好的方案,我這裏提供一點拙見

  • 最笨的方法就是遍歷而後依次判斷個屬性是否相等,若發如今本地有副本,則跳到下一個業務數據條目,繼續運行,

  • 使用version法,給每一個業務數據條目都加上一個version,對業務數據條目的任何更改都會引發version++,這樣咱們就能夠經過判斷version來肯定,並且咱們可使用截獲事件的手段來避免version給咱們帶來業務邏輯上的任何變化

2.提交數據到業務系統

這裏主要是員工回到公司後,系統對員工已經在線下所做的更改提交到業務系統,產生效果

技術實現要點:

  • 找到那些已經被更改的數據,咱們這裏擬採用「已更改數據」存儲模塊來標識用戶已經作了更改的數據條目,這樣能夠得到更快的速度,咱們能夠在最短的時間找到哪些數據作了更改

  •  提交到服務器,在服務器上找到那些已更改的數據條目,應用用戶最新的處理結果,若在用戶離線以後,別的用戶對線上的數據作了一些修改,咱們應該怎麼處理呢?咱們如今暫定的一個原則就是以用戶最後更改成最新數據,固然,這方面確實會有一點點不妥,不知道你們有沒有什麼比較好的方案。

 

offline-app02

相關文章
相關標籤/搜索