2011-06-14 29 views
2

我們有多個DAL項目。許多共享點列表像客戶,銷售商,反映在C#類中的提供者。我們通過抽象母類使每個對象實現IDisposable。每次我們實例化一個對象的時間從例如列表獲得一個客戶,來電者的代碼需要調用customer.Dispose()處置的SPWeb和SPSite的使用實例化對象:在整個應用程序生命週期中保持相同的SPWeb&SPSite?

public Customer(int spListItemID):base(LIST_URL) 
    { 
     try 
     { 
      spli = Liste.GetItemById(spListItemID); 
     } 
     catch(ArgumentException) 
     { 
      spli = null; 
     } 
    } 

和構造函數的基類有spsite和spweb全局變量的實例化,還有dispose函數。

我想知道:如何使用相同的spweb和spsite爲整個sharepoint應用程序?我們所有的項目都知道一個項目,可以在單例模式下實例化這些spsite和spweb。我們會永遠使用這個spsite和spweb,我們永遠不會關閉它們,並且爲每個對象使用相同的內容,每次我們實例化一個對象時都可以保存開啓 - 關閉過程!

你認爲這是一個瘋狂的想法,這會產生影響嗎?我的意思是使用相同的spweb很長一段時間,也就是說服務器的運行時間......這是一個壞主意嗎?而不是每天爲每個實例化開放關閉spweb每天數千次? spweb的活着期限有限嗎? (這是一個很大的共享點應用程序,它有很多開發)

回答

3

最大的風險是SPWeb可能會過時。在多用戶環境中,在第一次往返中獲取的SPWeb屬性(例如 - Web標題)可以由另一個用戶更改,但由於您沒有重新實例化,因此您繼續擁有舊值。只要您正確處理它們,您就可以創建多個SPWeb和SPSite實例。

+0

好的謝謝,除了網站上的標題,描述和其他信息(這些是基本信息,它們將永遠不會改變我們),是否有任何可能改變或需要刷新或者不可避免地會因爲多用戶環境?他們正在處理列表,添加,刪除,編輯事件接收器,計時器作業,工作流程......:s – KitAndKat 2011-06-14 12:47:16

+0

無論如何,我想你是對的,有很多屬性會發生衝突,比如CurrentUser for例如,在這種情況下,什麼是currentuser ...,這個類是如此龐大而複雜(反射器顯示它!),它將不可避免地在幾個月內同時被幾個人使用而崩潰...... – KitAndKat 2011-06-14 13:51:46

相關問題