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