2012-04-22 74 views
4

我正在爲客戶開發一個會計系統。此應用程序有一些特殊要求。我留下特定於帳戶的會計系統明細。我提到那些令我困惑的觀點。離線+在線數據庫應用程序

該應用程序應在聯機和脫機環境中工作。如果用戶正在工作並突然應用程序脫機用戶應該能夠離線工作。當應用程序連接到互聯網時,所有離線工作都存儲在本地數據庫中,並在下一次同步到中央數據庫。此應用程序有許多用戶,並且所有離線工作都將同時在同一信息上工作。

例如,如果用戶輸入庫存料品,那麼另一個用戶也有可能在此時輸入同一料品。應用程序應該能夠驗證正確的信息並禁止用戶重複。

用戶本地數據庫必須隨時更新,無論其他用戶是否在工作。如果其他用戶正在工作,則應在本地數據庫中提供所有更新信息,以確保用戶何時離線更新所有信息。

問題是如何開發這種應用程序?有沒有達到這個目標的標準方法?是否有任何標準或非標準模式來構建這種軟件?

請注意我正在使用C#Dot Net和意圖使用.NET Remoting或WCF或ASP.NET MVC爲這個應用程序。

任何形式的幫助將不勝感激。 謝謝。

回答

2

蒂姆麥卡錫的書.NET Domain-Driven Design with C#: Problem - Design - Solution設計和實現了一個具有類似要求的系統。這有點過時了,但我認爲會指向一個好的方向。 (看第五頁,在那裏,他列出了本書設計系統的要求,它們類似於你的。)

他使用C#,WCF,微軟的同步框架,智能客戶端等。他指出,從本書的印刷開始,實體框架在Visual Studio中不可用,所以他創建了自己的(這是可以的,但是如果他能夠包含EF,我認爲本書會更好)。

我希望有幫助!

-1

摘要:

  • WCF服務器端
  • 任何數據庫和客戶端框架[R好去
  • 客戶可與本地數據庫,並有後臺進程同步的新數據,並得到編輯權限。
  • 服務器業務邏輯級別控制衝突並自動解決它們或通過通知客戶端。
  • 當解決數據庫級別的衝突更好時,情況相當少。

完整的答案

真的沒有看到任何插件異國任何需要。

正如我所看到的,您使用服務器端同步構建客戶端應用程序。 WCF ll將是非常好的選擇,無論應用程序框架是否可以使用,即使它將是win8 metro應用程序)

當然會有2個數據庫客戶端和服務器端。 U可以選擇任何適合您的應用程序需求的數據庫。它可能是不同的服務器和客戶端數據庫。

客戶端從服務器獲取信息並使用WCF API將新數據(和數據更改請求)發佈到服務器。

我建議讓用戶直接使用本地數據庫並使用異步請求進行服務器同步。然後,你的應用程序將運行更平穩,沒有煩人的滯後。

所以你的應用程序有兩個業務邏輯部分。一個與用戶進行交互並存儲他的數據,另一個同步所有數據在後臺。

數據衝突怎麼樣?我認爲解決這些衝突的最好方法是在服務器的業務邏輯層面解決它們。在數據庫級別解決衝突更好的情況很少。

+0

感謝您的詳細解答,但我想知道如何構建此應用程序?什麼樣的模式被使用?是否有任何示例應用程序存在?基本上我想在創建它之前爲這些類型的應用程序提供一個想法。 – 2012-04-23 08:57:59

+0

只需查看任何基於WCF的客戶端應用程序或帶有服務器端的移動應用程序即可。主要思想非常簡單,魔鬼在細節中。 – 2012-04-23 09:33:24

+0

你能告訴我任何例子嗎? – 2012-04-23 09:38:16

-1

此鏈接How to detect online/offline browser...可以幫助您檢查瀏覽器的在線/離線狀態,以便您可以切換連接字符串。其餘的東西可以像普通的應用程序一樣開發。

我正在考慮更改連接字符串,這是在線和離線模式之間切換的最簡單方法。但是,你必須處理同步。

0

我有兩個答案給你。 如果您在後端使用Web API或Servicestack,並在客戶端使用帶upshotjs的HTML5。這會將數據存儲在瀏覽器中。

但是,因爲您正在使用Account類型的重要內容,所以我將使用Rich client類型的應用程序。後端將是相同的,但現在你將有兩個數據庫,一個在服務器上,另一個在客戶端上。用戶將在客戶端輸入詳細信息,但該數據將與服務器同步。爲此,您可以檢查NoSQL選項。

如果需要更詳細的信息,請讓我知道。

相關問題