WCF 双工在方法在服务器上运行之后执行回调,然后在客户端上运行代码。
如果我想通过按下服务器上的按钮从服务器上执行客户端上的方法,那么我认为 WCF 双工不合适。
为什么我不只是在我的 2 个应用程序的每一端创建一个客户端和一个服务器?
WCF 双工在方法在服务器上运行之后执行回调,然后在客户端上运行代码。
如果我想通过按下服务器上的按钮从服务器上执行客户端上的方法,那么我认为 WCF 双工不合适。
为什么我不只是在我的 2 个应用程序的每一端创建一个客户端和一个服务器?
我是对你之前的问题发表评论的人之一,所以我可能在这里欠你一个答案:o)
您已经发布了相当多的代码,我没有详细查看它。但是,一般来说,使用 wsDualHttpBinding 和双工合同而不是更多的在双方都有服务的点对点方法是有原因的,如下所示:
双工方法适用于您拥有明确定义且永久运行的服务器的情况。这提供了交互的中心。这个想法是客户端在某种程度上比服务器更短暂。客户端可以启动和关闭或移动位置,服务器不需要提前知道它们。当客户端启动时,它被预先配置为知道服务器在哪里,因此它可以向服务器“注册”自己。
相反,服务器不需要预先配置就知道客户端在哪里。它启动并可以独立于任何客户端运行。它只接受来自所有具有有效凭据的客户端在上线时的“注册”,并且可以在客户端下线后继续运行。此外,如果客户端移动,它只会在新位置向服务器重新注册自己。
所以服务器在某种意义上是系统中更“重要”的部分。没有服务器,任何客户端都不能参与通信,但服务器可以独立于任何客户端运行。
要使用 WCF 双工服务执行此操作,您必须自己做一些额外的工作来实现发布/订阅行为。幸运的是,MSFT 模式和实践团队提供了一些关于如何做到这一点的指导
http://msdn.microsoft.com/en-us/library/ms752254.aspx
这与真正的点对点方法根本不同,在这种方法中,网络没有明确定义的集线器(即服务器),每个节点都可以进出而不影响网络的整体功能。
当您有发布/订阅设置(也称为观察者模式)时,使用 WCF 双工。假设您有一项订阅某种通知的服务(例如新电子邮件)。通常,您需要定期检查更新。使用 WCF Duplex,当有更新时,发布者可以自动通知订阅者。