SharePoint - 客戶端物件模型



本章我們將瞭解客戶端物件模型 (CSOM)。這是 SharePoint 2010 中新增的用於構建遠端應用程式的兩個 API 之一。

客戶端物件模型的設計目標之一是儘可能模仿伺服器物件模型,以便已經熟悉伺服器端開發的開發人員學習曲線更短。

客戶端物件模型的核心是一個名為 Client.svc 的 Web 服務,它位於 _vti_bin 虛擬目錄中。我們不應該直接與 Client.svc 通訊,但我們得到了三個代理或入口點,我們可以使用它們。它們是:

  • .NET 託管程式碼。
  • JavaScript。
  • JavaScript。

程式碼與這些代理通訊,然後這些代理最終與 Web 服務通訊。

由於這是一個遠端 API,並且透過 Web 服務呼叫與 SharePoint 通訊,因此客戶端物件模型旨在允許我們批次處理命令和資訊請求。

.NET 託管程式碼

.NET 託管實現的兩個核心程式集是:

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 使用 Load 檢索資源

讓我們看一個簡單的示例,在這個示例中,我們將使用 Windows 窗體應用程式使用客戶端物件模型的託管實現。因此,首先我們需要建立一個新專案。

步驟 1 - 在中間窗格中選擇Windows 窗體應用程式,並在“名稱”欄位中輸入名稱。單擊“確定”。

Windows Forms Application

步驟 2 - 專案建立後,讓我們新增一個列表框和一個按鈕,如下所示。要使用客戶端物件模型,我們需要新增幾個程式集引用。右鍵單擊“引用”,然後選擇“新增引用”。

List Box

步驟 3 - 在程式集下的左側窗格中選擇擴充套件

客戶端物件模型的託管實現的兩個核心程式集是Microsoft.SharePoint.ClientMicrosoft.SharePoint.Client.Runtime。選中這兩個選項,然後單擊“確定”。

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,這實際上啟動了批次檢索。我們從伺服器檢索屬性值並新增到列表框中。

編譯並執行上述程式碼後,您將看到以下輸出:

Content Execute Query

單擊“載入”按鈕,您將看到我們同時獲得了列表的標題和計數。

它使我們的專案設定能夠使用客戶端物件模型來使用 load 方法檢查載入資源。

廣告