WCF客户端连接缓存/池

Oli*_*old 4 wcf

假设您从一个项目公开WCF服务,并使用"添加服务引用"(在本例中为Framework 3.5 WPF应用程序)在另一个项目中使用它.

当您重新实例化ClientBase派生代理时,ClientBase是否会执行底层通道的任何类型的连接池,或者每次都会产生与服务建立连接的全部开销?我特别关注这一点,因为我们使用wsHttpBinding的安全模式="消息".

Dav*_*ter 7

请查看本文,其中介绍了有关如何缓存客户端代理的最佳实践.如果您直接创建代理(MyProxy p = new MyProxy(...)),那么您似乎无法缓存底层的ChannelFactory,这是一个昂贵的部分.但是,如果您使用ChannelFactory创建代理,ChannelFactory则由AppDomain级别的代理缓存,并且它基于您传递给代理的参数(类似于基于连接字符串的连接池).

本文详细介绍了有关幕后内容的一些细节,但重点是,如果您使用ChannelFactory创建代理而不是直接实例化,则会遇到性能提升.

希望这可以帮助!!