`

使用SHAREPOINT对象模型开发时注意事项

阅读更多
WSS中,微软提供了一整套完成的接口,使开发者可以通过这些接口对WSS中数据进行读写,那么,在编写代码过程中需要注意哪些问题呢?如何解决这些问题?
WSS对象模型包含对象都实现了IDisposable接口,所以必须注意尽量避免在内存中保留没用的对象。实际上,如果没有及时清除内存中没用的对象,可以能出现一些问题。
比如,WSS应用程序池经常性回收,应用程序出现堆栈错误,系统性能下降等等。那么如何防止这些问题发生,我们需要在代码中注意一些事项:

1. 使用Dispose方法来清除没用的对象

在WSS对象模型中,主要影响性能的类有SPSite类和SPWeb类,建议在使用完这些类后使用Dispose方法清空对象。这些内存中的对象在长时间没有使用的情况下,.net垃圾回收机制进行清理,但是,千万不要太过相信垃圾回收机制,可能在它回收这些对象之前,你的机器已经崩溃。

2. 使用using语句
通过using语句,可以在对象不在使用范围内自动清空,这样防止忘记调用dispose方法。如:
using(SPSite oSPsite = new SPSite("http://server"))
{
  using(SPWeb oSPWeb = oSPSite.OpenWeb())
   {
       str = oSPWeb.Title;
       str = oSPWeb.Url;
   }


3. 利用try,catch和finally代码块防止程序出错后对象遗留在内存中。

String str;
SPSite oSPSite = null;
SPWeb oSPWeb = null;
try
{
   oSPSite = new SPSite("http://server");
   oSPWeb = oSPSite.OpenWeb(..);

   str = oSPWeb.Title;
}
catch(Exception e)
{
}
finally
{
   //当程序出错后,会调用这里的代码清除对象  
   if (oSPWeb != null)   
     oSPWeb.Dispose();

   if (oSPSite != null)
      oSPSite.Dispose();
}

注意,在使用重定向后,将不会调用finally中的代码,所以,如果要使用重定向,你应该使用如下代码:

String str;
SPSite oSPSite = null;
SPWeb oSPWeb = null;
try
{
   oSPSite = new SPSite("http://server");
   oSPWeb = oSPSite.OpenWeb(..);

   str = oSPWeb.Title;
   if(bDoRedirection)
   {
           //在重定向之前,清空相关对象
       if (oSPWeb != null)
          oSPWeb.Dispose();
   
       if (oSPSite != null)
          oSPSite.Dispose();

       Response.Redirect("newpage.aspx");
   }
}
catch(Exception e)
{
}
finally
{
   if (oSPWeb != null)
     oSPWeb.Dispose();

   if (oSPSite != null)
      oSPSite.Dispose();
}

4. 除了SPSite和SPWeb两个对象类以外,要注意的是,当你访问SPSite.RootWeb和SPWeb.ParentWeb 这两个属性后,你需要清除RootWeb产生的对象。例如:

String str;
SPSite oSPSite = new SPSite("http://server");

str = oSPSite.RootWeb.Title;
str = oSPSite.RootWeb.Url;

... additional processing on RootWeb ...

oSPSite.RootWeb.Dispose(); //注意要删除RootWeb产生的对象
oSPSite.Dispose();

原文链接:http://www.cnblogs.com/levinlee/archive/2008/07/31/1257654.html
分享到:
评论

相关推荐

    SharePoint对象模型详解

    然而,需要注意的是,SharePoint对象模型受到严格的权限控制,有些功能仅使用对象模型可能难以实现或完全不可能。 在学习和使用SharePoint对象模型时,通常会从基础的`Microsoft.SharePoint`命名空间开始,逐步了解...

    sharepoint二次开发

    7. WebPart 的开发:WebPart 的开发需要了解 SharePoint 的组件模型和业务逻辑,可以通过 Visual Studio 等开发工具来开发和部署 WebPart。 8. SharePoint 的配置文件:SharePoint 的配置文件包括 web.config 和 ...

    Sharepoint 2016 开发资料汇总

    - **客户端对象模型(CSOM)与JavaScript对象模型(JSOM)**:CSOM和JSOM是远程访问SharePoint数据的主要方式,可用于构建Web应用、移动应用或单页应用(SPA)。 - **REST API与OData**:SharePoint 2016提供了...

    SharePoint 2010开发概览

    它在前代版本的基础上进行了全面升级,不仅提升了用户界面的友好性,还增强了开发工具与设计功能,如集成PowerShell、改进列表和事件处理、引入LINQ集成、新增客户端对象模型和运行时等。此外,SharePoint 2010还...

    SharePoint 2016 Development 开发教程

    课程以SharePoint 2016为基础,介绍各种对象模型的功能和使用,通过例子介绍如何使用vs开发SharePoint项目,包括web部件、事件触发器、计时器任务、应用程序页的常用模板,和开发过程中常见的问题等。 1.对象模型...

    SharePoint-开发人员演练

    BCS)外部内容类型、为SharePoint客户端对象模型创建Silverlight应用程序、使用SharePoint对象模型和Silverlight绘图控件进行图形开发,以及为沙盒解决方案创建Web部件等。 在知识内容方面,文档详细介绍了各任务的...

    Sharepoint webpart 自定义开发(很详细)

    WebPart 的自定义开发是 SharePoint 开发中的核心技能,可以帮助企业根据特定需求定制化工作环境。 首先,我们需要了解WebPart的基础知识。WebPart是SharePoint页面上的可视化单元,它可以显示数据、执行功能或提供...

    亮剑.NET SharePoint Server 2007 开发实战

     本书第1章为基础知识,讲述sharepoint的基本概念,基本的对象模型,代码编写注意事项,并讲解了一个集开发和部署打包为一体的项目结构的创建;第2章为web部件开发,介绍了web部件的开发部署及其皮肤机制的实现;第...

    亮剑.NET:SharePoint Server 2007开发实战

    - SDK与API:介绍SharePoint的SDK和对象模型,如SPSite、SPWeb、SPList、SPListItem等,以及如何使用它们进行编程。 3. **站点与列表** - 创建与定制站点:学习如何创建不同类型的SharePoint站点,如团队站点、...

    Office SharePoint Server2007开发入门指南

    《Office SharePoint Server 2007开发入门指南》是一本专为初学者设计的教程,旨在帮助读者快速掌握SharePoint Server 2007的开发技术。SharePoint Server是Microsoft提供的一款企业级协作平台,它提供了文档管理、...

    Sharepoint2010开发教程

    几份sharepoint2010的开发教程,其中有几个是英文版的。 分别是:1、[SharePoint.2010.Workflows.实战].(SharePoint.2010.Workflows.in.Action).Phil.Wicklund.文字版.pdf 2、[SharePoint2010.Web开发参考大全]....

    sharepoint 2010页面开发

    总结来说,SharePoint 2010页面开发涉及大量CSS类的使用,它们定义了页面的布局、颜色、字体、按钮样式和交互行为。理解和熟练应用这些CSS类是创建高效、美观且符合用户体验的SharePoint页面的关键。开发者应关注...

    基于SharePoint客户端对象模型的文档库元数据处理.pdf

    总的来说,基于SharePoint客户端对象模型的文档库元数据处理是当前企业信息管理系统中不可或缺的一部分,它为工程师提供了更加便捷的开发方式,能够有效地解决信息更新、检索和管理等实际问题,从而提高企业的协作...

    SharePoint的部署与开发

    开发Web Parts可以利用SharePoint的对象模型,这是一组类和接口,允许开发者访问SharePoint的功能并创建自定义解决方案。通过Visual Studio .NET,开发者可以方便地创建和管理Web Parts,它提供了直观的工具和丰富的...

    Sharepoint 开发人员演练

    - **目标**:掌握如何使用 Silverlight 和 SharePoint 客户端对象模型访问并展示 SharePoint 数据。 - **步骤**: - 使用 SharePoint 客户端对象模型编写代码以查询列表数据。 - 设计 Silverlight 用户界面来展示...

    Sharepoint开发认证

    对于开发人员来说,理解和掌握SharePoint的架构、编程模型以及其与Office 365和其他Microsoft服务的集成至关重要。 70-573考试是SharePoint开发认证的一部分,这个考试主要考察以下几个核心领域: 1. **SharePoint...

Global site tag (gtag.js) - Google Analytics