2011-05-11 78 views
2

早上好/下午/晚上!同步2 .net應用程序

有2個系統 - CRM(定製SplendidCRM)和家釀brewmonster(crm + cms + backoffice)。

  1. CRM - Asp.Net 2.0 WebSite,Sql Server 2008;使用Views,Stored Procedures,Triggers實現;例如審計被實施爲觸發+ SP; WebSite是一個簡單的用戶界面; Ado DataSet被用作Dtos
  2. 自制的怪物 - Asp.Net 3.5 WebApplication,SqlServer 2008;使用ListToSql實現; Sql Server僅用作存儲;所有的邏輯和審計在C#代碼中實現; VS的設計師生成的類被用作Dtos。

我需要實現它們之間的「雙面打印」同步:

object is updated in Crm -> changes are applied in home-brewed monster 
object is updated in home-brewed monster -> changes are applied in Crm 

同步應該在「幾乎實時操作模式的工作 - 延遲是可以接受的。目前沒有太多數據 - 大約35000個對象和120000個審計條目,可以達到100000個對象。對象也不大(數據庫中有60列)。

對於這兩個系統都有一個允許更新的Api:用於家庭釀造怪物的Crm和Wcf服務的Web服務。由於怪物的實施變化只能通過Wcf服務應用(例如審計工作)。至於Crm--它可以通過Web服務調用或直接SP調用進行更新(但最好是Web服務)。

目前在Crm中有一列存放對象外部ID,並且存在同步類型但需要更強大和專業的解決方案。

由於某些原因(管理員失敗或應用錯誤更新),兩個系統都可能「脫機」。這不應該影響同步 - 只要系統回來,應該立即應用所有更新。重要的是來自家釀的怪物的數據具有更高的優先級,並且應該覆蓋來自Crm的變化。

問題是哪個技術/庫更適合使用?如果同步可以在系統外進行(系統會觸發數據已更改並且外部工具會同步更改),那將會很不錯。這是由於系統和同步規則受到頻繁更改的影響 - 例如同步的第一個「版本」,在某些情況下從Crm中刪除對象,第二個版本不會刪除但輸出較少的數據,在「第3版」中更多一些添加了兩個系統共有的字段。這種變化將在未來出現,所以我想不要觸及其他系統(或者其他系統)並更改同步規則。

回答

0

您可能想要查看Microsoft Sync Framework,但使用I'm not sure I'd personally recommend後它已經使用了一段時間。它使用Sync Orchestrator坐在兩個或更多系統之間,聽起來像它可以滿足您的要求。

+0

爲什麼不親自推薦Microsoft Sync Framework?列出您遇到的任何問題可能會很好。 – 2011-05-11 14:09:37

+2

好主意,我已將我的經驗發佈在我的博客上:http://tjrobinson.wordpress.com/2011/05/11/why-we-stopped-using-the-microsoft-sync-framework/ – tjrobinson 2011-05-11 14:24:26

+0

感謝回覆。在發佈之前我已經檢查過Sync FX。我發現它以DB爲中心。在我的情況下,我需要同步對象,這是非常不同的 - 它們具有不同的屬性集合,並且屬性的子集必須同步。同步應該執行一些規則 - 一些對象可能不可更新,'查找'屬性不能一對一映射,e.t.c. – alex 2011-05-11 14:36:23

0

我知道你在談論同步應用程序,但是想想只使用SQL Server來同步數據可能是'更好'(IMHO)。這可以通過觸發器,作業和/或包來完成。

觸發器可讓您在發生更改(IE:實時)時「同步」,而其他人可能會延遲。

這將取決於您的環境,數據庫所在的位置(IE:同一臺服務器,兩臺不同的服務器)以及創建自己的「同步」過程的舒適程度。

編輯:

如果你真的認爲它應該是基於應用的同步,那麼你可能會更好滾動自己的解決方案。鑑於這兩個應用程序的高度定製性質,可能很難找到以您需要的方式行事的東西。

在這種情況下,我可能只是用普通的舊.net與實體框架和LINQ。