Share via


Silverlight などの外部アプリケーションをホストする Web パーツ

最終更新日: 2010年10月15日

適用対象: SharePoint Foundation 2010

この記事の内容
概要
さまざまな開発レベル
Silverlight クロスドメイン データ アクセス
外部アプリケーション プロバイダー
ホスティング Web パーツの作成

ここでは、非 SharePoint アプリケーションを Web パーツでホストする方法について説明します。一連のトピックでは、Microsoft SharePoint Foundation に組み込まれた Silverlight Web パーツを利用して Silverlight アプリケーションをホストできるようにする方法について説明します。Silverlight アプリケーションの実行形式ファイルは、Silverlight Web パーツを含むページがある SharePoint Foundation Web アプリケーションとは異なるドメインに存在する場合があります。また、カスタムのアプリケーションホスト Web パーツを作成したり、カスタム外部アプリケーション プロバイダー (EAP) を作成することで、アプリケーションをホストするように SharePoint Foundation アーキテクチャをカスタマイズしたりすることもできます。

概要

投稿者の権限を持つ Web サイト ユーザーは、特定の制約下で、SharePoint 以外のアプリケーション (Silverlight アプリケーションなど) をホストする Web パーツを自身の SharePoint ページに追加することができます。このアプリケーションは、アプリケーション プリンシパルとして適切に登録されていると、SharePoint Foundation Web アプリケーションのドメインの外部にあるサーバー上でホストされることもでき、また、SharePoint データの読み書きもできます。この Web パーツは、SharePoint 以外のアプリケーションを SharePoint Foundation Web サイトにすばやく統合する方法を開発チームに提供します。

注意

アプリケーションの実行可能ファイルの URI が「Silverlight による HTTP 通信とセキュリティ: ドメイン間通信」に示されている 4 つのいずれかの方法で Web アプリケーションの URI と異なる場合、アプリケーションは、SharePoint Foundation Web アプリケーションの外部にあります。つまり、異なるドメインを持ちます。

さまざまな開発レベル

アプリケーションを SharePoint Foundation に統合するために必要な開発作業の量は、基本的に以下の要因によって決まります。

  • アプリケーションの実行可能ファイルが、SharePoint Foundation Web アプリケーション内でホストされるか、または外部ドメインでホストされるか。

  • アプリケーションで SharePoint Foundation データを読み取りおよび書き込みする必要があるか。

  • Web パーツのレンダリング方法を管理する既定の設定を変更する必要があるか。

  • アプリケーションに SharePoint Foundation Web パーツで実行するためのユーザー設定の構成情報が必要か。

  • アプリケーションをホストする Web パーツのプロパティを作成および編集するために、SharePoint Foundation のカスタム UI が必要か。

最も単純な状況としては、SharePoint 以外のアプリケーションが、SharePoint Foundation Web アプリケーションと同じドメイン内にある状況か、または SharePoint 以外のアプリケーションが外部 URL でホストされていても、SharePoint データにアクセスする必要がない状況が考えられます。どちらの場合も SharePoint での開発を行う必要はありません。実行可能ファイルの開発が完了した後に、Web アプリケーション管理者はそのアプリケーションをアプリケーション サーバーかドキュメント ライブラリに展開します。SharePoint 以外のアプリケーションをホストできる Web パーツをユーザーが追加するときに、実行可能ファイルの URL を指定するように求めるメッセージが表示されます。アプリケーションをローカルに展開している場合、現在のユーザーのコンテキストで マネージ クライアント オブジェクト モデル を使用して、SharePoint Foundation データにアクセスできます (外部アプリケーションが Silverlight アプリケーションの場合、特殊な Silverlight バージョンのクライアント オブジェクト モデルを使用します)。

アプリケーションを Web アプリケーションとは別のドメインに展開し、さらに、そのアプリケーションが SharePoint データにアクセスする必要がある場合は、Silverlight クロスドメイン データ アクセス (Silverlight CDA) を使用して統合する必要があります。

Silverlight クロスドメイン データ アクセス

SharePoint Foundation Web アプリケーションとは異なるドメインにあるアプリケーションをホストできる場合に SharePoint Foundation ユーザーが得られる利点は、そのような多くのアプリケーションをアプリケーション サーバーでホストでき、それらをすべてのアプリケーションで利用できるようになることです。Silverlight CDA を使用すると、管理者は、このアプリケーションをホストする Web パーツを Web パーツ ページに追加できるユーザーの能力を必要以上に制限することなく、外部アプリケーションをホストする外部サーバーのアクセス許可を制限できます。アプリケーションは、"アプリケーション プリンシパル" と呼ばれる独特な種類のユーザーとして SharePoint Foundation Web アプリケーションにログオンします。この特殊なユーザーに管理者が付与したアクセス許可と、アプリケーションをホストする Web パーツを含んだ Web ページを表示する実際のユーザーに付与されたアクセス許可との共通部分が、当該アプリケーションに付与されるアクセス許可となります。

注意

通常、SharePoint Foundation で使用される複数のアプリケーションを 1 台の外部サーバーでホストする場合、これらのアプリケーションはすべて、同一のアプリケーション プリンシパル ユーザー資格情報を使用します。各アプリケーション用に別々のアプリケーション プリンシパル ユーザーを作成できますが、サーバーは、すべてのアプリケーションに対してどのアプリケーション プリンシパル ユーザーでも使用することができます。

開発者が注意するべき、Silverlight CDA の重要な要素は次のとおりです。

  • 外部ドメイン上のアプリケーションから SharePoint Foundation データへのアクセスは、ファーム管理者が外部アプリケーション プロバイダー (EAP) を登録して有効にする必要があります。セキュリティ上の理由により、SharePoint Foundation UI を使用して有効にすることはできません。その代わりにプログラムによって有効にします。ソリューションに必要なコードに関する指示を含めたり、ファーム管理者用に小さいユーティリティを提供したりすることができます。このユーティリティ コードの作成の詳細については、「[方法] 外部アプリケーション プロバイダーを有効にする」を参照してください。

    注意

    複数の外部アプリケーションを使用する場合でも、EAP を登録する必要があるのは 1 回だけです。

  • アプリケーションに関して必要な SharePoint Foundation 情報を提供する 外部アプリケーション XML マークアップを作成する必要があります。アプリケーションをホストする Web パーツを追加するユーザーに、マークアップを指定するように求めるメッセージが表示されます。したがって、ユーザーがマークアップを指定できるようにしておく必要があります。マークアップ作成の詳細については、「[方法] 外部アプリケーションの XML マークアップを作成する」を参照してください。

  • ファーム管理者は、外部アプリケーションが SharePoint Foundation へのログオンで使用するユーザー ID を作成し、そのユーザーを 'アプリケーション プリンシパル' として設定する必要があります。セキュリティ上の理由により、UI を使用して設定することはできません。SharePoint Foundation データへのクロス ドメイン アクセスを必要とするアプリケーションに代わってログインする SPUser オブジェクトの特定のプロパティに値を割り当てる、ユーティリティを提供する必要があります。このユーティリティの作成の詳細については、「[方法] アプリケーション プリンシパル ユーザーを作成する」を参照してください。アプリケーションをホストする Web パーツを投稿者が追加できるようにするには、Web サイト管理者がアプリケーション プリンシパルを Web サイトのユーザーとして追加します。

  • 外部アプリケーションのドメインにインストールされる HTTP 要求ハンドラーを作成する必要があります。外部アプリケーションから SharePoint Foundation Web アプリケーションへの要求は、最初にこのハンドラーに送られます。次に、セキュリティ ハッシュおよびユーザー資格情報と共に、SharePoint Foundation フロントエンド Web サーバーに送信されます。HTTP 要求ハンドラー作成の詳細については、「[方法] 外部アプリケーション用の HTTP 要求フォワーダーを作成する」を参照してください。

  • SharePoint Foundation Web アプリケーションのデータを読み取るまたは書き込む Silverlight アプリケーションのコードは、独自のクライアント アセンブリで実装される SharePoint Foundation クライアント オブジェクト モデルの特殊な Silverlight バージョンを使用します。このオブジェクト モデルとそのプログラミングの詳細については「Silverlight オブジェクト モデルを使用する」と「Silverlight 展開」を参照してください。

注意

これらのタスクは、アプリケーションが外部ドメインにあり、さらに SharePoint Foundation データにアクセスする必要がある場合にのみ実行する必要がありますがどちらの条件に該当しなくてもこれらのタスクを実行しなければならない場合があります。たとえば、外部アプリケーション XML を使用して、Web パーツの幅と高さをカスタマイズする場合です。

外部アプリケーション プロバイダー

外部アプリケーション プロバイダー (EAP) は構成情報の一種であり、SharePoint 以外のアプリケーションをホストする Web パーツのプロビジョニング エンジンです。EAP は 外部アプリケーション XML を解釈し、アプリケーションをホストする Web パーツの作成を管理します。また、アプリケーションをホストする Web パーツのプロパティの編集も管理します。

カスタム EAP が登録されていない場合に使用される既定の EAP があります。サーバー ファーム内の SPWebService オブジェクトごとに 1 つの EAP を使用できます。したがって、同一の Web サービスの子であるすべての Web アプリケーションの Web パーツでホストされる外部アプリケーションはすべて、同じ EAP で管理されます。SPWebService と Web サービスの詳細については、「Microsoft SharePoint Foundation のサービス階層」および「バックグラウンド: Microsoft SharePoint Foundation のサービス エンティティ」を参照してください。

カスタム EAP を作成して既定の EAP にすることができます。以下のようなシナリオで、この作業が必要になります。

  • Web パーツのプロパティの編集やその他の作業 (外部アプリケーション用のアプリケーション プリンシパル ユーザーの自動作成など) をユーザーが行うときに使用するカスタマイズされたツール パーツが、SharePoint 以外のアプリケーションをホストする Web パーツに必要な場合。

  • カスタマイズされたクロムが Web パーツに必要な場合。

  • Silverlight アプリケーション (より正確には、アプリケーションの要求フォワーダー) にクライアント ハッシュが必要な場合。これにより、SharePoint Foundation フロントエンド Web サーバーから受信したクエリ応答が改ざんされていないことを確認できます。要求フォワーダーの詳細については、「[方法] 外部アプリケーション用の HTTP 要求フォワーダーを作成する」を参照してください。

  • Web パーツの外部アプリケーション XML にカスタム構成プロパティを含める必要がある場合。

  • Web パーツの子コントロールの作成時にカスタム ロジックを実行する必要がある場合。

カスタム EAP 作成の詳細については、「[方法] カスタム外部アプリケーション プロバイダーを作成する」を参照してください。

ホスティング Web パーツの作成

SharePoint Foundation には、Silverlight パーツが組み込まれています。Web パーツで別の種類のアプリケーションをホストする場合は、新しい種類の Web パーツを ClientApplicationWebPartBase から派生させることができます。SharePoint 以外のアプリケーションをホストする Web パーツの作成の詳細については、「[方法] 外部アプリケーションをホストする Web パーツを作成する」を参照してください。

関連項目

タスク

[方法] 外部アプリケーション プロバイダーを有効にする

[方法] アプリケーション プリンシパル ユーザーを作成する

[方法] 外部アプリケーション用の HTTP 要求フォワーダーを作成する

[方法] カスタム外部アプリケーション プロバイダーを作成する

[方法] 外部アプリケーションをホストする Web パーツを作成する

参照

SPExternalApplicationRegistrationInformation

SPExternalApplicationRequestProperties

SPExternalApplicationRequestResult

SPExternalApplicationRegistrationException

SPExternalApplicationSettings

SPExternalApplicationProvider

ClientApplicationWebPartBase

SilverlightWebPart

概念

Web アプリケーションへの Silverlight 要求のライフサイクル

[方法] 外部アプリケーションの XML マークアップを作成する

外部アプリケーション XML

その他の技術情報

Overview of Integrating External Applications with Web Parts