当前位置:  开发笔记 > 运维 > 正文

WCF服务代理生存期的最佳实践?

如何解决《WCF服务代理生存期的最佳实践?》经验,为你挑选了3个好方法。

使用WCF服务时,每次使用它时是否更好地创建服务的新实例?或者创建一个并重新使用它会更好吗?为什么两种方法都更好?异步代理是否相同?



1> Alex..:

或者创建一个并重新使用它会更好吗?

不要开始实现自己的池实现.这已经在框架中完成了.WCF代理使用下面的缓存通道工厂.因此,创建新的代理并不是太昂贵(但请参阅Guy Starbuck关于会话和安全性的回复!).

还要注意,代理在一定的空闲时间(默认为10分钟)后超时.

如果你想要更明确的控制,你可以考虑直接使用ChannelFactories和渠道而不是"易于使用,完全开箱即用"的ClientBase代理.

http://msdn.microsoft.com/en-us/library/ms734681.aspx

关于这个主题的"必读"是:http: //blogs.msdn.com/wenlong/archive/2007/10/27/performance-improvement-of-wcf-client-proxy-creation-and-best-practices的.aspx



2> Yossi Dahan..:

除了Guy Starbuck提到的一个关键因素,你要使用的安全模型(结合会话要求) - 如果你不重用你的代理,就不能重新使用安全会话.

这意味着客户端必须通过每次调用进行身份验证,这是浪费的.

但是,如果您认为这是您想要做的,请确保将客户端配置为不建立安全上下文(因为您永远不会使用它),这将为您节省几次往返服务器:-)



3> andrey.tsyku..:

还有一点需要考虑的是通道故障.根据设计,WCF不允许在未处理的异常发生后使用客户端代理.

IMyContract proxy = new MyContractClient( );
try
{
   proxy.MyMethod( );
}
catch
{}

//Throws CommunicationObjectFaultedException
proxy.MyMethod( );

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有