早上/下午/晚上好!
有两个系统-客户关系管理(定制SplendidCRM)и家庭短消息怪物(crm+cms+backoffice)。
我需要在它们之间实现‘双工’同步:
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中删除对象的第一个“版本”,第二个版本没有删除而是导出较少的数据,在“第三个版本”中,两个系统都添加了更多的公共字段。这种变化将在未来出现,所以我不想触及其他系统(或它们以外的系统),而只是更改同步规则。
发布于 2011-05-11 14:04:28
在使用Microsoft框架一段时间之后,您可能需要查看我不确定我会亲自推荐。它使用一个同步程序在两个或多个系统之间,这样听起来它可以满足您的需求。
发布于 2011-05-11 14:36:25
我知道您正在讨论同步应用程序,但考虑使用SQL Server同步数据可能会更好(IMHO)。这可以通过触发器、作业和/或包来完成。
触发器将使您能够在发生更改时“同步”(IE:实时),而其他更改可能会延迟。
这将取决于您的环境,数据库所在的位置(IE:同一台服务器,两台不同的服务器),以及您在创建自己的“同步”过程中的舒适程度。
编辑:
如果您真的认为它应该是基于应用程序的同步,那么您可能会更好地滚动您自己的解决方案。考虑到这两个应用程序的高度自定义性质,可能很难找到您需要的行为方式。
在这种情况下,我可能只需要使用带有实体框架和LINQ的普通旧.net。
https://stackoverflow.com/questions/5965404
复制相似问题