同步2 .net应用程序

时间:2011-05-11 13:54:27

标签: .net data-synchronization

早上好/下午/晚上好!

有2个系统 - CRM(定制的SplendidCRM)和home-brewedmonster(crm + cms + backoffice)。

  1. CRM - Asp.Net 2.0 WebSite,Sql Server 2008;使用视图,存储过程,触发器实现;例如,审计是作为触发器+ SP实现的; WebSite是一个简单的UI; Ado DataSet用作Dtos
  2. 自酿怪物 - Asp.Net 3.5 WebApplication,SqlServer 2008;使用ListToSql实现; Sql Server仅用作存储;所有逻辑和审计都在c#代码中实现; VS的设计器生成的类被用作Dtos。
  3. 我需要在它们之间实现'双工'同步:

    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的Web服务和家庭酿造的怪物的Wcf服务。由于怪物的实现变化只能通过Wcf服务应用(例如,审计工作)。至于Crm - 它可以通过Web服务调用或直接SP调用进行更新(但最好是Web服务)。

    目前Crm中有一列保存对象外部ID,并且有一种同步,但需要更强大和专业的解决方案。

    由于某些原因(管理员失败或应用了错误的更新),两个系统都可以“脱机”。这不应该影响同步 - 所有更新都应该在系统恢复后立即应用。重要的是,自酿怪物的数据具有更高的优先级,并应覆盖Crm的变化。

    问题是哪种技术/库更好用?如果同步可以“从系统中”进行,那将是很好的(系统会触发数据已经改变的事件,外部工具会同步变化)。这是因为系统和同步规则是频繁更改的主题 - 例如同步的第一个“版本”,在某些条件下从Crm中删除对象,第二个版本没有删除但导出的数据较少,在“第三版”中更多一些两个系统共有的字段被添加。此更改将在未来出现,因此我不想触及其他系统(或非系统)并仅更改同步规则。

2 个答案:

答案 0 :(得分:0)

您可能希望在使用它一段时间之后查看Microsoft Sync Framework I'm not sure I'd personally recommend。它使用Sync Orchestrator来处理两个或多个系统之间,因此听起来它可以满足您的要求。

答案 1 :(得分:0)

我知道你在谈论同步应用程序,但考虑使用SQL Server同步数据可能会“更好”(恕我直言)。这可以通过触发器,作业和/或包来完成。

触发器可让您在发生更改时(IE:实时)“同步”,而其他可能会延迟。

这将取决于您的环境,数据库所在的位置(IE:相同的服务器,两个不同的服务器)以及您创建自己的“同步”过程的舒适程度。

修改

如果你真的认为它应该是基于应用程序的同步,那么你可能最好还是推出自己的解决方案。鉴于这两个应用程序的高度自定义性质,可能很难找到符合您需要的方式。

在这种情况下,我可能会使用简单的旧.net和Entity Framework以及LINQ。