关闭/中止WCF频道/代理时会发生什么?

nla*_*ker 23 wcf proxy

我正在尝试更好地了解使用WCF代理时发生的情况.我无法理解当我关闭(或不关闭)代理时会发生什么.

  • 当我在WCF代理上调用Close()或Abort()时会发生什么?有什么不同?
  • 绑定类型之间有何不同(例如,无会话的BasicHttpBinding与会话中的某些内容)?
  • 为什么Close()会抛出某些情况,为什么它会成为阻塞操作?

ole*_*sii 25

关闭WCF客户端客户
端负责正常关闭连接.始终建议关闭代理客户端.如果客户端和服务之间的绑定是传输层会话,那么关闭代理对于拆除双方之间的连接至关重要.服务具有为并发连接定义的有效负载阈值.如果并发连接数线性地超过该阈值,则整体服务性能呈指数下降.这就是为什么尽快处理连接至关重要的原因.关闭代理还会通知服务实例它已不再使用,并且可能由GC收集(受服务实例管理).如果客户端没有关闭连接,它仍然会被WCF超时(在配置文件中找到)自动拆除.

中止WCF客户端
在服务 - 客户端交互出现故障的情况下,两端的对象可能完全被破坏.因此,不建议在异常之后使用代理.鉴于WCF绑定使用传输会话,故障后的客户端甚至无法关闭它(如果没有传输层会话,则客户端可以使用或关闭代理,但不建议这样做,因为会话的配置可能更改).因此,在发生故障后,唯一安全的操作是中止代理.

Close是一个同步操作,如果传输会话已被故障损坏,它可以抛出,并且它是一个阻塞操作,直到收到来自服务的确认响应(某些绑定为true).

  • 如果并发连接数超过此阈值线性,那么整体服务性能会呈指数级下降.您能否帮助理解这一点. (2认同)