3

我们有多个 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 有有限的生存期吗?(这是一个大的共享点应用程序,上面有很多开发)

4

1 回答 1

3

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

于 2011-06-14T11:48:45.930 回答