Web モジュール
WebBroker による Web サーバー アプリケーションの作成 への移動
Web モジュール(Web.HTTPApp.TWebModule)は、System.Classes.TDataModule の下位オブジェクトであり、Web アプリケーション内のビジネス ルールや非ビジュアル コンポーネントを集中管理するという同じ用途に使われます。
ここに、アプリケーションが応答メッセージを生成するときに使用するコンテンツ プロデューサを追加します。これは、多層データベース アプリケーションのクライアントとなる Web サーバーなどの、組み込みのコンテンツ プロデューサでもかまいません。
非ビジュアル コンポーネントやビジネス ルールを格納する他に、Web モジュールは Web ディスパッチャの役割も果たします。つまり、受信した HTTP 要求メッセージを、その要求に対する応答を生成するアクション項目に対応付けます。
Web アプリケーションで使用したい非ビジュアル コンポーネントやビジネス ルールが多数セットアップされたデータ モジュールが既に手元にあるかもしれません。その場合には、Web モジュールを既存のデータ モジュールに置き換えることができます。自動生成された Web モジュールを削除し、自分のデータ モジュールに置き換えます。その後、そのデータ モジュールに Web.HTTPApp.TWebDispatcher コンポーネントを追加して、Web モジュールの場合と同様に要求メッセージをアクション項目にディスパッチできるようにします。受信した HTTP 要求メッセージに応答するアクション項目の選択方法を変更したい場合は、Web.HTTPApp.TCustomWebDispatcher から新しいディスパッチャ コンポーネントを派生させて、それをデータ モジュールに追加します。
プロジェクトに含めることのできるディスパッチャは 1 つだけです。プロジェクト作成時に自動生成される Web モジュールか、Web モジュールの代わりにデータ モジュールに追加する TWebDispatcher コンポーネントのどちらかです。ディスパッチャを含むデータ モジュールをもう 1 つ実行中に作成すると、Web サーバー アプリケーションで実行時エラーが発生します。
メモ: 設計時にセットアップする Web モジュールは、実際にはテンプレートです。ISAPI アプリケーションと NSAPI アプリケーションでは、要求メッセージごとに別々のスレッドが生成され、スレッドごとに Web モジュールの別々のインスタンスとそのコンテンツが動的に作成されます。
警告: DLL ベースまたは SO ベース(Linux プラットフォーム用)の Web サーバー アプリケーション内の Web モジュールは、応答時間を向上するために、後で使用できるようキャッシュに格納されます。 ディスパッチャの状態とアクション リストは、要求ごとには再初期化されません。 実行中にアクション項目を有効にしたり無効にすると、後のクライアント要求でそのモジュールを使用したときに、予期しない結果が生じることがあります。