为什么需要wcf双工?

时间:2013-03-04 19:37:30

标签: c# wcf wcf-binding

WCF双工在服务器上运行方法然后在客户端上运行代码后执行回调。

如果我想通过服务器上的按钮从服务器上执行客户端上的方法,那么我不认为WCF双工是合适的。

为什么我不只是在我的2个应用程序的每一端都创建一个客户端和服务器?

2 个答案:

答案 0 :(得分:3)

我是评论你上一个问题的人之一,所以我可能在这里欠你答案:o)

您发布了相当多的代码,我没有详细查看。但是,一般而言,一般使用wsDualHttpBinding和duplex契约的原因,而不是更多的对等方法,在这两种方法中您都有双方服务,如下所示:

双工方法适用于具有永久运行的明确定义的服务器的情况。这提供了交互的 hub 。这个想法是客户端在某种程度上比服务器更短暂。客户端可以启动和关闭或移动位置,服务器不需要提前知道它们。当客户端启动时,它被预先配置为知道服务器的位置,因此它可以向服务器“注册”自己。

相反,服务器无需预先配置即可知道客户端的位置。它启动并可以独立于任何客户端运行。它只接受来自所有具有有效凭据的客户端的“注册”,并且可以在客户端脱机后继续运行。此外,如果客户端移动,它只是在服务器的新位置重新注册自己。

因此,服务器在某种意义上是系统中更“重要”的部分。没有服务器,任何客户都无法参与通信,但服务器可以独立于任何客户端运行。

要使用WCF双工服务执行此操作,您必须自己做一些额外的工作来实现发布/订阅行为。幸运的是,MSFT模式和实践团队提供了一些如何做的指导

http://msdn.microsoft.com/en-us/library/ms752254.aspx

这与真正的点对点方法根本不同,在这种方法中,网络没有明确定义的集线器(即服务器),每个节点可以来来去去,而不会影响网络的整体功能。

答案 1 :(得分:2)

当您具有发布/订阅设置(也称为Observer Pattern)时,将使用WCF Duplex。假设您有一项订阅某种通知的服务(例如新邮件)。通常,您需要定期检查更新。使用WCF Duplex时,发布者会在有更新时自动通知订阅者。