服务层设计问题

时间:2011-05-13 17:19:35

标签: .net wcf web-services

我正在寻找以下方案的.NET解决方案。期望任何已知的框架,解决方案或一些设计思想来设计这个组件。

我们有一个WCF服务,可以对连接的客户端进行回调以更新其UI。一个简单的例子:当让我们说10个用户连接到这个服务并且1个用户更新网格记录并保存它时,该服务会回拨更新其他9个客户端的UI。这项服务做了很多事情,因此这种与客户的直接联系减缓了这种情况,随着客户数量的增长,我们预见到了一些问题。因此,我们正在考虑添加客户端和服务通话的另一层,以便收听和广播他们的消息/事件。

我正在寻找一种解决方案,例如消息总线或消息代理或pub-sub模型框架或构思,其中客户端和服务是分离的。这也可以用在分布式环境设施中。想知道WCF是否为此提供了任何设施,或者某些已知的解决方案或设计理念会有所帮助,或者想知道像ESB这样的解决方案对于这种情况是否过度,或者我们是否有类似ESB的任何东西,但MS的重量轻,或者MSMQ只是解决了这种情况。 / p>

非常感谢, 摩尼

1 个答案:

答案 0 :(得分:0)

这很难回答,因为像许多这样的问题一样,这一切都取决于许多未给出的因素。

  1. 客户数量。 10到500.000.000(并发)客户端之间有许多级别和解决方案。了解并发客户端的数量以及未连接的客户端是否需要在重新联机时发出信号通知也很重要。

  2. 技术。如果必须支持多个客户端平台,则选择将大不相同。

  3. 架构。你提到了一个ESB。您描述的场景几乎不是开发ESB的(主要)理由。因此,如果没有其他理由来开发ESB,我就会远离这条道路。另一方面,如果ESB存在,它可以很容易地解决您的问题,具体取决于给定的ESB。 (我可能在这里错了,因为我可能认为ESB与你的意图完全不同)

  4. 安全。在多平台环境中,安全可以成为一种驯服的野兽,但同时也是至关重要的。因此,安全要求可能是一个非常有影响力的因素。

  5. 可靠性。当客户端错过消息时有多糟糕?根据答案,设计可能会有很大不同。

  6. 耐久性。如果您需要通过加载备份来恢复系统,您希望邮件系统做什么?

  7. 性能。它应该多快?这里有很多后果。一天发送的消息与10秒内发送的消息之间的差异很大。

  8. 只要这些因素(我遗漏了很多)是未知的,几乎不可能提供合适的解决方案。

    您提到的所有技术都是有效的,但还有更多,并且可能有各种配置和组合。