InfoPath Forms Services のアーキテクチャ

最終更新日: 2010年3月12日

適用対象: SharePoint Server 2010

この記事の内容
Office SharePoint Server との統合
一般的なアーキテクチャ
実行時のアーキテクチャ
レンダリングとクエリ パラメーター
フォーム テンプレートのライフサイクル
フォーム テンプレートの変換

Microsoft SharePoint Server 2010 の一部である InfoPath Forms Services は、真の多層システムです。InfoPath Forms Services アーキテクチャには、Microsoft InfoPath 2010 およびデスクトップの XmlFormView ブラウザー コントロールが含まれます。これらは、直接的に、または InfoPath Forms Services Web サービスを通じて中間層と通信し、中間層は基になっている InfoPath Forms Services および SharePoint Server 2010 のコンポーネントと通信します。

Office SharePoint Server との統合

InfoPath Forms Services は SharePoint Server 2010 のコア プラットフォームおよび高度なコンポーネントと統合し、これには Microsoft SharePoint Foundation 2010 プラットフォーム上に構築されている複数のサーバー製品およびコンポーネントが含まれます。InfoPath Forms Services、SharePoint Server 2010、および関連する製品は、共通の SharePoint 製品およびテクノロジ プラットフォーム上に構築されているので、開発者は共通の開発ツールと技法のセットを使用して、すべての製品を統合および拡張できます。

一般的なアーキテクチャ

InfoPath Forms Services の 4 つの主要なコンポーネントにより、フォーム テンプレート (.xsn) ファイルは、ブラウザーでも InfoPath クライアントと同じように、変換、レンダリング、および機能することができます。

  • IIS とサポート ASP.NET モジュール: HTML をブラウザーに戻し、ページ ジェネレーターおよびコンバーターに対するファイル要求を行い、ページ ジェネレーターによって処理されるポストバック情報を転送します。

  • InfoPath Forms Services HTTP ハンドラー: IIS とサポート ASP.NET モジュールおよびページ ジェネレーターからの要求を転送します。

  • コンバーター: フォーム テンプレート (.xsn) ファイルをソリューション モジュールと .aspx ページに変換し、ソリューション データをキャッシュして、変換されたファイルを InfoPath Forms Services HTTP ハンドラーに転送します。

  • ページ ジェネレーター: 外部データ ソースと通信し、セッション状態を格納および取得し、初期データとソリューション モジュールを取得し、ポストバック イベント ログ データを処理し、InfoPath Forms Services HTTP ハンドラーからの要求に基づいて IIS とサポート ASP.NET モジュールにデータを返します。

実行時のアーキテクチャ

既定では、フォームを要求するコンピューターに InfoPath がインストールされている場合、フォームは InfoPath で開きます。ブラウザー対応のフォームが要求されて、InfoPath がコンピューターにインストールされていないと、InfoPath Forms Services は、FormServer.aspx ページにリダイレクトし、生成前の JScript コードとソリューション固有の JScript データ配列をブラウザーに送信します。フォーム テンプレートが変換される時点と、フォームが要求される時点の 2 つの部分で、変更できないクライアント側スクリプト配列が生成されます。これは、HTML 生成の処理における Asynchronous JavaScript and XML (AJAX) とクライアントでのサーバー通信に対して同じように機能します。スクリプト配列は以下のタスクを処理します。

  • サーバーからの JScript 配列に基づく HTML の生成とレンダリング。

  • サーバーにポストバックするための、クライアントで発生したことについてのイベント ログの生成。

  • データ確認

  • 計算

  • ルール

  • フォームの部分の挿入や削除などの編集アクション

  • 条件付き書式設定

ユーザーがフォームにデータを入力したり、それ以外のフォーム更新を行うと、イベント ログがすべてのユーザー アクションを記録します。JScript データ配列の形式で作成されるこのイベント ログは、次のポストバックでサーバーに返送されます。サーバーは、初期 XML データに対してこのイベント ログのアクションを繰り返し、必要に応じてルールとビジネス ロジックを実行します。その後、サーバーは更新された JScript データ配列をブラウザーに送信します。このようなクライアント側とサーバー側のアーキテクチャの組み合わせにより、フォームは、ユーザー アクションごとにサーバーと通信することなく、ブラウザーで機能できます。ただし、サーバーとの通信が必要な場合は、クライアントとサーバーは応答時間が最善になるようにイベント ログ JScript データ配列を使用して通信し、要求ごとにフォーム全体と生成前の JScript コードを送受信するのではなく、差分の変更でフォームを更新します。

フォームを送信する

フォームが送信されるとき、サーバーはブラウザーに対する送信を処理します。単一の XML 送信プロセスである InfoPath クライアントから送信されるフォームとは異なり、ブラウザーから送信されるフォームは、最初に XMLHTTP を介してサーバーにイベント ログが送信され、その後でサーバーがイベント ログを応答した後、最終的な送信先に XML を送信します。このような 2 段階の送信プロセスでは、一般にダブルホップ問題と呼ばれる認証の問題が発生する可能性があり、InfoPath Forms Services プロキシの使用がこの問題の解決に役立ちます。プロキシの使用の詳細については、「データ接続、認証、および代替アクセス マッピングについて」を参照してください。

レンダリングとクエリ パラメーター

InfoPath Forms Services のレンダリング コンポーネントは FormServer.aspx ページおよび MobileFormServer.aspx ページであり、これらはサーバーの _layouts フォルダーおよび _layouts/Mobile フォルダーに存在します。ファームを構成する複数の Web フロントエンド (WFE) サーバーとデータベース サーバーがある場合は、これらのコンポーネントは WFE に存在します。

ブラウザー ベースのフォーム テンプレートが FormServer.aspx ページによってレンダリングされるときは、初期 XML データと、フォームを表す HTML が、サポートする変更不能の JScript ソリューション モジュールと共にブラウザーに送信されます。これらのモジュールは、簡単な計算、条件付き書式設定、データ確認など、クライアント側操作を行います。また、XML データでの差分変更に関するサーバーとの通信も処理します。これらの変更の結果は、フォームを表す HTML ページを更新するために、JScript ソリューション モジュールで使用されます。これにより、サーバーに対するページ全体のポストバックが最小限になるため、パフォーマンスが向上します。

MobileFormServer.aspx ページでレンダリングされるブラウザー ベースのフォーム テンプレートも同じように処理されますが、JScript ソリューション モジュールによるクライアント側処理はありません。モバイル フォームでの追加操作には、サーバーとの通信が必要であり、通信ごとにページ全体のポストバックが発生します。差分変更をサーバーと通信するのではなく、ビュー内の各コントロールについて、名前/値のペアがサーバーに送信されます。

InfoPath Forms Services は、フォームのレンダリング方法、フォームの保存場所、フォームが閉じられたときにユーザーがリダイレクトされる先のページを制御するためのクエリ パラメーターをサポートします。クエリ パラメーターを使用する方法の詳細については、「[方法] クエリ パラメーターを使用してブラウザー対応 InfoPath フォームを呼び出す」を参照してください。

フォーム テンプレートのライフサイクル

図 1 は、InfoPath Forms Services におけるフォーム テンプレートのさまざまな状態を示しています。

570919ac-de82-4f9d-954e-a07c80a8222e

図 1. フォーム テンプレートのライフサイクル

フォーム テンプレートのライフサイクルの詳細については、「フォームの開発と展開のライフサイクル」を参照してください。

フォーム テンプレートの変換

フォーム変換の間に、フォーム テンプレート (.xsn) ファイルは、manifest.xsf ファイル、スキーマ (.xsd) ファイル、ビュー (.xsl) ファイルなど、コンポーネント ファイルに展開されます。これらのファイルは、サーバーに格納され、XmlFormView コントロールでフォームをレンダリングするために InfoPath Forms Services が必要とするスクリプトと他のコンポーネントを生成するために使用されます。