我正在使用WCF服务,并使用VS 2008服务参考创建了它的代理。
我正在寻找调用WCF服务方法的最佳模式
我使用的是.Net框架3.5 SP1,basicHttp
绑定,几乎没有定制。
取决于;-)
如果您的应用程序中有一个序列需要一个接一个的调用,您可以挂断代理客户端并继续使用它来进行进一步的调用。请注意,如果要检查“故障”状态-如果服务器上发生错误,则客户端代理和服务器之间的通道可能会“故障”,因此您的客户端代理将无法使用。
而且-昂贵的部分是ChannelFactory<T>
的创建-您可以在用代码创建客户代理时尝试将这两个步骤分开:
ChannelFactory<IYourService> factory = new ChannelFactory<IYourService>();
请继续使用该渠道工厂,例如缓存到某处
第二步在时间和马力上的强度应大大降低:
IYourService client = factory.CreateChannel();
您可以在每次调用(或调用序列)之前执行此步骤,并且实际上不应因此而导致性能下降。
我强烈建议尽可能避免单例-就像打开一罐蠕虫一样,除非绝对肯定要这样做(例如,管理一次只能访问一个呼叫者的单个资源的访问权限,否则不要这样做) )。
马克
很抱歉提出了一个老问题,但我想添加此内容以便于参考。
我完全同意marc_s和rally25rs。因此,从此处开始,但还要考虑使用处理故障状态的代理或包装器。 SO上的Here is a question讨论了一些解决方案,Corneliu在Internet上遇到了here is another好的解决方案,“ 构建可重用的ClientBase代理”。他的解决方案生成的包装器公开了您的服务方法,以实现最大的便利性和性能。我仍然必须测试它是否有效:)。