InfoPath Forms Services のベスト プラクティス

InfoPath Forms Services 環境を管理する場合、これらのベスト プラクティスに従うことをお勧めします。

Windows SharePoint Services ドキュメント ライブラリの 2,000 のドキュメント制限

1 つのフォーム テンプレートに入力して送信する回数が合計で 2,000 回を超える場合は、Web サービスを使用してデータベースに送信するコードをフォーム テンプレート内に記述するか、または複数のライブラリにフォームを格納するための独自の送信関数を作成する必要があります。これは、Windows SharePoint Services 3.0 ドキュメント ライブラリの容量に制限があり、ライブラリ内に 2,000 を超えるドキュメントがあるとパフォーマンスが低下する可能性があるためです。

1 つのフォーム テンプレートの送信が 2,000 回を超えると想定され、特に、パブリックにアクセス可能な Web サイトでそのフォーム テンプレートを利用できる場合は、問題が発生してからフォームを修正するのではなく、はじめから別の送信方法を使用するフォームをプログラミングする方が簡単です。

InfoPath Forms Services のセッション状態の構成時にフォーム ビューを使用する

ユーザー セッションの管理方法を制御する際に、セッション状態サービス (既定のオプション) またはフォーム ビューを使用するように InfoPath Forms Services を構成できます。セッション状態サービスを使用するように InfoPath Forms Services を構成すると、フォーム テンプレートをホストする Web アプリケーションに関連付けられた共有サービス プロバイダ (SSP) と通信する SQL Server データベースで、すべてのブラウザ セッションが維持されます。このシナリオではネットワーク帯域幅はほとんど使用されませんが、SQL Server を実行しているコンピュータのパフォーマンスに累積的な影響があります。フォーム ビューを使用すると、セッションはクライアント ブラウザで維持され、すべてのセッション データ (最大 40 キロバイトのセッション データ) がサーバーへの各ポストバックに含まれます。このとき、セッション状態を使用する場合よりも多くの帯域幅を使用しますが、SQL Server を実行しているコンピュータに影響はありません。セッション データのサイズが 40 KB に達すると、セッションは自動的にセッション状態管理に移行します。

小規模なユーザー グループがある環境では、SQL Server への影響を少なくするために、フォーム ビューを使用することをお勧めします。 InfoPath Forms Services の展開に多数のユーザーが含まれていて、特に、使用率が高い多数のフォーム テンプレートに対するセッション データが 40 KB 以下の場合は、セッション状態の方が適しています。フォーム ビューを使用すると、ネットワーク パフォーマンスに悪影響が及ぶおそれがある場合は、40 KB 以下のブラウザ セッションで使用される帯域幅を監視できます。

フロントエンド Web サーバー上での SQL Server の実行はお勧めできません

SQL Server を Office SharePoint Server フロントエンド Web サーバーで実行すると (たとえば、単一サーバーの評価の展開など)、ASP.NET キャッシュが SQL Server より低いしきい値でシステム メモリを解放するため、InfoPath Forms Services のメモリが不足する場合があります。

ASP.NET におけるインターネット インフォメーション サービス (IIS) の最大メモリ使用量は、使用可能な物理 RAM の 60% が 800 メガバイト未満の場合はその値が採用され、800 メガバイト以上の場合は 800 メガバイトに設定されます。これらの設定は IIS マネージャで構成できます。また、ASP.NET は w3wp.exe プロセスによる物理 RAM の使用率だけでなく、システム全体による使用率も監視します。サーバーの物理メモリの 80% がコミットされると、古くて優先度が低いものから順に、全体の 5% に相当するキャッシュ データが一定間隔で破棄され始めます。物理メモリの 85% がコミットされると、キャッシュの 50% が一定間隔で破棄されます。90% 以上になると、キャッシュ データが積極的に削除され、エントリの最大数に関する制限が低く設定されます。この設定は、ASP.NET がサーバーのメモリ圧迫が解消したと判断して、しきい値を上げるまで有効になります。

既定では、SQL Server のメモリ使用率のしきい値は ASP.NET キャッシュよりも高く設定されています。このシナリオでは、SQL Server のしきい値に到達する前に ASP.NET キャッシュによってメモリが解放されるため、SQL Server によってメモリが解放されることはありません。この状況では、InfoPath Forms Services のスループットが低くなり、その後の動作のパフォーマンスに影響する可能性があります。

この問題を軽減するには、Office SharePoint Server と同じコンピュータに SQL Server をインストールする場合に、SQL Server のメモリ制限を手動で構成する必要があります。SQL Server のメモリ設定の調整に関する詳細は、Microsoft Web サイトの「Server Memory Options (英語)」(https://msdn.microsoft.com/library/default.asp?url=/library/en-us/adminsql/ad\_config\_9zfy.asp) を参照してください。

匿名でアクセスできるフォームのベスト プラクティス

パブリック SharePoint ドキュメント ライブラリ、インターネット上の Web ページの埋め込みフォームなど、匿名ユーザーに公開される場所にフォームを展開する場合は、フォームの整合性を確認してください。フォームが不適切に使用されたり、サービス拒否 (DoS) 攻撃を受けたり、潜在的なパフォーマンス上の問題が発生したりするリスクを軽減するには、追加手順を実行する必要があります。

  • フォーム テンプレートには、スクリプトやその他の自動プロセスを使用してアクセスできないようにします。これを実現する方法の 1 つとして、フォーム テンプレートを送信するユーザーに、スクリプトや自動プロセスでは "読み取る" ことができないような ID コード (イメージに表示される短い英数字など) を入力させる方法があります。

  • 認証情報、サーバー名やデータベース名、固有コードなど、機密性の高い情報が含まれているフォーム テンプレートは、匿名ユーザーには絶対に公開しないようにします。

  • 電子メール送信のデータ接続が含まれているフォーム テンプレートを匿名でアクセスできるサーバーに展開しないようにします。展開すると、フォームの送信時に生成される電子メール メッセージの件名行に "sent by anonymous user" と表示されるためです。

  • サーバー上のプロセスを起動する可能性があるコードまたは機能が含まれているフォーム テンプレートは、慎重に評価およびテストして、そのフォーム テンプレートに匿名ユーザーがアクセスできるようにしても、セキュリティが侵害されないことを確認します。

  • ユーザーがフォームのコピーを複数送信しないようにするためには、フォームを送信する各ユーザーの IP アドレスを追跡して、同じ IP アドレスから重複した送信をしないようにするコードを含めることを検討してください。

  • フォーム テンプレートの変更を防ぐための保護を有効にして、フォーム テンプレートの整合性を確保します。