【问题标题】:WCF async duplex callbacks possible using percall instancing?WCF异步双工回调可能使用percall实例?
【发布时间】:2011-12-20 13:17:17
【问题描述】:

我正在使用 netTcpBinding,根据我的阅读,percall 实例上下文是使用 wcf 的推荐方式。但是,这是否意味着我将无法使用异步双工回调?因为服务对象在方法调用之间被销毁所以没有办法在客户端上执行异步回调?这是正确的吗?

似乎如果我想使用 percall 来实现可伸缩性,我会在客户端机器上遇到糟糕的响应,因为回调不能是异步的。还是我都搞错了?

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

    您混淆了客户端实例和服务器实例。 InstanceContextMode.PerCall 表示来自客户端的每次调用都会获得一个新对象来服务该单个请求。

    您正在谈论的回调通道正在以相反的方式进行通信:它们调用您客户端中的方法。您的客户端应该保持活动状态,并且从服务器的角度来看是单个实例。

    因此,在方法调用之后,您需要在服务器端持久化的只是客户端操作上下文。因为那是您需要使用回调合约向客户端发送消息的参考。

    因此,您可以将异步回调与 InstanceContextMode.PerCall 一起使用,但您必须自己提供一些会话状态存储。

    【讨论】:

    • 你确认这个新对象在服务器端吗?
    • @Steven:我不明白你在问什么? PerCall 意味着,对于每个调用,wcf 运行时都会实例化一个新的服务器对象,以处理服务器上的调用。
    • 你刚刚回答了我的问题。谢谢一月
    【解决方案2】:

    异步双工回调到底是什么意思?

    您可以使用普通的双工合约,然后以异步方式调用它,这样客户端就不会阻塞。显然,服务对象需要保持活动状态,直到它回调给调用者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 2011-02-19
      相关资源
      最近更新 更多