3

我一直在读到 ChannelFactory 创建很昂贵,除非有技术原因不这样做,否则应该尽可能地重用 ChannelFactories,方法是以某种方式缓存它们,或者使用工厂的静态实例。

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

4

2 回答 2

3

如果您使用的是 .NET 3.0 SP1 及更高版本并且不需要需要直接处理通道的特殊内容,那么最好的选择是只使用从 ClientBase<T> 派生的客户端代理类(就像在进口服务)。那些已经在下面缓存了工厂。有关详细信息,请参见此处

如果不是,那么是的,您需要将 IChannelFactory<T> 对象粘贴在某处,但您仍需要确保正确处理共享(我认为堆栈没有任何保证可以访问工厂线程安全),但除此之外,它应该相当简单。

于 2009-05-15T22:49:36.667 回答
1

Darin Damitrov 在此处发布了关于重用 channelfactories 的有用答案:-

创建 WCF ChannelFactory<T>

我一直在研究我最近正在开发的应用程序中的内存使用情况和性能。我应用了他提倡的技术(使用字典来存储一组通道工厂),并获得了良好的性能提升。

我所看到的是实例化一个通道工厂可能需要长达 70 毫秒。如果这种情况经常发生,它会迅速增加。

目前,我很谨慎,并没有设置我的 DI 容器来为应用程序的生命周期提供相同的通道工厂实例。相反,我让它们在单个 HTTP 请求期间有效(其中可能有许多后端服务调用)。

于 2012-12-18T15:36:31.567 回答