1

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

我查看了一些 WCF 示例,它们似乎使连接保持打开状态,我不想这样做。在我看到的几个 WF 示例中,看起来服务可以在超时到期后联系客户端,大概是在不同的连接上。

我对这些技术非常陌生,但花了无数时间研究和测试样品。似乎我读的越多,我对最佳解决方案的了解就越少。WF 对我来说是最好的解决方案,还是可以使用 WCF 实现我想要的结果?

4

3 回答 3

1

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

但是,如果客户没有在某处暴露端点,您将无法联系到他们。

那有意义吗?

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

于 2012-06-19T20:46:15.897 回答
1

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

于 2012-06-20T13:01:24.897 回答
0

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

于 2012-06-19T21:23:54.063 回答