障害の分離と failfast ポリシー
COM+ は、広範な内部整合性および一貫性チェックを実行します。 COM+ で予期しない内部エラー状態が発生した場合、すぐにプロセスが終了します。 このポリシーは failfast と呼ばれ、障害の封じ込めを容易にして、信頼性と堅牢性の高いシステムを実現します。
データ構造の 1 つが破損状態であることを COM+ が検出した場合を考えてみましょう。 この時点で、破損の原因と規模はどちらも不明であり、残念ながら、損害がどの程度広がっているかを COM+ が知ることはできません。 ただし、COM+ が不確定な状態であっても、単独で実行されることはありません。 他の DLL と同様、プロセス環境にホストされており、メイン プログラムの実行可能ファイルやその他の多くの DLL と 1 つのアドレス空間を共有しています。 したがって、COM+ では、プロセス全体が破損していると見なされます。破損した可能性のある情報を他のプロセスに拡散したり、さらに悪いことに、破損したデータをコミットして永続化することを防ぐため、プロセスが直ちに終了します。
COM+ では、例外をコンテキストの外部に伝達することはできません。 COM+ コンテキスト内で実行中に例外が発生し、アプリケーションがコンテキストから戻る前に例外をキャッチしない場合、COM+ は例外をキャッチして、プロセスを終了します。 この状況における failfast ポリシーの使用は、例外によってプロセスが不確定な状態になったという前提に基づいています。処理を続行するのは安全ではありません。
開発者または管理者は、イベント ビューアー アプリケーション ログで、failfast アクションまたは重大なアプリケーション エラーの詳細を調べる必要があります。
関連トピック