【问题标题】:WCF Service CallBacksWCF 服务回调
【发布时间】:2014-04-13 04:10:01
【问题描述】:

关于 WCF 回调,我心中仍有一个疑问,回调仅在客户端调用服务器时发生。难道我们没有客户端向服务注册的机制,过了一会儿,服务器上发生了一些事情,服务会通知所有连接的客户端。在 COM 中,我们通过生成一个 COM exe 服务器并保留所有已连接客户端的列表来实现这一点,并在 COM exe 服务器认为必要时触发一个事件,最终将作为客户端的回调。

【问题讨论】:

  • 也许你可以添加一个代码示例?
  • 你可以看到这个:链接:codeproject.com/Articles/17704/…
  • 只看“JoinTheParty”调用,客户端类“JoinTheParty”和“JoinTheParty”进行回调。这是我打算避免的
  • 实际上在那个例子中不是当客户拨打电话时。因为你可以有多个客户端,所有客户端都会收到回调
  • 你是对的,服务器调用所有客户端,但这只有在客户端调用服务器之后才会发生。这个,我想避免。客户端向服务器注册并获得及时的回调,无需任何特定客户端发起回调。

标签: wcf


【解决方案1】:

您真的在寻找像 MSMQ 这样的消息传递实现吗?

使用 MSMQ,您可以将客户端设置为服务器“消息”的订阅者。服务器反过来又是您的发布者,它会产生您想要的效果。

http://msdn.microsoft.com/en-us/library/ms711472(v=vs.85).aspx

【讨论】:

  • 似乎没有内置的基础设施可以做到这一点,我们必须构建这个基础设施。我可以构建它,只需要知道没有可用的货架解决方案。
  • 我正在查看是否存在自动通知客户的非自我 wcf 方式。
【解决方案2】:

【讨论】:

  • 我经历过,它没有帮助,因为客户端仍然需要调用服务函数来接收回调,这正是我想要避免的。
  • 您需要再次阅读客户端声明一个方法,服务器向客户端推送一条消息,从而导致该方法在客户端上调用,该消息从服务器推送
  • OK 在示例中,Callback.Equals 是从客户端调用的方法中在服务上调用的。这只是一个例子。通信仍然是从服务器发起的。关键是必须调用回调方法,它可能是在计时器上运行的后台线程
  • 添加了另一个示例。请注意两个示例中的 CallbackContract
  • 关于后台线程。我们仍然有一个问题,服务是为 [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 配置的。这意味着一个对象 persession,这意味着需要有一个所有客户端的静态列表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 2012-04-01
相关资源
最近更新 更多