SharePoint Foundation 2010 の WCF サービス

最終更新日: 2015年3月9日

適用対象: SharePoint Foundation 2010

Microsoft SharePoint Foundation 2010 の新しい REST インターフェイスおよび新しいクライアント オブジェクト モデルにより、SharePoint Foundation Web サイトの一般的な機能にアクセスできますが、すべての機能にアクセスできるわけではありません。Microsoft SharePoint Server 2010 のカスタム アプリケーションを開発する場合は、必要な特定の機能を公開している既定の Windows Communication Foundation (WCF) Web サービスが存在する可能性があります。ただし、必要なアクセスを提供する Web サービスがなくても、サーバー オブジェクト モデルを使用するカスタム Web サービスを作成して、データにアクセスできます。SharePoint Foundation 2010 では、Microsoft ASP.NET と WCF の両方のカスタム Web サービスを作成し、これを使用して、SOAP スタイルの Web サービスまたは REST Web サービスを開発できます。

SharePoint Foundation 用に作成したカスタム ASP.NET Web サービスは、変更を加えなくても SharePoint Foundation 2010 で機能し続けますが、いずれはカスタム WCF Web サービスを作成することをお勧めします。ASP.NET Web サービスの構成要件はシンプルですが、WCF サービスは、高度なアプリケーションには欠かせない強力で柔軟性に優れたバインドを提供します。SharePoint Foundation で WCF Web サービスをホストすると、構成要件を減らすことができます。前のリリース用にカスタム WCF Web サービスを作成した場合、その Web サービスを動作させるための次善策を講じ、個別の Web アプリケーション内でサービスをホストする必要がありました。SharePoint Foundation 2010 では、WCF が既定でサポートされているので次善策は不要です。

カスタム ASP.NET Web サービスは、前のリリースと同じ方法で開発します。「[ウォークスルー] カスタム ASP.NET Web サービスを作成する」で説明したように、カスタム ASP.NET Web サービスを SharePoint Foundation に展開し, .wsdl ファイルおよび .disco ファイルを追加して、Web サービスのスキーマを Microsoft Visual Studio で検出できるようにします。WCF Web サービスはもっと複雑である可能性があります。このサービスのアーキテクチャでは、WCF サービス エンドポイントの完全な構成を指定する必要があるからです。この構成情報には、エンドポイント アドレス、サービス コントラクト、およびバインド構成などがあり、これには Web サービスが動作する環境に関する特定の情報が含まれます。ただし、SharePoint Foundation 開発者は、通常、Web サービスが動作する環境に関する情報を知りません。Web アプリケーションの構成を決定し、Web サービスを展開するのはファーム管理者です。管理者は、SharePoint Foundation によってサポートされる複数の認証スキームから選択するか、複数の認証スキームを有効にして、複数のアドレスを Microsoft インターネット インフォメーション サービス (IIS) Web アプリケーションに割り当てることができます。この場合、WCF サービスでは、認証スキームおよびアドレスごとに個別のエンドポイントが必要です。この種類の構成情報は静的フォームでは提供できないので、種類が web.config の構成は使用できません。これを解決するには、動的構成 (WCF の用語ではプログラムでの構成) を使用します。

WCF 動的構成

SharePoint Foundation の WCF 動的構成は、カスタム サービス ファクトリという形式で実現します。WCF サービスを開発するときに、SharePoint Foundation によって提供されるサービス ファクトリを指定する必要があります。指定した後は、web.config の構成エントリは必要ありません。実行時に、SharePoint Foundation サービス ファクトリによって、サービスの適切なエンドポイントが自動的に構成されます。また、サービス クラスの特殊な属性を使用して、SharePoint Foundation サービス ファクトリに対して、カスタム サービスのメタデータ交換エンドポイントを自動的に作成するように指示することもできます。サービス クラスのこの属性が SharePoint Foundation サービス ファクトリによって検出されると、サービスのメタデータ交換エンドポイントが自動的に作成されます。WCF Web サービスの開発の最後の手順で、これを %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI フォルダーまたは Web アプリケーションに展開します。

次の表は、SharePoint Foundation が提供するサービスの種類とファクトリの一覧です。

サービスの種類

サービス ファクトリ

説明

SOAP サービス

MultipleBaseAddressBasicHttpBindingServiceHostFactory

基本的な HTTP バインドを使用する必要があります。これにより、基本的な HTTP バインドに基づいてサービスのエンドポイントが作成されます。

REST サービス

MultipleBaseAddressWebServiceHostFactory

Web バインドを持つエンドポイントがサービス ファクトリによって作成されます。

ADO.NET データ サービス

MultipleBaseAddressDataServiceHostFactory

データ サービス ホスト ファクトリを使用できます。

次の属性を、動作用のサービス クラスに適用できます。

  • [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] — ASP.NET との互換性のため

  • [BasicHttpBindingServiceMetadataExchangeEndpoint] — メタデータ交換 (MEX) エンドポイントを有効にするため

SPWebServiceWcfServiceSettings プロパティを使用して、SharePoint Foundation サービス ファクトリによって生成されたエンドポイントのパラメーターをカスタマイズするための構成クラスを指定します。この構成クラスの機能ではニーズに十分に対応できない場合は、独自のカスタム サービス ファクトリを開発し、Web サービスのエンドポイントを動的に作成することもできます。

WCF サービス構成

SharePoint Foundation でホストされ、動的構成を使用する WCF サービスは、そのエンドポイントの構成に関して SharePoint Foundation サービス ファクトリに依存しています。起動時に、サービス ファクトリは IIS から構成情報を読み取り、使用可能なアプリケーション用に指定されたすべての認証スキームおよびアドレスに対して適切なエンドポイントを作成します。ただし、WCF には、すべてのエンドポイントに一意のアドレスが必要です。複数の認証スキームが Web アプリケーションに対して有効になっている場合は、複数のエンドポイントが同じアドレスにマップされます。SharePoint Foundation では、この問題を解決するために、すべての認証スキームに対して一意のアドレスが作成されます。このアドレスは、サービスのベース URL に認証スキームの名前を連結したものになります。次に例を示します。

  • https://server/_vti_bin/Service.svc/negotiate

  • https://server/_vti_bin/Service.svc/ntlm

  • https://server/_vti_bin/Service.svc/anonymous

アプリケーションでカスタム WCF Web サービスのサービス参照を追加する場合は、認証サフィックスを指定する必要はありません。Web サービスにアクセスするには、そのサービスの元の URL (https://server/_vti_bin/Service.svc など) を使用できます。これが可能なのは、SharePoint Foundation インフラストラクチャの標準要素である HTTP モジュールが、SharePoint Foundation によって処理されるすべての要求を前処理するからです。この HTTP モジュールは、WCF サービス構成規則を認識し、動的構成を使用する WCF サービスに要求が到達すると、要求の認証に基づいてその経路を適切なエンドポイントに変更します。この経路変更スキームは、複数の認証スキームによってアクセスできる元の名前に配置された 1 つの WCF サービスのみを確認するクライアント アプリケーションに対して透過的に動作します。

関連項目

概念

カスタム WCF サービスを SharePoint Foundation で作成する

その他の技術情報

Windows Communication Foundation

Configuring Windows Communication Foundation Services