2009-09-16 27 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