Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF ChannelFactory-重用、关闭、创建新的_C#_Wcf_Dispose_Channel_Channelfactory - Fatal编程技术网

C# WCF ChannelFactory-重用、关闭、创建新的

C# WCF ChannelFactory-重用、关闭、创建新的,c#,wcf,dispose,channel,channelfactory,C#,Wcf,Dispose,Channel,Channelfactory,我正试图弄清楚如何准确地设置我的channelFactory和channels——重用同一个实例,而不是为每个调用创建新实例。我做了很多研究,发现了很多相互矛盾的观点。我得出以下结论,但我不确定,所以我想听听专家的建议 使用.NET4,我创建了一个通道工厂,添加了一个端点行为,然后进行调用 似乎我应该重用channel factory的同一个实例,但可能最安全的方法是确保它首先处于打开状态,以防因任何原因出现故障 如果工厂出现故障,请尝试factory.close()和catch factory

我正试图弄清楚如何准确地设置我的channelFactory和channels——重用同一个实例,而不是为每个调用创建新实例。我做了很多研究,发现了很多相互矛盾的观点。我得出以下结论,但我不确定,所以我想听听专家的建议

使用.NET4,我创建了一个通道工厂,添加了一个端点行为,然后进行调用

  • 似乎我应该重用channel factory的同一个实例,但可能最安全的方法是确保它首先处于打开状态,以防因任何原因出现故障

  • 如果工厂出现故障,请尝试factory.close()和catch factory.abort()中的

  • 似乎对每个调用执行factory.CreateChannel()不会有太多开销,而且这可能比共享通道更安全

  • 对于每个调用,我都应该尝试((IChannel)\u client.Close(),并在catch((IChannel)\u client.Abort()中执行

  • 还有一件事我想确认,但我不知道如何测试——比方说我重用了通道,然后通道进入故障状态——如果我没有先编写代码检查通道的状态,会发生什么

  • 或者我应该共享我的频道-在第一次通话时自动打开,在我关闭表单之前不关闭


  • 这篇文章回答了你的一些问题。我已经广泛使用WCF 6年了,我从未见过工厂故障(是的,但不是工厂)。您是否担心您的性能?你要打多少个电话?如果每秒呼叫少于10次,则重复使用channel factory不会产生任何实质性影响。甚至每秒可能有50个电话。很多很多电话。。。一个接一个。。。。