上一篇文章中简单的介绍了使用CSOM进行编程。今天主要讲一下CSOM使用中一些小技巧,可以让你的程序运行的更快。

单独加载某些属性

在上文中的例子,需要返回Web对象信息的时候,我们使用了如下的代码:

var web= clientContext.Web;
clientContext.Load(web);//设置查询信息

进行查询Web的信息,这时候,Web会返回很多属性,很多是我们不需要的,如果我们只需要返回某些属性的时候,我们可以使用如下的方式:

var currentWeb = clientContext.Web;
clientContext.Load(currentWeb, web => web.Title, web => web.Url, web => web.WebTemplate);
clientContext.ExecuteQuery();

这时候返回的报文变成了如下格式:

我们可以看到报文格式中,只返回了我们需要的属性。

以上两种情况下对比,返回的Respone长度分别是1200 和500,因此在网络吞吐有限的情况下,尽量少的返回查询属性,对于效率的提升有很重要的作用。

集合属性的查询

CSOM如何处理集合信息的查询呢,比如获取web下所有的list信息,我们可以:

clientContext.Load(currentWeb.Lists);
clientContext.ExecuteQuery();

这时候,每一个list的所有信息都会返回来,如果我们只想回去某个list的Title和BaseTemplate,那么我们只需要:

var currentWeb = clientContext.Web;
clientContext.Load(currentWeb.Lists, lists => lists.Include(list => list.Title, list => list.BaseTemplate));

或者可以使用:

clientContext.LoadQuery(currentWeb.Lists.Include(list => list.Title, list => list.BaseTemplate));
clientContext.ExecuteQuery();

这两种情况下,在一个有25个list的Web中,Response的报文长度分别是38963 和8172,因此在加载集合的时候,选择合适的查询条件对性能的影响至关重要。

使用SharePoint CSOM 编写高效的程序的更多相关文章

  1. JVM性能优化系列-(4) 编写高效Java程序

    4. 编写高效Java程序 4.1 面向对象 构造器参数太多怎么办? 正常情况下,如果构造器参数过多,可能会考虑重写多个不同参数的构造函数,如下面的例子所示: public class FoodNor ...

  2. 使用ExceptionHandlingScope进行高效的SharePoint CSOM编程

    异常处理 在我们使用SharePoint API的时候,获取某些对象的时候,可能会出异常,那么CSOM如何处理这种情况呢. 我们在获取某个List的时候,代码如下: using (ClientCont ...

  3. 【ZZ】C 语言中的指针和内存泄漏 & 编写高效的C程序与C代码优化

    C 语言中的指针和内存泄漏 http://www.ibm.com/developerworks/cn/aix/library/au-toughgame/ 本文讨论了几种在使用动态内存分配时可以避免的陷 ...

  4. 编写高效的JavaScript程序

    作者: Addy Osmani  来源: CSDN  发布时间: 2013-01-10 14:15  阅读: 7952 次  推荐: 15   原文链接   [收藏] 英文原文:Writing Fas ...

  5. MySql如何编写高效的SQL

    最近应团队要求,研究整理了下,mysql相关的优化,有些是根据实际java项目中碰到的情况经验之谈.欢迎讨论~ SQL 语言是一种强大而且灵活的语言,在使用 SQL 语言来执行某个关系查询的时候,用户 ...

  6. 编写高效的Android代码

    编写高效的Android代码 毫无疑问,基于Android平台的设备一定是嵌入式设备.现代的手持设备不仅仅是一部电话那么简单,它还是一个小型的手持电脑,但是,即使是最快的最高端的手持设备也远远比不上一 ...

  7. 编写高效SQL最佳实践

    编写高效 SQL 语句的最佳实践 秦玮, 高级软件工程师, IBM 王广成, 软件工程师, IBM 王韵婷, 高级软件工程师, IBM 简介: 本文列举了一些在编写 SQL 查询语句时可能导致 DB2 ...

  8. 如何在Android上编写高效的Java代码

    转自:http://www.ituring.com.cn/article/177180 作者/ Erik Hellman Factor10咨询公司资深移动开发顾问,曾任索尼公司Android团队首席架 ...

  9. 编写高效Lua代码的方法

    编写高效Lua代码的方法 翻译自<Lua Programming Gems>Chapter 2:Lua Performance Tips:Basic fact By Roberto Ier ...

随机推荐

  1. ngx.lua中遇到的小问题

    作者: 胡 志伟 分类: ngx_lua, 开发代码 发布时间: 2013-09-26 08:40 ė 6评论关闭 在使用ngx.redirect 到一个新的地址时,错误日志提示: lua entry ...

  2. Python随机森林算法的使用

    #coding:utf-8 # from python.Lib.packages.sklearn.tree import DecisionTreeClassifier # from python.Li ...

  3. Selenium2+python自动化19-单选框和复选框(radiobox、checkbox)

    本篇主要介绍单选框和复选框的操作 一.认识单选框和复选框 1.先认清楚单选框和复选框长什么样 2.各位小伙伴看清楚哦,上面的单选框是圆的:下图复选框是方的,这个是业界的标准,要是开发小伙伴把图标弄错了 ...

  4. python datatime

    一.datetime 1.date date.today() 2.time 3.datetime datetime.now() datetime.strftime(fmt) 转换为字符串 dateti ...

  5. php折半查找(数组必须为有序)

    $arr=array('1','7','9','11','20','23','33','44','50');     $len=count($arr);      $low=0;$high=$len- ...

  6. [R] 回归拟合

    如下示例 > fit <- lm(y~x, data = data01) > summary(fit) Call: lm(formula = data01$P ~ data01$M, ...

  7. AngularJs 返回上一页

    html <script src="lib/angular/angular-1.4.9/angular.js"></script> <script s ...

  8. qt显示视频

    针对qt4的(视频格式为rgb32)     v4l_grab_movie(&v4l_dev);   unsigned char *pBuffer= v4l_dev.buffer;   QIm ...

  9. Contacts群组添加成员,多选列表过滤已添加数据

    Group添加联系人时,Contacts默认设计不会过滤已分组的联系人.之前看到小米,oppo都做过过滤,一直懒得改. 最近客户要求group添加成员时,不显示已分组的联系人,故记录一下实现过程. p ...

  10. struts的DevMode模式

    在实际应用开发或者是产品部署的时候,对应着两种模式:开发模式(devMode):此时 DevMode=ture: 产品模式(proMode):此时  DevMode=false: 在一些服务器或者框架 ...