1

我正在将我的架构从耦合一迁移到松耦合的 SOA (WCF)。我有几个相互通信的服务。您将如何在服务之间同步业务实例?

我在这里看到两种情况:

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

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

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

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

那么,您对此有何回答?(如果你有 3、4 等……那也很好)

4

2 回答 2

1

为什么需要在服务之间同步业务实例?在我看来,服务还不够松散耦合。

于 2009-10-23T15:50:13.647 回答
0

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

在第二个中,您冒着进行大量不必要的信息轮询的风险。

第三个建议是:

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

编辑

根据您的评论。您可以尝试使用数据库后备存储进行企业库缓存。这样您就可以将数据保存在内存中,但是如果数据库中的值更新,它将被更新。

于 2009-10-23T15:47:09.300 回答