`

使用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
分享到:
评论

相关推荐

    亮剑.NET SharePoint Server 2007 开发实战

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

    Real World SharePoint 2010

    8. **应用程序开发**:涵盖SharePoint的开发平台,包括 wsp解决方案、沙盒解决方案、客户端对象模型(CSOM)、Silverlight集成和REST API。 9. **报表和BI**:介绍如何利用Excel Services、PerformancePoint ...

    Sharepoint之SPListItem相关编程如何读写超链接或查找项

    本文将详细介绍如何通过SharePoint对象模型来实现对超链接和查找项这两种特殊类型的字段的读写操作。 #### 二、设置与获取超链接项 **1. 设置超链接项** 要设置一个超链接项,首先需要创建一个新的`SPListItem`...

    Inside SharePoint 2010

    SharePoint 2010允许开发者创建各种应用程序,包括网站集合、网站、列表、库等,它还提供了一系列API,如客户端对象模型(CSOM)、服务器对象模型(SOM)、REST API等,便于开发者在不同的环境和平台上进行开发工作...

    使用SharePoint 2013 Workflow Services JS API

    - **JSOM (JavaScript Object Model)**:SharePoint的客户端对象模型,用于在浏览器端通过JavaScript访问和操作SharePoint数据。 - **Workflow Services JS API**:这是JSOM的一部分,提供了与工作流服务交互的...

    SharePointNgResource:使用 AngularJS 和 ngResource 的 SharePoint 示例 CRUD

    **注意事项** - 考虑到安全性,确保你的应用程序正确处理认证和授权,尤其是在与SharePoint交互时。 - 当使用ngResource与SharePoint集成时,注意URL编码和参数格式化,以遵循REST API的规范。 - 测试和调试是必不...

Global site tag (gtag.js) - Google Analytics