SharePoint - 客户端对象模型

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

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

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

  • .NET 托管代码。
  • JavaScript。
  • JavaScript。

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

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

.NET 托管代码

.NET Manage 实现的两个核心程序集是 −

Microsoft.SharePoint.Client.dllMicrosoft.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.jsSP.Core.js

客户端对象模型在 SharePoint 2013 中得到扩展。

使用 .NET 加载并检索资源

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

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

Windows 窗体应用程序

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

列表框

步骤 3 − 在左侧窗格中的程序集下选择扩展

客户端对象模型托管实现的两个核心程序集是 Microsoft.SharePoint.ClientMicrosoft.SharePoint.Client.Runtime。 选中这两个选项并单击"确定"。

Microsoft SharePoint 客户端运行时

现在双击"加载"按钮添加事件处理程序,如下所示。

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 对象的远程客户端版本。 这是一次性类型,因此它被包装在 using 语句中。 我们在 ClientContext 中传递 SharePoint 网站的 URL。

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

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

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

当上面的代码被编译并执行时,你将看到以下输出 −

内容执行查询

单击"加载"按钮,您将看到我们获得了列表的标题和计数。

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