gpt4 book ai didi

c# - ChannelFactory.Open VS IClientChannel.Open

转载 作者:太空狗 更新时间:2023-10-29 20:21:13 27 4
gpt4 key购买 nike

我正在尝试更好地了解 WCF 的一些内部工作原理。我已经做了相当多的环顾四周,但我无法找到关于 ChannelFactory.Open()IClientChannel.Open() 相比的明确解释.开厂的目的是什么?如果 channel 是用来通信的,那么在 channel 创建和打开之后,工厂在这个过程中起到什么作用呢?

问题被问到here ,以及其他问题,但从未直接回答。

编辑:

在反编译源码后,我发现了一些需要在ChannelFactory上调用Open的具体原因,记录如下。

我仍然难以理解的是为什么这项工作是通过 ICommunicationObject 提供的机制完成的,而工厂实际上并没有与任何东西通信(据我所知)。为什么不在构造或处置对象时处理这些事情?

我想我可能已经了解得够多了,这样的答案可能不会公开。感谢那些参与原始问题的人。

最佳答案

Open 需要在工厂中调用,因为它是一个 ICommunicationObject - 在您使用其中一个之前,它需要被打开。但在大多数情况下,当您调用诸如 CreateChannel 之类的东西时,工厂会自动为您打开,因此您很少需要担心显式打开工厂。

关于关闭,它实际上取决于工厂使用的绑定(bind)。在大多数情况下,您是对的,资源主要与 channel 相关联。但是某个绑定(bind)可能会在同一个底层连接中多路复用多个 channel ,因此关闭 channel 只会从要多路复用的列表中删除该 channel 。只有当工厂关闭时,底层连接才真正被释放。

关于c# - ChannelFactory.Open VS IClientChannel.Open,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11980263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com