WCF代理池 - 值得吗?

时间:2011-08-31 16:00:05

标签: wcf pooling

是否真的值得汇集WCF代理客户端,还是在每次调用给定方法时更好地设置新代理?

顺便说一句,是否有人有这种代理人的汇集模式,他/她愿意分享?

1 个答案:

答案 0 :(得分:6)

值得缓存ChannelFactory,因为它的构造成本很高。由添加服务引用(或直接svcutil.exe)生成的代理在某些情况下执行此操作(如果要进行此缓存,通常不能在代码中构建绑定)。如果您手动构建ChannelFactory(不使用生成的代理),则需要将其存储在某个位置,而不是在每次需要时将其初始化。

池代理可能没有多大意义。对于无状态服务,代理创建应该很快(如果您有缓存工厂)。对于有状态服务,您不希望在多个“客户端”之间共享代理。连接层本身也有池。 HTTP绑定默认使用称为持久连接的东西。这些连接可以由多个代理重用。 Net.tcp和net.pipe绑定使用connection pooling internally。这意味着代理的生命周期不必与连接的生命周期相同。