2011-08-05 24 views
0

我想知道是否有方法在內存中加載對象並在程序存在後將其留在那裏。我想這樣做是爲了在WCF REST服務之間共享配置信息,而不必在每次讀取配置時都轉到磁盤進行序列化/反序列化。我遇到的一個問題是,不能保證某些東西總是運行來「持有」對象。將.NET對象存儲到內存並在退出後將其留在那裏

我正在使用C#和.NET 4.0。

下面是一些僞代碼,車型什麼,我會/希望做到:

variable localmemoryobject 
if memoryObject does not exist then 
    create the memory object 
end if 
copy the memory object into localmemoryobject 
done 

我期待到內存映射文件來實現這一點,不知道這是否是適合我的問題。有什麼建議麼?

回答

1

如何爲您的配置添加Windows服務應用程序並保持活動?

+0

我想過這樣做,但我怎麼會以簡單的方式訪問該服務?我不想每次都打開TCP連接來進行配置。 –

+0

TCP?如果它在同一臺機器上,你可以用IPC代替 – mtijn

+0

我會給你,我最終在Windows服務中使用內存映射文件。 –

2

如果你想保留一些數據在內存中,那麼至少需要一個進程來保存它。您可能需要一個用於存儲這些內存對象的小型進程(例如memcached),然後讓WCF服務啓動和關閉,而無需擔心將數據序列化到磁盤。

1

在您的WCF服務中使用企業庫緩存塊。

http://msdn.microsoft.com/en-us/library/ff649551.aspx

你的WCF服務將需要一次讀取配置,然後它會在內存中緩存未來的呼叫,直到配置高速緩存到期時間間隔被傳遞,或者您重新啓動該服務。

+0

但我使用的是WCF REST,該服務並非「開始」,而是說它託管在IIS中。我喜歡這個想法,如果我能夠實現它的話。 –

+0

確定 - http://weblogs.asp.net/gsusx/archive/2008/10/29/adding-caching-to-wcf-restful-services-using-the-rest-starter-kit.aspx可能更合適那麼比Ent Libs。 – BonyT

+0

這種類型的緩存適用於從服務返回的數據。配置對象從不提供服務,因此,它不會通過傳統方式進行緩存。 –

相關問題