SharePoint - 客户端对象模型

在本章中,我们将介绍客户端对象模型或CSOM.这是用于构建添加到SharePoint 2010的远程应用程序的两个API之一.

客户端对象模型的设计目标之一是尽可能多地模仿服务器对象模型.可能,因此对于已熟悉在服务器端进行开发的开发人员来说,学习曲线会更短.

客户端对象模型的核心是一个名为Client.svc的Web服务,住在 _vti_bin 虚拟目录中.我们不应该直接与Client.svc通信,但是我们可以使用三个代理或入口点.它们是 :

  • .NET托管代码.

  • JavaScript.

  • JavaScript.

代码与这些代理进行通信,然后这些代理最终与Web服务进行通信.

由于这是一个远程API,并且通过Web服务调用与SharePoint进行通信,因此客户端对象模型旨在允许我们批量处理命令和信息请求.

.NET托管代码

.NET管理实现的两个核心程序集是 :

Microsoft.SharePoint.Client.dll Microsoft.SharePoint.Client.Runtime.dll.

Silverlight代码

Silverlight实现位于 TEMPLATE \LAYOUTS \ClientBin 中.程序集名称也以 Microsoft.SharePoint.Client 开头.对于除一个之外的所有程序集,程序集名称以Silverlight结尾.

Silverlight实现的两个核心程序集是 :

  • Microsoft.SharePoint.Client.Silverlight.dll

  • Microsoft.SharePoint.Client.Silverlight.Runtime.dll

JavaScript

客户端对象模型上的JavaScript实现位于SharePoint系统根目录下的TEMPLATE \LAYOUTS文件夹中. JavaScript库名称都以SP开头.三个核心库是 SP.js,Sp.Runtime.js SP.Core.js .

客户端对象模型在SharePoint 2013中进行了扩展.

使用.NET检索资源

让我们看一个我们将使用托管的简单示例使用Windows窗体应用程序实现客户端对象模型.因此,首先我们需要创建一个新项目.

第1步 : 在中间窗格中选择 Windows窗体应用程序,然后在"名称"字段中输入名称.单击确定.

Windows窗体应用程序

步骤2 : 创建项目后,让我们添加一个列表框和一个按钮,如下所示.要使用客户端对象模型,我们需要添加几个程序集引用.右键单击References并选择Add Reference.

List Box

第3步 : 在程序集下的左窗格中选择扩展.

客户端对象模型的托管实现的两个核心程序集是 Microsoft.SharePoint.Client Microsoft.SharePoint.Client.Runtime .检查这两个选项,然后单击"确定".

Microsoft SharePoint Client Runtime

现在双击Load按钮添加事件处理程序,如下所示.

using Microsoft.SharePoint.Client;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ClientObjectModel {
   public partial class Form1 : Microsoft.SharePoint.Client.Form {
      public Form1() {
         InitializeComponent();
      }
      private void loadBtn_Click(object sender, EventArgs e) {
         using (var context = new ClientContext("http://waqasserver/sites/demo")) {
            var web = context.Web;
            context.Load(web);
            context.Load(web.Lists);
            context.ExecuteQuery();
            ResultListBox.Items.Add(web.Title);
            ResultListBox.Items.Add(web.Lists.Count);
         }
      }
   } 
}

客户端对象模型的入口点是客户端上下文.它是 SPContext 对象的客户端版本的远程.这是一次性类型,因此它包含在使用语句中.我们在 ClientContext 中传递SharePoint网站的URL.

现在,我们有了上下文.我们需要一个对象来表示当前站点,因此 var web = context.web .

注意 : 请记住,此对象只是一个空shell,因此我们需要使用context.load加载Web对象并传递Web对象.这表明我们希望在下一次批量检索中填充Web对象属性.

接下来,我们需要调用 context.ExecuteQuery 并实际启动批量检索.我们从服务器检索属性值并添加到列表框.

编译并执行上面的代码时,您将看到以下输出 :

内容执行查询

单击加载按钮,您将看到我们同时获得标题和计数列表.

它使我们的项目设置能够使用客户端对象模型使用load方法检查加载资源.