2010-04-18 28 views
0

我的目標是採用更好的編碼實踐我有幾個關於自動處理代碼的問題。我從網上聽到不同的答案,並在我的工作中與其他開發人員/程序員交談。我不確定我是否應該將它們分成3個問題,但它們看起來有點相似:自動.NET代碼,nhibernate會話和LINQ數據上下文清理?

1).NET如何處理佔用內存的類和其他代碼事件的實例?我最近發現瞭如何使用工廠模式來處理某些服務類的事情,以便它們只在整個應用程序中實例化一次,但後來我被告知'.NET在提到它時會自動處理這些東西。

2)Nhibernate的會話如何處理未使用的東西的自動清理?我見過一些人說,自動處理事情很棒,你應該只使用會話工廠,就是這樣,不需要關閉它。但我也閱讀過許多人關閉休眠會話的例子。

3)LINQ的datacontext如何處理?大多數情況下,我從來沒有使用過datacontext,應用程序也沒有看到性能受到影響(儘管我沒有超強地運行任何東西),但是似乎大多數人都會建議在完成數據環境後處理它。不過,我已經看到許多代碼示例,其中dispose方法從未被調用過。另外一般情況下,我發現在處理datacontext之後你甚至不能訪問一個深度的與子相關的對象,除非你明確地在查詢中抓取它們。

謝謝大家。到目前爲止,我很喜歡這個網站,我有點迷路,花點時間在這裏閱讀。 =)

回答

2

1).NET做垃圾收集和東西,但它沒有實例化一次,並提供給你總是,爲此目的,你需要一個IoC容器,如Autofac

2)會話本身不會自行關閉,您需要將它放在使用塊中。但它確實照顧了其管理的其他事物。

3)處理事情總是一個好主意,特別是非託管資源。所以,根據經驗,將這些東西放在一個使用塊中。

+0

關於2.那麼它是什麼照顧呢?它處理與數據庫的連接嗎?如果是這樣,如果沒有保持任何連接打開或存儲應該刪除的任何內容,會有什麼理由來處理會話? – AverageJoe719 2010-04-18 03:18:32