WCF服务之间的业务对象同步

时间:2009-10-23 10:13:40

标签: c# wcf architecture synchronization change-tracking

我正在将我的架构从耦合的一个移动到松散耦合的SOA(WCF)。 我有几个服务,彼此沟通。 您将如何在服务之间同步业务实例?

我在这里看到两个场景:

  1. 所有业务对象只在一个服务中创建,我们称之为 MainService ,并且它是唯一可以访问对象所做的所有更改的人。该服务负责更新数据库中的对象。对象的任何更新都会引发通知。其他服务注册到他们需要的事件并相应地得到通知。我将其称为集中式方法。

    + 更改完成后立即通知服务 - 服务之间的大量通话 - 更多耦合。

  2. 所有服务只是加载他们需要的对象,并定期监视数据库是否有任何更改。我的想法是使用sql server 2008的更改跟踪来检测对对象所做的任何更改。

    + 服务之间的流量减少和可能的通信问题。
    + 较少耦合
    - 由于定期监控而延迟。

  3. 那么,你对此有何回答? (如果你有3,4等等......那也不错)

2 个答案:

答案 0 :(得分:1)

为什么需要在服务之间同步业务实例?听起来我觉得服务还没有松散耦合。

答案 1 :(得分:0)

在第一个选项中,主服务成为单点故障和性能瓶颈。

在第二种情况下,您需要进行大量不必要的信息轮询。

第三个消化是:

如果您的每个服务都有自己的数据库,您可以使用数据库复制将数据从创建它的服务移动到使用它的其他服务。

修改

根据您的评论。您可以尝试使用数据库后备存储库进行Enterprise Library Caching。这样就可以将数据存储在内存中,但如果数据库中的值更新,它将会更新。