保持相同的SPWeb& SPSite贯穿整个应用程序生命周期?

时间:2011-06-14 08:53:45

标签: sharepoint sharepoint-2010 spweb spsite

我们有几个DAL项目。许多共享点列表,如客户,销售,反映在C#类中的提供商。我们通过抽象的母类使每个对象实现IDisposable。每次我们实例化一个对象以从列表中获取客户时,调用者代码需要调用customer.Dispose()来处理用于实例化对象的spweb和spsite:

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

并且在构造函数基类中实例化了spsite和spweb全局变量,并且还有dispose函数。

我想知道:如何在整个sharepoint应用程序中使用相同的spweb和spsite?我们所有的项目都知道一个可以在单例模式后实例化spsite和spweb的项目。我们将“永远”使用这个spsite和spweb,我们永远不会关闭它们并对每个对象使用相同的东西,每次实例化一个对象时都会保存打开 - 关闭过程!

你认为这是一个疯狂的想法,会产生影响吗?我的意思是使用相同的spweb很长一段时间,也就是说服务器开启的时间......这是一个坏主意吗?每个实例化,而不是每天数千次打开关闭spweb? spweb活着期有限吗? (这是一个很大的应用程序,有很多开发)

1 个答案:

答案 0 :(得分:3)

最大的风险是SPWeb可能会过时。在多用户环境中,在第一次往返中获取的SPWeb属性(例如 - Web Title)可以由另一个用户更改,但由于您没有重新实例化,因此您将继续使用旧值。只要正确处理它们,就可以创建SPWeb和SPSite的多个实例。