我正在使用netTcpBinding,根据我的阅读,percall实例上下文是使用wcf的推荐方法。但这是否意味着我将无法使用异步双工回调?因为在方法调用之间销毁服务对象所以无法在客户端上执行异步回调?这是对的吗?
似乎如果我想使用percall进行可扩展性,我将在客户端计算机上遇到错误的响应,因为回调不能是异步的。或者我弄错了什么?
答案 0 :(得分:5)
混合客户端实例和服务器实例。 InstanceContextMode.PerCall
表示来自客户端的每个调用都会获得一个为该单个请求提供服务的新对象。
您正在谈论的回调频道正在以相反的方式进行通信:他们在您的客户端中调用方法。从服务器的角度来看,您的客户端应该保持活跃并且是单个实例。
因此,在方法调用之后,您需要在服务器端持久保存客户端操作上下文。因为这是您需要使用回调合同向客户发送消息的参考。
因此,您可以对InstanceContextMode.PerCall使用异步回调,但您必须自己提供一些会话状态存储。
答案 1 :(得分:1)
对于异步双工回调,你的意思是什么?
您可以使用普通双工合约,然后以异步方式调用此方法,以便客户端不会阻止。显然,服务对象需要保持活动状态,直到它回调给调用者。