2012-07-09 63 views
0

因此,在我的WCF服務中,我將緩存一些數據,以便將來對服務的調用可以獲取該數據。如何在WCF多線程中緩存

WCF緩存數據的最佳方式是什麼?人們如何去做這件事? 如果有幫助,WCF服務是多線程的(併發模式是多個)並且ReleaseServiceInstanceOnTransactionComplete設置爲false。

第一次檢索這個數據的調用可能不存在,因此它會去並從某個源獲取數據(可能是DB,可能是文件,可能在任何地方),但之後它應該緩存它並使其可用(理想情況下與對象的過期系統)

想法?

回答

1

一些對WCF服務的最常見的解決方案似乎是:

嘗試閱讀Caching Solutions

+0

謝謝。的確我在考慮appfabric。在system.runtime命名空間中使用緩存管理器怎麼樣?顯然,這與ASP.NET緩存幾乎相同,但是針對WCF製作,因此您不受限於HttpRuntime – 2012-07-09 19:32:40

1

的SOA可以應用'scal e當它使用的數據被保存在一個對於頻繁事務不可擴展的存儲中時,它會更有效。這是分佈式緩存真正幫助的地方。回到你的問題和ErnieL的答案,這裏是這些解決方案的簡要比較,

就像Memcached一樣,如果你的應用程序需要在一組機器上運行,那麼很可能你會但是如果您的應用程序只需要在單臺機器上運行,那麼您將不會從使用分佈式緩存中獲益,並且使用內置的.Net緩存可能會更好。 訪問一個memcached緩存需要進程間/網絡通信,這對正在進行中的.net緩存的性能會有很小的損失。 Memcached作爲外部流程/服務工作,這意味着您需要在生產環境中安裝/運行該服務。 .Net緩存再次不需要這一步,因爲它們是在進程中託管的。

如果我們比較NCache和Appfabric的特性,NCache人員對他們與AppFabric相比的功能範圍非常有信心。你可以在這裏找到足夠的材料關於這兩款產品的對比,像這樣的......

http://distributedcaching.blog.com/2011/05/26/ncache-features-that-app-fabric-does-not-have/