7

问题:如何使用 WCF 提供分布式、可扩展和抗灾的发布/订阅服务。

细节:

请注意,除了消息传递/中间件解决方案(如 Tibco EMS)之外,还考虑使用此方法。

我一直在研究 WCF,特别是它如何用于提供 pub/sub。关于这个主题这篇文章非常好:WCF pub-sub

在这篇文章中,作者试图解决拥有多个发布者的问题(就像一个跨多个盒子扩展的服务层一样)。问题在于,如果客户端 A 向发布者 A 注册,但发布者 B 希望发布事件,那么发布者 B 将不知道客户端 A。即没有人告诉发布者 B 客户端 A 希望收到有关事件的通知。作者建议使用 pub/sub 服务作为解决方案。发布/订阅服务将集中存储订阅。但是,如果我想通过拥有辅助/双 pub/sub 服务来使 pub/sub 服务具有抗灾能力,那么我会遇到同样的原始问题。

所以,我认为这个问题有几个解决方案:

  1. 将订阅者详细信息存储在分布式缓存中(请参阅问题:q1q2)。
  2. 将订户详细信息存储在数据库/中央文件系统中。

谁能想到任何其他解决方案(即我没有错过 WCF 的一些奇妙的神奇功能?)任何意见表示赞赏。

4

2 回答 2

3

我有同样的问题,我对这个问题做了很多研究。问题其实很简单。你想保持一些集中的状态,但是以分布式的方式。我发现实现这一点的最佳方法是使用分布式缓存。以速度为例。我知道没有可以解决状态管理问题的本机 WCF 解决方案。我什至研究过持久服务,其中状态管理由 WCF 处理,但不适合发布/订阅服务,因为需要为所有客户端连接集中状态。将数据存储在数据库中也是一种选择,但代价是需要数据库,即使使用数据库,如果数据库不是针对多台计算机进行集群,您也可能会出现单点故障。

最后,我认为实现零故障点的东西实际上是昂贵的,如果你决定去那里然后看看 Azure,存储的未来在云上,Azure 服务将是完全可扩展和分布式的,但我们还没有。

于 2009-01-24T18:26:48.837 回答
0

我认为 WCF 还没有。您需要的是一个为您处理所有这些细节的代理,这样您就可以实现您的业务逻辑。有一些非常好的,比如 ActiveMQ。如果您需要编排,那么您可能想要使用也可以位于代理之上的总线。我认为 WCF 很棒,但尝试将其变成不是的东西,这不是一个好主意。

于 2012-10-26T19:51:18.717 回答