2011-06-06 61 views
3

這更像是一個非技術問題。OrganizationServiceContext的生存期 - CRM Dynamics 2011

我們打算與Linq一起使用OrganizationServiceContext而不是調用OrganizationServiceProxy。

我的問題是:上下文的生命週期應該是什麼?它應該爲每個方法實例化一次,還是可以使用單例方法在Web應用程序的整個生命週期中保留它?

優點/缺點是什麼?有什麼建議?

在此先感謝

回答

2

你不應該保持周圍的web應用程序的生命一個DataContext。應用程序生命週期在您的代碼之外進行管理。

當其他用戶同時保存時,還有一個關於保存更改的痛苦世界。 Datacontexts應該始終僅在請求的生命週期內進行管理,並且運行保存更改不應該保存處理中的其他人的請求中的碎片。

如果你想減少讀取,然後使用緩存。 如果要管理具有工作單元的併發使用事務。

+0

這是'保存更改'的好處。像大多數其他CRM一樣,我們一次至少有20個人使用該系統。感謝蓋茨+馬特 – Chaos 2011-06-06 22:26:19

+0

只是想知道,每個工作單位或每種方法創建上下文有什麼缺點? – Chaos 2011-06-06 22:26:51

+0

每個工作單元需要多一點工程和更聰明的設計。它的缺點是可能導致複雜的情況,如控制反轉(時髦,但要小心,因爲線程問題可能會彈出而不知道)。簡而言之,工作單元需要更多工程,每種方法的管理更簡單,但可能導致意大利麪代碼和數據庫流量的顯着增加。沒有簡單的答案,但對於需要高流量執行的網站,您必須將工作單元視爲選項。 – Gats 2011-06-07 00:40:45

2

只是爲了擴大一點Gats的答案,這是完全正確的,我們爲每個單獨的方法創建了新的上下文對象。即使是Silverlight,我們知道我們一次只爲一個用戶運行,但爲了避免創建新的上下文對象,隨時管理上下文中的內容太痛苦了。