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

我试图更好地了解当我使用WCF代理时发生了什么。我无法理解当我关闭(或不关闭)代理时会发生什么。

当我在WCF代理上调用Close()或Abort()时,发生了什么?有什么不同?
>绑定类型之间有什么不同(比如,一个无会话的BasicHttpBinding和一些sessionful)
>为什么在某些情况下可以关闭(),为什么会被阻塞?

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

中止WCF客户端
在服务 – 客户端交互中存在故障的情况下,两端的对象可能完全中断。因此,不建议在异常之后使用代理。鉴于WCF绑定使用传输会话,故障后的客户端甚至无法关闭它(如果没有传输层会话,那么客户端可以使用或关闭该代理,但不建议使用会话的配置更改)。所以在发生故障后,唯一的安全操作是中止一个代理。

关闭是一个同步操作,如果传输会话已经被故障损坏,它将被丢弃,并且它是一个阻塞操作,直到接收到来自服务的确认响应(某些绑定为真)。

http://stackoverflow.com/questions/5904972/what-happens-when-i-close-abort-a-wcf-channel-proxy

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:当我关闭/中止WCF频道/代理时会发生什么?