重建ChannelFactory< T>的最可靠方法是什么?当它进入故障状态时以线程安全的方式?这种情况具有预期的并发性(假设参数为50个并发客户端)。我想知道一些推荐的方法/想法/意见,以实现这一目标(或替代方案)。
编辑:
使用@Ladislav Mrnka的答案 - 似乎最可靠的方法是为ChannelFactory< T>创建一个包装器。我最终这样做了,并公开了包装器的CreateChannel方法。
答案 0 :(得分:4)
您认为此解决方案对您有何帮助?您将锁定该部分,以便只有一个线程可以进入该部分并检查ChannelFactory
是否出现故障并重新创建它但是通道工厂的实例是共享的 - 您从属性返回它:
因此,该解决方案将确保以线程安全的方式重新创建ChannelFactory
,但您仍然需要检查工厂是否在您想要使用它的任何地方出现故障(这应该是线程安全可靠的)。
我想可靠的方法是创建ChannelFactory
的包装器,并通过线程安全处理所有复杂性并检查包装器内的故障工厂。包装器将公开CreateChannel
方法和您需要的所有其他方法。您可以使用此类包装器来管理多个工厂。
答案 1 :(得分:3)
这两个 creating WCF ChannelFactory<T> 和 What is the best workaround for the WCF client `using` block issue? 精彩的讨论帮助我建立了自己的防弹WCF服务。 我相信你也会从中受益匪浅。 两者都包括对你的问题的直接回答:)