解耦异步调用 - WCF或WF

时间:2012-06-19 19:50:51

标签: wcf workflow-foundation asynchronous-wcf-call

我正在开发一个客户端/服务项目,其中客户端将位于具有不会是静态的IP的防火墙后面。客户端将调用该服务。然后,服务将在稍后的某个小时后,在客户端拥有数据时联系客户端。每项服务将有许多客户。

我看了几个WCF样本似乎保持连接打开,我不想这样做。在一些WF示例中,我看到服务可以在超时到期后联系客户端,假设在不同的连接上。

我对这些技术很陌生,但花了不少时间研究和测试样品。似乎我读的越多,我就越不清楚最好的解决方案。 WF对我来说是最好的解决方案,还是可以通过WCF实现我想要的结果?

3 个答案:

答案 0 :(得分:1)

如果您想联系客户端,但不打开连接,客户端将必须发布一个端点供您使用。这可能不是客户端直接,而是您可能让客户端向内部服务器注册,然后该服务器公开端点,并在从您接收数据时将调用路由到客户端。

但是,如果没有他们在某个地方暴露端点,你将无法联系客户端。

这有意义吗?

WF与WCF 另外,请记住,WCF是可以公开和使用端点的通信框架。 WF是一个工作流框架,可以通过WCF端点公开自己。它们是完全不同的技术,而且不依赖于另一个 - 因为WF可以在没有WCF的情况下运行。

答案 1 :(得分:1)

更好的解决方案是在此方案中使用队列。我会使用ServiceBus并将消息发布到客户端准备就绪时可以获取的队列。您也可以使用MSMQ执行相同操作,甚至数据库也可以用作队列。

答案 2 :(得分:0)

请记住,WF仍然通过WCF暴露给外界。考虑到它的“小时后”方面,它实际上有两个方面:客户端和WCF服务之间的来回如何工作以及处理本身的过程(需要几个小时的部分)。第二个可能与WF有关,这是一个漫长的过程。使用SignalR这样的框架可以更好地处理第一个。