2012-08-01 38 views
2

我有一個ASP.Net應用程序,允許用戶通過早期綁定實體與Dynamics CRM 2011數據進行交互。Session中的ServiceContext和OrganizationServiceProxy

我目前在會話中存儲ServiceContext和OrganizationServiceProxy,原因是我必須獲取特定類型的對象,然後在用戶需要時獲取其相關實體。最後在用戶點擊保存時更新它們。

我知道ServiceContext和OrganizationServiceProxy實現IDisposable,因此應該處置。目前我正在使用Global.asax進行會話。

我正在測試我的思維過程,但是我應該在實際中實例化並處理代理和上下文,無論何時獲得我的實體或完成整個過程時?

所有的MS指南都顯示了在using語句中包裝整個過程,以便對象被處置,但如果過程需要用戶交互呢?

回答

1

除非每個頁面請求只使用一次OrganizationServiceProxy,否則我會創建一個通用函數,每個請求只會爲一個OrganizationServiceProxy加載一次,然後使用卸載方法處理它(如果已加載,請參閱Closing a conneciton in the "unload" method這種方法的安全性)

這在大多數情況下是有意義的。請記住,除了它幾乎可以保證dispose方法將被調用外,關於Using語句沒有什麼特別之處。這可能是值得的幾個邊緣情況的可接受的風險,導致配置爲了更簡潔的代碼而不被調用,並且不爲一個請求打開5個不同的連接。

我認爲在會話中存儲上下文和代理是非常危險的,因爲人們可以去喝咖啡或洗手間休息,而你卻被大量未使用的開放式連接所困住。

+0

謝謝達里爾 - 我會看看我能做什麼,而不會對應用程序造成太多幹擾。 – Mauro 2012-08-01 20:57:10