ChannelFactory重用策略

时间:2009-05-15 20:00:23

标签: asp.net wcf channelfactory

我一直在阅读ChannelFactory的创建是昂贵的,并且除非有技术原因不这样做,否则应该尽可能通过缓存它们或者使用工厂的静态实例来重用ChannelFactories。

根据您的经验,您发现哪些ChannelFactory重用策略在ASP.NET应用程序的上下文中最有用和最强大?

2 个答案:

答案 0 :(得分:3)

如果你正在使用.NET 3.0 SP1及以上并且不需要需要直接处理通道的特殊内容,那么最好的选择就是使用从ClientBase< T>派生的客户端代理类。 (就像导入服务时生成的那些)。那些已经缓存下面的工厂。有关详细信息,请参阅here

如果没有,那么是的,你需要坚持IChannelFactory< T>某个地方的对象,但你仍然需要确保你正确地处理共享(我不认为堆栈有任何保证工厂的访问是线程安全的),但除此之外,它应该是相当直接的

答案 1 :(得分:1)

Darin Damitrov在这里找到了一个关于重复使用channelfactories的有用答案: -

creating WCF ChannelFactory<T>

我一直在研究我最近一直在努力的应用程序中的内存使用情况和性能。我应用了他所倡导的技术(使用字典来存储一组channelfactories)并且具有良好的性能提升。

我所看到的是,实例化一个channelfactory可能需要70毫秒。如果发生这种情况很快就会加起来。

目前,我非常谨慎,并且没有设置我的DI容器,以便在应用程序的生命周期内提供相同的channelfactories实例。相反,我在单个HTTP请求期间(在其中可能会进行许多后端服务调用)使它们生效。