2012-11-19 80 views
0

服務啓動時如何加載數據?截至目前,我在控制檯應用主機我的服務,我之前服務啓動我從數據庫中所有信息加載先入內存 (其它對象握住我的服務之前,所有的信息)。我使用靜態變量來訪問我的服務中的數據。我知道這種做法是錯誤的,我怎麼才能把它做對。我使用nettcp綁定,它是自託管的。先謝謝你! :)當WCF服務啓動時在內存中加載數據?

+0

檢查 http://stackoverflow.com/questions/739268/wcf-application-start-event –

回答

0

爲什麼你認爲這種做法是錯誤的?如果你的數據根本沒有改變,靜態變量就可以工作。如果數據發生變化但不是非常頻繁,並且您的應用程序可能會存在一些「過時」數據,您可以使用System.Web.Caching.Cache並根據時間或其他依賴關係自動從緩存過期數據。 如果不永遠要負擔您的服務用戶從等待,而你的應用程序從數據庫中檢索數據,你要麼必須有一個單獨的線程監視數據庫和更新緩存值,或使用SqlCacheDependency機制無效並在數據庫中的基礎數據更改時刷新緩存值。

+0

因爲我只使用控制檯應用程序進行開發階段。如果我將其部署到我們的服務器之一併使用Windows服務(http://msdn.microsoft.com/zh-cn/library/ms733069.aspx)進行安裝,那麼可以創建可加載所有對象的對象OnStart(string [] args)方法中的信息啓動我的服務之前? – Cold

+0

您的策略仍然穩固,但不是加載數據OnStart,您可以預先加載服務類的靜態構造函數中的數據,如下所述:http://stackoverflow.com/questions/739268/wcf-application-start-event –

+0

非常感謝Frenkel。這些信息將幫助我在我的項目中:) – Cold