[INFO] Office 2000 Web コンポーネントをサーバー側で使用する場合の制約事項

サポートが終了した KB の内容についての免責事項

この記事は、マイクロソフトがサポートを提供しなくなった製品について記述しています。 したがって、この記事は「現状のまま」で提供され、更新されることはありません。

概要

Web サイトを開発する際に Microsoft Office 2000 Web コンポーネントを使用すると、スプレッドシート、グラフ、ピボットテーブルの機能を組み込むことによって動的な Web ページを作成することができます。Office 2000 Web コンポーネントは、クライアント側の ActiveX コントロールとして Microsoft Internet Explorer の中に埋め込んで使用することを前提に開発されたものです。


ただし、多くの開発者は Web コンポーネントの利便性に着目し、ASP (Active Server Pages) や COM+ でグラフを生成してエクスポートするなど、サーバー側のソリューションで Web コンポーネントを使用しています。Web コンポーネントはサーバー側で使用することもできますが、制約事項があるため、サーバー プログラムの安定性とパフォーマンスに悪影響を与える可能性があり、大規模なサーバー側のソリューションでは Web コンポーネントの使用によって問題が引き起こされることがあります。

詳細

マイクロソフトでは Office 2000 Web コンポーネントをサーバー側のソリューションに使用することを推奨していません。既知の制約事項がいくつかあるため、関数への再入が多発するマルチスレッドの非対話型環境の場合、Web コンポーネントは正常に機能できないことがあります。特に、以下のような問題が起こることがあります。
  • 実行速度が遅い、パフォーマンスが低い : Office 2000 Web コンポーネントは、Internet Explorer の複数のシングル スレッド アパートメント (STA) 環境を想定して設計されています。ほとんどのサーバー側アプリケーションが採用するマルチ スレッド アパートメント (MTA) 環境とは異なります。Office 2000 Web コンポーネントのスレッド同時処理に対する保護機構は、Web サービスで一般的に発生する大量のマルチ スレッド呼び出しに対応できるよう設計されておらず、パフォーマンスの低下につながることがあります。たとえば、Office 2000 Web コンポーネントでは多くの共有メモリ ブロックが同じクリティカル セクションを使用して保護されており、メモリ セクションを書き換えているスレッドがあると、そのメモリ セクションを書き換えない場合でも他のスレッドはブロックされる可能性があります。さらに、処理用の関数の多くは、シングル スレッド モデルで設計された Office の他のソースからインポートされており、このようなセクションのコードは同時実行できません。
  • メモリ不足エラー : Office 2000 Web コンポーネントは、Microsoft Office 9.0 オフィス ライブラリのスタティック ビルドを使用してメモリ管理を処理しています。Microsoft Office 9.0 オフィス ライブラリのメモリ割り当て機能は、クライアント側での使用を想定して設計されており、サーバー側のソリューションで起こりうる大量の負荷や同時要求を想定していません。このため、コンピュータ自体で利用可能な状態にあるメモリの量にかかわらず、Web コンポーネントがサーバー側で発生する処理に利用できるメモリの量が制限される場合があります。
  • 不規則に発生するオートメーション エラー : Office 2000 Web コンポーネントが使用する状態変数の一部は完全に保護されておらず、関数の実行中にこのような状態変数が変更されると、その関数は予期せず異常終了することがあります。非同期処理が必要な関数 (データ ソースからのデータを要求する、スプレッドシートのセルの値を計算するなど) では、複数のスレッドが同時にオートメーションを実行していると、このようなエラーが発生する可能性が高まります。
  • スレッドのデッドロック : 特定の状況下では、Office 2000 Web コンポーネントで無期限の待機状態やグローバル例外の発生につながる競合状態が起こることがあります。この結果、スレッドが孤立してリソースが失われることがあります。このような状況は基本的にコンポーネントに多大な負荷がかかると起こります。たとえば、コンポーネントのインスタンスを生成し、自動化し、破棄するようなコードの実行要求が大量の数のクライアントから同時にサーバーに対して送信されると、このような状況が起こりがちです。インスタンスをプーリングしておくことによって、デッドロックの可能性を最小限に抑えることができます。
この資料で説明した Office 2000 Web コンポーネントの問題は、クライアント側の ActiveX コントロールとして使用されることを本来想定している設計上の制約事項に基づくものです。したがって、Office 2000 Web コンポーネントのこのような制約事項を回避するための方法はありません。


これらの問題の多くは、Microsoft Office XP Web コンポーネントで解決されています。Web ソリューションで Office 2000 Web コンポーネントをサーバー側のコンポーネントとして使用している場合、または使用する予定がある場合は、Office XP Web コンポーネントにアップグレードして使用することを検討してください。

関連情報

Office XP Web コンポーネントをダウンロードするには、以下の Office Web サイトを参照してください。
Office XP Web コンポーネント サーバー サイドの使用の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
286278 HOWTO: Create an Interactive Office XP Chart Server-Side Using ASP
294798 HOWTO: Use ASP to Create an Office XP PivotTable and Display the Results as HTML

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 317316 (最終更新日 2002-02-04) をもとに作成したものです。


プロパティ

文書番号:317316 - 最終更新日: 2004/08/13 - リビジョン: 1

フィードバック