我使用Unity,Prism構建解耦應用程序。
我擔心的問題是服務中的資源管理問題。在例子中更容易解釋: 想象一下,w有一些接口IDataRetriever,它爲我們提供了某種數據。實現被註冊爲一個實例。 這個接口的實現可以基於任何東西:Files(FileDataRetriever),Sql Server(SqlServerDataRetriever),甚至簡單的Dictionary。配置使用的具體實現(可能通過配置文件,但沒關係)。
一旦應用程序完成工作,取決於服務實現它應該有時釋放資源(例如關閉連接,關閉文件等)或不(例如,當使用詞典),但因爲我與解耦抽象工作我不知道這兩件事: 1.何時釋放資源 2.具體實現是否需要資源釋放。解耦應用程序中的資源管理
我可以想到引導程序將實現IDisposable時的場景,並檢查每個服務的IDisposable實現,並且還爲所有模塊調用Dispose(這意味着所有模塊都必須實現IDisposable),但它只是沒有'看起來像處理這種事情的正確方式(太複雜)?
每次操作後釋放資源實際上是不可能的。 使用Release方法實現接口,我相信和實現IDisposable一樣,我在第一篇文章中描述過。我目前正在考慮終結者,它看起來不是正確的地方使用它們嗎? – 2013-05-04 10:26:23
您不應在終結器中調用Dispose或Close,請參閱http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection.close%28v=VS.85%29.aspx。這似乎並不適用於此。你可以使用IDisposable yes,只需要它的類型,然後在客戶端進行測試。 – devdigital 2013-05-04 10:33:38