c# – WCF ChannelFactory State属性

前端之家收集整理的这篇文章主要介绍了c# – WCF ChannelFactory State属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
ChannelFactory拥有State属性意味着什么?我了解创建的通道可以具有基于连接的状态.但是,为什么ChannelFactory也有这样的连接状态,我感到困惑.它是否也连接到WCF服务?

解决方法

ChannelFactory对象具有状态,因为它是一个CommunicationObject,并且WCF中的所有CommunicationObject都有一个状态.当然,这只是乞求这个问题,而不是真的有用.

真正的问题归结为两部分

>为什么ChannelFactory派生自CommunicationObject
>它的国家实际上是什么意思?

第二个更容易回答,让我们从那里开始. ChannelFactory的状态确定是否可以用于创建新的客户端通道,以及这些客户端通道是否仍然可以使用.

与WCF中的所有CommunicationObject一样,状态确定您允许使用对象执行的操作.一个渠道工厂真的只有一个操作:CreateChannel.如果工厂是开放的,您可以创建渠道;如果它是关闭或故障,你不能.关闭()’d时,具体的(内部)通道工厂实现(例如和HttpChannelFactory)清理任何内部资源.这包括释放为安全目的创建的资源,释放命名管道的句柄等.

另外,当您关闭()通道工厂时,它将循环遍历所有通道,并在其中每个通道之前调用Close(),然后再转换到Closed状态. (似乎有一些常见的实用程序代码(创建HTTP请求等),渠道工厂代表他们的渠道实现,这样一旦频道工厂关闭,这些频道就无法再运行,这就是为什么频道是同时强制关闭.)

对于所有的血腥细节,去下载WCF Reference Source,但准备失去一天左右:)

那么更大的问题是,为什么一个ChannelFactory是一个CommunicationObject呢?在这里,我正在试图猜测,因为只要我看到工厂对象本身从来没有真正地与远程系统通信.但是,在创建通道之前,他们确实对其绑定参数进行了大量的设置和验证,这需要分配与实际网络连接相同的资源.例如,命名管道通道工厂创建并管理其通道的连接池; HTTP和HTTPS通道工厂验证身份信息和身份验证值.我的猜测是,渠道工厂做这个设置工作一次,所以渠道可以跳过它; CommunicationObject模式简单地提供了管理通道工厂生命周期的便利方式,因为WCF中的其他任何东西都是以这种方式进行管理的.

猜你在找的C#相关文章