2009-09-16 25 views

回答

4

如果你想要走这条路,从Performance Improvement for WCF Client Proxy Creation in .NET 3.5 and Best Practices

  • 您需要实现合适的 同步逻辑来管理 代理。

  • 您需要确保 代理的使用是平等的。有时,您可能需要为代理实现 循环模式。

  • 您需要处理池的异常和重试 。

  • 池大小需要是 有限和可配置。

  • 您可能需要能够 创建代理,即使没有代理 可从池中。

+0

+1优秀且非常有趣的文章!感谢您的链接。 – 2009-09-17 05:21:29

1

为什么你想要池代理?

池通常只存在于资源(如数据库连接)稀缺,构建成本高且维护成本高时才存在。

这不应该是WCF代理的情况,真的 - 您根据需要创建它们,并在不再需要时丢弃它们。

我没有看到任何好处或实际用途在尝试池WCF代理 - 您想要解决什么问题或问题?

好的,谢谢你的回复 - 我明白你要完成的是什么 - 但是我担心,你几乎完全靠你自己,因为我不认为有任何零散的东西在.NET框架和/或WCF子系统来帮助创建代理池。

马克

PS:作为Tuzo链接到显示的文章,也许你可以只用缓存的ChannelFactory对象脱身。创建这些确实非常昂贵,如果您可以在应用程序的整个生命周期中缓存这些内容,那么可能会满足您的需求。一探究竟!

+0

感谢您的答复... 我谈论的网站大量使用WCF的。与asmx代理相比,wcf代理有一些性能开销,并且与代理实例化的方式有关。 因此,无论我有选择使单例生成实例,以避免代理实例化或使其从池中获取实例。我需要对这种方法与默认行为进行基准比较。 – 2009-09-16 19:01:37

+0

不能完全确定您希望如何在ASP.NET页面生命周期中池化代理服务器......不确定是否“保存”并从代理服务器再次获取代理服务器。高速缓存或应用会话内存的速度会更快。不过,我会对你的基准和结果感兴趣。 – 2009-09-16 19:28:12