クライアント オブジェクト モデルを使用したプログラミング 第 1 回 : クライアント オブジェクト モデルの概要
こんにちは。SharePoint サポートの多田です。
これから SharePoint 2010 から新しく追加されたコンポーネントであるクライアント オブジェクト モデルを使用したプログラミングについてシリーズでお伝えしていきます。
第 1 回である今回は、クライアント オブジェクト モデルの概要についてご案内します。
- オブジェクト モデルとクライアント オブジェクト モデルの違い
まずは前提条件として、クライアント オブジェクト モデルを説明する前に、オブジェクト モデルとクライアント オブジェクト モデルの違いについて説明します。
オブジェクト モデルは、SharePoint サーバー上で動作する SharePoint アプリケーションを作成するために提供されるクラス ライブラリです。サーバー オブジェクト モデルとも呼ばれます。主に、リストやライブラリに対するイベントレシーバー、Web パーツ、ワークフローなどの開発に使用します。
一方、クライアント オブジェクト モデルは、クライアント側で動作する SharePoint アプリケーションを作成するために提供されるクラス ライブラリです。主に、JavaScript、Silverlight、フォームアプリケーション上で SharePoint のデータを扱えるようになります。また、クライアント オブジェクト モデルは、クライアント側から SharePoint のデータにアクセスするため、サーバー オブジェクト モデルと比べて使える機能は限定されています。
- クライアント オブジェクト モデルの通信の仕組み
クライアント オブジェクト モデルの通信の仕組みを説明します。
参照: https://msdn.microsoft.com/en-us/library/ee857094.aspx
クライアント オブジェクト モデルは内部的にサーバーと、Windows Communication Foundation (WCF) サービス (.../_vti_bin/client.svc) を使用して通信を行います。クライアント側では、記述されたコードが内部で Proxy にて XML リクエストに変換され、サーバー側に送信されます。サーバー側ではクライアントから送信された命令をバッチ単位で処理し、JSON 形式でクライアントに返信します。クライアント側では応答した JSON メッセージが、自動的にクライアント オブジェクト モデル側に反映されます。
このように開発者は内部的に行われるオブジェクト シリアライズやメッセージ通信を全く意識せず、オブジェクトの操作のみで様々な SharePoint リソースへアクセスするよう実現することが可能となります。
クライアント オブジェクト モデルは、サーバー オブジェクト モデルと一貫性があるため、サーバー オブジェクト モデルのコードを書いたことがある方であれば比較的簡単に習得できます。しかし、クライアント環境での動作を実現するために、内部的にはクライアントサーバー上記のような通信を行なっているため、コーディング方法が若干変わってきます。コードを書き始める前に上記の内部的な仕組み通信の流れを把握しておくことで、スムーズに書き始めることができます。具体的なコードの書き方については、次回の記事でご案内します。間で
- クライアント オブジェクト モデルで使える名前空間
クライアント オブジェクト モデルにて提供されているクラスライブラリは、以下の 3 種類になります。
- .NET Managed Client OM
- Silverlight Managed Client OM
- ECMAScript OM (JavaScript OM)
また、クライアント オブジェクト モデルで使用できる名前空間は主に、Microsoft.SharePoint 名前空間で提供されているものになります。管理オブジェクトやサイト コレクション (SPSite クラス) より高いレベルを対象とするオブジェクトは提供されておりません。また、検索機能やプロファイル機能などのサービスアプリケーション関連のオブジェクトについても提供されておりません。これらのオブジェクトを操作する場合は Web サービスを使用することになります。
以下はサーバー オブジェクト モデルとクライアント オブジェクト モデルの名前空間の対応表になります。
サーバー |
.NET マネージおよび Silverlight |
JavaScript |
Microsoft.SharePoint.SPContext |
Microsoft.SharePoint.Client.ClientContext |
SP.ClientContext |
Microsoft.SharePoint.SPSite |
Microsoft.SharePoint.Client.Site |
SP.Site |
Microsoft.SharePoint.SPWeb |
Microsoft.SharePoint.Client.Web |
SP.Web |
Microsoft.SharePoint.SPList |
Microsoft.SharePoint.Client.List |
SP.List |
Microsoft.SharePoint.SPListItem |
Microsoft.SharePoint.Client.ListItem |
SP.ListItem |
Microsoft.SharePoint.SPField (主要な派生クラスを含む) |
Microsoft.SharePoint.Client.Field |
SP.Field |
Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager |
Microsoft.SharePoint.Client.WebParts.LimitedWebPartManager |
SP.WebParts.LimitedWebPartManager |
参照:https://msdn.microsoft.com/ja-jp/library/ee537855.aspx
※ また、JavaScript では、リストにて選択されたチェックボックスを検知するメソッド (SP.ListOperation.Selection.getSelectedItems メソッド)、またモーダルダイアログ (SP.UI.ModalDialog.showModalDialog メソッド) など、.NET マネージ API にない、JavaScript ならではの API が提供されております。
次回は、.NET マネージ API を使用したコーディングの例をご案内する予定です。