簡體   English   中英

Microsoft數據庫同步

[英]Microsoft database synchronization

我有以下情況:

服務器

  • SQL Server 2008
  • 核心(實體框架和業務邏輯)
  • WCF服務
  • MVC Web應用程序(用於后端管理)

客戶

  • 本地數據庫-主數據庫的簡化模型
  • WPF客戶端

要求

  • 客戶端必須完全脫機工作並保留數據
  • 更改的數據應通過WCF服務從服務器中提取
  • 客戶端不應更改數據,而應調用WCF方法(如果不可用,則將調用排隊)

可能的解決方案

  • Microsoft Sync Framework-我認為它是一個過大的功能,因為我主要需要一種同步方式,並且數據結構也不相同。
  • 是的,因為可以支持WCF上的數據集序列化,因為數據集支持合並和脫機方案,但是它不是過時的嗎?
  • 實體框架? 我嘗試構建原型,但是EF似乎不能很好地滿足我的需求(我需要搜索一個實體,如果經過修改,則對其進行更改,或者如果不存在,則對其進行添加)

  • 您認為最合適的方法是什么?
  • SQL Server Compact是一個很好的本地數據庫嗎?

我對您的想法非常感興趣。 謝謝!

我認為Microsoft Sync Framework不適合,因為您具有不同的架構。 我也可以想象您對於允許更改哪些數據以及應如何同步有一些業務規則。

數據集和實體框架之間的選擇取決於您的需求。 當您真正使用對象模型時,將出現一個對象關系映射器。

如果您的域足夠復雜,並且您擁有使用成熟的域模型的知識,那么絕對是一個很好的解決方案,可以很好地擴展並處理復雜的項目。 如果您的項目比較簡單,並且您不想構建域模型,則可以為數據集選擇。

我個人認為,學習領域建模和作為ORM的實體框架的來龍去脈對於項目來說是一個不錯的選擇。 當您有足夠的經驗使用這些技術時,您甚至會在小型項目中偏愛它們。

關於您的EF原型所遇到的問題。

因為客戶端和服務器的數據架構不同,所以我將使用自定義數據傳輸對象在兩者之間移動數據。 這樣,您可以將對象模型解耦,並且它們可以彼此獨立地進行更改。

客戶知道有關數據更改的所有信息。 因為它具有服務器數據的本地表示,所以它知道是添加,更改還是刪除數據。 您為什么不將這些知識添加到服務器呼叫中? 如果您在DTO中使用一個字段來說明對象是“添加”,“修改”還是“刪除”,則服務器將不必檢測到該字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM