真的值得合并WCF代理客户端,还是在每次调用给定方法时实例化一个新的代理更好?
顺便说一句,是否有人愿意为他/她愿意共享的此类代理建立共享模式?
最佳答案
值得缓存ChannelFactory
,因为它的构建成本很高。在某些情况下,“添加服务参考”(或直接svcutil.exe
)生成的代理可以做到这一点(通常,如果要进行此缓存,则不得在代码中构建绑定(bind))。如果您手动构建ChannelFactory
(不使用生成的代理),则可以将其存储在某个地方,而不是每次需要时都对其进行初始化。
合并代理可能没有多大意义。对于无状态服务,代理创建应该很快(如果您已缓存工厂)。对于有状态服务,您不希望在多个“客户端”之间共享代理。连接级别本身也有池。 HTTP绑定(bind)默认使用持久性连接。这些连接可以被多个代理重用。 Net.tcp和net.pipe绑定(bind)使用connection pooling internally。这意味着代理的生存期不必与连接的生存期相同。
关于wcf - WCF代理池-值得吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7259865/