【问题标题】:Can a WCF service object implementing a contract for a net.msmq endpoint also implement a callback contract for a net.tcp endpoint?为 net.msmq 端点实现合同的 WCF 服务对象是否也可以为 net.tcp 端点实现回调合同?
【发布时间】:2011-07-06 00:56:01
【问题描述】:

尝试实现一个 MSMQ 支持的 WCF PubSub。我知道 net.msmq 是单向的;但是,当我使用单个服务对象来实现 net.msmq 端点以从底层队列中读取,并使用 net.tcp 端点供侦听器订阅回调时,我遇到了很多关于单向 vs 的抱怨.双向、DuplexChannelFactory、DuplexClientBase等等等

似乎实现这一点的唯一方法是让 net.msmq 队列读取服务成为 net.tcp 发布者服务的客户端,并在从队列中读取新消息时通知发布者,而不是在内部将消息发布给订阅者。或者,不要在接收器上使用 net.msmq,而是使用一个普通的旧 MessageQueue 对象来准备。

【问题讨论】:

  • 所以你想要一个类,它既是 net.msmq 的单向服务,又是 net.tcp 的双工服务?
  • 你能发布这些错误/投诉吗?
  • 我需要回归一些代码,但可以肯定的是,我今晚会尝试解决这个问题。 (昨晚通宵安装客户端,我现在要崩溃了。)是的,你是对的:一个实现单向 net.msmq 接收和双工 net.tcp 用于订阅者/侦听器回调的类。我希望将收到的队列消息广播给 N 个订阅者,而无需在中间触及另一个进程或服务。
  • 另外:我知道使用自定义的基于 msmq 的绑定可以实现类似的效果,但我希望只使用 net.tcp 客户端。

标签: wcf msmq netmsmqbinding wcf-callbacks msmq-wcf


【解决方案1】:

在重构了一些接口并在订阅者和回调实现者之间找到了一些缺失的属性和不正确的关系之后,我已经建立了预期的队列支持 pubsub 模式。所以是的,有可能,以前的困难是我的设计错误。

编辑/脚注:由于某种原因,以前作为 MsmqMessage 传递给 net.msmq 接收器的消息现在抛出 nullreferenceexceptions;但是,将签名更改为 MyObject 是可行的,但最初并没有这样做

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多