我正在开发一个通过 WCF 使用 SOAP 服务的项目。最初,我们使用生成的服务引用,因为它很容易上手。这提供ChannelFactory
了开箱即用的缓存和基于任务的异步方法,这显然是可取的。
我们最近切换到使用服务接口并实例化我们自己的ChannelFactory
. 我们将ChannelFactory
视为一个单例对象来缓存它。关于缓存ChannelFactory
——我被告知ChannelFactory
如果某个通道出现故障,a 可能会变坏。这是一个真正的问题吗?
我的第二个问题是关于使用基于任务的异步调用,例如使用服务引用时生成的异步调用。使用时如何做到这一点ChannelFactory<T>
?我知道您可以在T
with上注释方法[OperationContract(AsyncPattern = true)]
,但这些返回IAsyncResult
而不是Task
。
任何帮助,将不胜感激。