2009-02-10 40 views
0

我一直在學習圍繞WCF的方式,我有一個關於InstanceContextMode的問題。WCF內存性能實例上下文模式

糾正我,如果我錯了,但WCF將實例化您的對象,然後默認情況下每調用一次調用它的服務方法。

然後,您可以將其設置爲PerSession或Single。

在我看來,在session和call之間有一些可以重用你的對象的東西會更有意義。也就是說,如果我的服務是可重入的,那麼我可以在構造函數中打開與數據庫等的連接,然後將該對象留在內存中以同時應答調用。

但是在當前的WCF實現中,似乎它總是會重新創建對象,而不管它是什麼。

回答

0

即使在使用PerCall instancemode時,如果這些數據結構是靜態的,您仍可以重新使用大量的數據結構。請記住,靜態對象將具有appdomain的生命週期,因此可以說如果初始化一個靜態對象(這需要昂貴的操作),那麼每個調用實例也會對其他WCF可見,並且在AppDomain被銷燬之前將保持活動狀態( AppDomain的生命週期取決於您的服務器設置)。

請小心處理同步問題,並且不要在此靜態類中包含任何您不希望在所有每個調用實例之間共享的信息。我的$ 0.02