业务对象WCF服务之间的同步
问题描述:
我正在将我的架构从耦合到SOA(WCF)松散耦合。 我有几个相互沟通的服务。 您将如何同步服务之间的业务实例?业务对象WCF服务之间的同步
在这里我看到两种情况:
-
所有业务对象中只有一个服务的创建,让我们把它MainService,它是谁拥有所有的对所做的更改访问的唯一一个对象。该服务负责更新数据库中的对象。对象的任何更新都会引发通知。其他服务注册他们需要的事件并相应地收到通知。我称之为集中式的做法。很多服务之间的通话 -
+作为换做是
尽快通知服务。
-更多的耦合。 -
所有的服务只是加载他们需要的对象,并定期监视数据库中是否有任何更改。我的想法是使用sql server 2008的更改跟踪来检测对对象所做的任何更改。
+交通服务之间的通信可行的问题少。
+较少耦合
-由于定期监测导致的延迟。
那么,你对此的回答是什么? (如果你有3,4,等...这也将是不错的)
答
为什么您需要在服务之间同步业务实例?这听起来像服务不够松散耦合了。
答
在第一个选项主要服务成为故障和性能瓶颈的一个点。
在第二种情况下,您会冒很多不必要的信息轮询风险。
第三sugestion是:
如果每个服务都有自己的数据库,你可以使用数据库复制数据从它创建服务移动,在其使用的其他服务。
编辑基于您的评论
。您可以尝试使用数据库后备存储的企业库缓存。这样你就可以将数据存储在内存中,但是如果数据库中的值被更新,它会被更新。
问题是某些服务需要以某种方式通知,以便知道哪些对象(业务实例)已被修改。 所以我有两个解决方案。首先是当业务对象被修改时通知其他服务的组件。另一个是通过更改跟踪来轮询数据库中的更改。 – Roubachof 2009-10-27 16:56:27