2009-11-03 177 views
1

我有几个关于WCF服务的问题,我将不胜感激。我已经阅读了很多关于如何将WCF服务应用到现实生活场景的材料,但是存在很多矛盾的观点。WCF Web服务和客户

我们有一个数据服务,它只不过是一个到后端数据存储的接口。这种数据服务有许多客户端,当数据服务所保存的数据发生变化时应该通知客户端。这些客户端随后可以根据这些通知从数据服务请求数据。我们想支持说2000个客户(不是基于网络的解决方案,但可能是一个大型的分散网络)。

我的顾虑:

·如果连接服务端和客户端之间丢失,客户应立即知道。

·服务应在短时间内通知客户数据发生变化。通知无法排队并在稍后收到。

·我们不希望客户端的大量配置工作使其与服务一起工作。

·如果服务和客户端不能很好地扩展,我们不希望服务和客户端之间存在永久连接。

的方法,我们已经看过:

·MSMQ

·双面打印装订

·轮询事件(包括Silverlight 3的新投票结合)

·订阅/发布方式。

我们发现所有这些都有缺陷,并且似乎没有一种最佳的做我们想要的方式。

任何帮助,将不胜感激。

感谢 伊恩

回答

3

这不正是你所寻找的,但是当涉及到基于事件的服务架构,这个人(或博客)咨询是Udi Dahan

他的文章Event-Driven Architecture: SOA Through the Looking Glass提供了一个很好的概述他对这些事情的方法。虽然这篇文章没有明确地讨论WCF,但他对WCF也知之甚多,所以我只能推荐浏览他的博客,看看是否有什么东西让你觉得有用。

5

要完成第一个顾虑,唯一的方法就是违反第四条:为了让客户知道连接中断,需要一个常数轮询机制(立即“拒绝”)或保持开放连接。 WFC不适合开放连接,所以首先关注的是反对使用它。

无论您选择哪种技术,您的第二个担心都会引入规模问题。从长远来看,有状态的连接模式将难以实施和扩展,因此您可能需要检查这些问题是完整的业务需求还是仅仅是偏好。

+0

+1总的来说,一个很好的答案,虽然我不同意“WCF不适合打开连接”。确实,API模型断开了通信,但是一些绑定(甚至双工HTTP绑定)使用了开放连接。 – 2009-11-04 08:26:21