2011-06-14 28 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

相关问题