サーバーとサイトのアーキテクチャ : オブジェクト モデルの概要
Windows SharePoint Services では、SharePoint Web サイトのさまざまな特徴を表すオブジェクトに簡単にアクセスできるように、高度な構造化サーバー側オブジェクト モデルを提供しています。オブジェクト階層の上位レベルのオブジェクトからドリルダウンして、コードで使用する必要のあるメンバを含むオブジェクトを取得することができます。
エントリ ポイント
作成しているカスタム アプリケーションおよびソリューションのタイプによって、適切なオブジェクトを取得するための起点となる、オブジェクト モデルのエントリ ポイントが異なります。たとえば、展開の管理および構成をカスタマイズする場合、静的プロパティ ContentService を使用して、現在の Web サービス オブジェクトと Web アプリケーションのコレクションを取得します。管理 Web アプリケーションの設定を変更するには、代わりに AdministrationService プロパティを使用します。SPPeristedObjectCollection クラスから派生したコレクション クラスには、コレクションから指定したオブジェクトを選出するために使用できる GetValue メソッドが継承されます。
注意
サイト コレクション、個々のサイト、またはリストを操作する Web パーツ、カスタム Web サービス、または Web アプリケーションを作成している場合、Microsoft.SharePoint.SPContext クラスのメンバを使用して、現在のサイト コレクション、Web サイト、またはリストを取得できます。/_layouts 仮想ディレクトリに Web アプリケーションを作成すると、その機能は、Web サーバー上のすべてのサイトで使用できるようになります。コンソール アプリケーションや Windows アプリケーションなど、HTTP コンテキストの外部では、SPSite クラスのコンストラクタを使用して、特定のサイト コレクションを取得し、そのコレクション内のさまざまなオブジェクトにたどり着きます。詳細については、「サイト、Web アプリケーション、およびその他の主要オブジェクトへの参照を取得する」を参照してください。
サーバー アーキテクチャ
以下の図は、Windows SharePoint Services サーバー アーキテクチャと Microsoft.SharePoint.Administration 名前空間のコレクションやオブジェクトとの関係を表しています。
SPFarm オブジェクトは、Windows SharePoint Services オブジェクト モデル階層の最上位オブジェクトです。Servers プロパティは、展開内のすべてのサーバーを表すコレクションを取得し、Services プロパティは、すべてのサービスを表すコレクションを取得します。
SPServer オブジェクトは、それぞれ物理サーバー コンピュータを表しています。ServiceInstances プロパティは、個々のコンピュータ上で実行される各サービス インスタンスのセットにアクセスできるようにします。
各 SPService オブジェクトは、論理サービスまたはサーバー ファームにインストールされたアプリケーションを表しています。サービス オブジェクトは、各サービス インスタンスが実装する、負荷分散されるサービスのサーバー ファーム全体の設定にアクセスできるようにします。SPService クラスの派生タイプには、タイマ サービス、検索、Microsoft SQL Server、データベース サービスなどの Windows サービス用のオブジェクトだけでなく、Windows SharePoint Services などの Web サービスや Microsoft Office system 内のサービスのオブジェクトも含まれます。
SPWebService オブジェクトは、特定の論理サービスまたはアプリケーションに関する構成設定にアクセスできるようにします。WebApplications プロパティは、サービスを実行する Web アプリケーションのコレクションを取得します。
SPDatabaseServiceInstance オブジェクトは、サーバー コンピュータ上で実行しているデータベース サービスの 1 つのインスタンスを表します。SPDatabaseServiceInstance クラスは SPServiceInstance クラスから派生し、Service プロパティを継承しているため、インスタンスを実装するサービスやアプリケーションへのアクセスを可能にします。Databases プロパティは、サービスで使用されるコンテンツ データベースのコレクションを取得します。
各 SPWebApplication オブジェクトは、Internet Information Services (IIS) に基づいて負荷分散された Web アプリケーションを表します。SPWebApplication オブジェクトは、資格情報およびその他のサーバー ファーム全体のアプリケーション設定にアクセスできるようにします。Sites プロパティは Web アプリケーション内のサイト コレクションのコレクションを取得し、ContentDatabases プロパティは Web アプリケーションで使用されるコンテンツ データベースのコレクションを取得します。SPWebApplication クラスは、廃止された SPVirtualServer クラスに代わるクラスですが、SPWebApplication オブジェクトを仮想サーバー、つまりユーザーからは 1 つのサーバーのように見える 1 つ以上の物理サーバーのセットとして考えると便利な場合があります。
SPContentDatabase オブジェクトは SPDatabase クラスから継承され、SharePoint Web アプリケーション用のユーザー データが格納されたデータベースを表します。Sites プロパティはコンテンツ データベースにデータが格納されているサイト コレクションのコレクションを取得し、WebApplication プロパティは親 Web アプリケーションを取得します。
SPSiteCollection オブジェクトは、Web アプリケーション内のサイト コレクションのコレクションを表します。Item プロパティまたはインデクサは、コレクションから指定したサイト コレクションを取得し、Add メソッドはコレクション内にサイト コレクションを作成します。
サイト アーキテクチャ
以下の図は、Windows SharePoint Services サイト アーキテクチャと [N.Microsoft.SharePoint] 名前空間のコレクションやオブジェクトとの関係を表しています。
各 SPSiteオブジェクトは単数形の名前ですが、論理的に関連する SPWeb オブジェクト (下記を参照) を表します。このようなセットは、一般に "サイト コレクション" と呼ばれますが、SPSite は SPWebCollection とは対照的に標準の Microsoft .NET コレクション クラスではありません。AllWebs プロパティは、サイト コレクション内の最上位サイトも含めたすべての Web サイトのコレクションを表す SPWebCollection オブジェクトへのアクセスを可能にします。SPSite クラスの SPSite.OpenWebメソッドは、特定の Web サイトを返します。
各サイト コレクションには、SPWeb オブジェクトをいくつでも含めることができ、各オブジェクトには、テンプレートやテーマなど、サイトを管理するために使用できるメンバだけでなく、サイト上のファイルやフォルダにアクセスするために使用できるメンバがあります。Webs プロパティは、指定したサイトのすべてのサブサイトを表す SPWebCollection オブジェクトを返し、Lists プロパティは、サイト内のすべてのリストを表す SPListCollection オブジェクトを返します。
各 SPList オブジェクトは、リストまたはリスト内のアクセス アイテムを管理するために使用されるメンバを持ちます。GetItems メソッドを使用して、特定のアイテムを返すクエリを実行することができます。Fields プロパティは、リスト内のすべてのフィールド、あるいは列を表す SPFieldCollection オブジェクトを返し、Items プロパティは、リスト内のすべてのアイテム、あるいは行を表す SPListItemCollection オブジェクトを返します。
各 SPField オブジェクトは、フィールドの設定を格納するメンバを持ちます。
各 SPListItem オブジェクトは、リストの 1 行を表します。
「Windows SharePoint Services 3.0 インフラストラクチャ更新プログラム (KB951695)」をインストールする場合、偽装が一時中断されている間に SharePoint オブジェクト モデルを呼び出すと、カスタム ソリューションが失敗することがあります。Windows 認証を使用していて、コード内で IIS ワーカー プロセスから SharePoint オブジェクト モデルを呼び出す場合、その要求は呼び出し元ユーザーの ID を偽装する必要があります。Windows SharePoint Services は呼び出し元ユーザーを自動的に偽装するように ASP.NET を構成しますが、(たとえば、Windows API の RevertToSelf 関数を呼び出すか、またはユーザー トークン パラメータの値として IntPtr.Zero を指定して System.Security.Principal.WindowsIdentity.Impersonate メソッドを呼び出すことにより) 偽装を一時中断した場合は、予想外の動作が起こったり、コードが失敗したりする可能性があります。コード内で明示的に RevertToSelf 関数を呼び出さなくても、たとえば仮想パス プロバイダを実装している場合などには、偽装が解除された後で ASP.NET によって RevertToSelf 関数が呼び出されることがあります。このようなケースでは、コードで呼び出し元ユーザーを偽装していない場合、適切に動作しない可能性があります。
See Also
参照
Microsoft.SharePoint.Administration
概念
Working with List Objects and Collections (英語)