c# – WCF ChannelFactory State属性

c# – WCF ChannelFactory State属性,第1张

概述ChannelFactory拥有State属性意味着什么?我了解创建的通道可以具有基于连接的状态.但是,为什么ChannelFactory也有这样的连接状态,我感到困惑.它是否也连接到WCF服务? ChannelFactory对象具有状态,因为它是一个CommunicationObject,并且WCF中的所有CommunicationObject都有一个状态.当然,这只是乞求这个问题,而不是真的有 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# – WCF ChannelFactory State属性全部内容,希望文章能够帮你解决c# – WCF ChannelFactory State属性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1236158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存