- SharePoint 教程
- SharePoint - 首页
- SharePoint - 概述
- SharePoint - 类型
- SharePoint - 功能
- SharePoint - 设置环境
- SharePoint - 创建网站集
- SharePoint - API
- SharePoint - 中心管理
- SharePoint - 应用模型
- SharePoint - 集成选项
- SharePoint - 开发工具
- SharePoint - 列表功能
- 更多列表功能
- SharePoint - 自定义列表
- SharePoint - 库
- SharePoint - Web 部件
- 网站列和内容类型
- SharePoint - 数据
- SharePoint - 服务器对象模型
- SharePoint - 客户端对象模型
- SharePoint - REST API
- SharePoint - 功能和元素
- SharePoint - 功能/事件接收器
- SharePoint - Azure 平台
- SharePoint - 打包和部署
- SharePoint - 沙盒解决方案
- SharePoint - 应用
- SharePoint 有用资源
- SharePoint - 快速指南
- SharePoint - 资源
- SharePoint - 讨论
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 使用 Load 检索资源
让我们看一个简单的示例,在这个示例中,我们将使用 Windows 窗体应用程序使用客户端对象模型的托管实现。因此,首先我们需要创建一个新项目。
步骤 1 - 在中间窗格中选择Windows 窗体应用程序,并在“名称”字段中输入名称。单击“确定”。
步骤 2 - 项目创建后,让我们添加一个列表框和一个按钮,如下所示。要使用客户端对象模型,我们需要添加几个程序集引用。右键单击“引用”,然后选择“添加引用”。
步骤 3 - 在程序集下的左侧窗格中选择扩展。
客户端对象模型的托管实现的两个核心程序集是Microsoft.SharePoint.Client 和 Microsoft.SharePoint.Client.Runtime。选中这两个选项,然后单击“确定”。
现在双击“加载”按钮以添加如下所示的事件处理程序。
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 方法检查加载资源。