ColdFusion アプリケーションを設計するときは、ディレクトリとファイルから構成される構造としてそのコンテンツを作成します。この作業はディレクトリ構造のマッピングと呼ばれ、ColdFusion アプリケーションの設計における重要な手順の 1 つです。アプリケーションの構築を始める前に、アプリケーションのルートディレクトリを設定します。アプリケーションページは、ルートディレクトリのサブディレクトリに保存します。
ColdFusion によるアプリケーション定義ページの検索および処理方法
ColdFusion では、アプリケーション固有の要素が定義されている "Application.cfc"、"Application.cfm"、および "OnRequestEnd.cfm" ページが、次の規則に従って検索され処理されます。ColdFusion のファイル検索方法を理解しておくと、アプリケーション構造を作成するときに役立ちます。
ColdFusion で個々のページリクエストが処理されるたびに、次の処理が行われます。
- ColdFusion でリクエストの処理が開始されると、次の処理が行われます。
- ページのディレクトリで Application.cfc ファイルが検索されます。このファイルがある場合は、CFC の新しいインスタンスが作成され、初期イベントが処理されて、ファイルの検索が停止します。ColdFusion では、リクエストごとに新しい CFC インスタンスが作成され、その初期化コードが実行されます。
- リクエストされたページのディレクトリに Application.cfc ファイルがない場合は、Application.cfm ファイルが検索されます。このファイルがある場合は、リクエストされたページの先頭に "Application.cfm" ページが論理的にインクルードされて、ファイルの検索が停止します。
- リクエストされたページのディレクトリに Application.cfc ファイルも Application.cfm ファイルもない場合は、ディレクトリツリーの階層が上方向にたどられていき、各ディレクトリでまず Application.cfc ファイルが検索され、見つからなければ Application.cfm ページが検索されます。この検索はルートディレクトリ ("C:¥" など) に到達するまで続けられます。Application.cfc ファイルまたは Application.cfm ファイルが見つかった場合は、そのページが処理され、ファイルの検索が停止します。
- リクエストされたページのコンテンツが処理されます。
- ColdFusion でリクエストの処理が終了するときには、次の処理が行われます。
- Application.cfc がある場合は、その CFC の onRequestEnd メソッドが処理され、CFC インスタンスが解放されます。
- "Application.cfc" がなく、"Application.cfm" がある場合は、現在のページで使用された "Application.cfm" ページと同じディレクトリで "OnRequestEnd.cfm" が検索されます。検索はそのディレクトリでのみ行われるので、他のディレクトリに存在する "OnRequestEnd.cfm" ページは実行されません。また、アプリケーションページでエラーまたは例外が発生した場合や、アプリケーションページで cfabort タグまたは cfexit タグが実行された場合も、"OnRequestEnd.cfm" ページは実行されません。
アプリケーションページおよび設定は、次の規則に従って処理されます。
- 1 つのリクエストに対して処理される "Application.cfc" または "Application.cfm" ページは、1 つのみです。ColdFusion ページ内に追加の ColdFusion ページを指す cfinclude タグがあっても、その追加ページをインクルードするときに "Application.cfc" および "Application.cfm" ページの検索は行われません。
- cfapplication タグがページに含まれている場合は、まず "Application.cfc" または "Application.cfm" が処理されてから cfapplication タグが処理されます。このタグによって、アプリケーションファイルで指定した設定が、cfapplication タグ属性で設定したアプリケーション名や動作などによって上書きされます。
- 複数の Application.cfc ファイル、Application.cfm ファイル、および cfapplication タグで、同じアプリケーション名を使用することもできます。その場合は、同じ名前を持つすべてのページで、同じアプリケーション設定や Application スコープが共有され、このスコープ内のすべての変数が設定および取得されます。セッションタイムアウトなどの設定がファイルによって異なる場合は、cfapplication タグまたは最後に処理されたファイルのパラメーター設定が使用されます。
注意:UNIX プラットフォームでアプリケーションを実行する場合は、大文字と小文字が区別されるので、"Application.cfc"、"Application.cfm"、および "OnRequestEnd.cfm" の大文字と小文字を正確に使い分ける必要があります。 |
ディレクトリ構造の定義
アプリケーション固有のルートディレクトリを使用してアプリケーションのディレクトリ構造を定義すると、次の利点が得られます。
- 開発:アプリケーションページファイルが系統立てて整理されるので、アプリケーションの開発と保守が簡単になります。
- 移植性:アプリケーションページファイル内のコードを変更することなく、サーバー間またはサーバー内で、アプリケーションを簡単に移動できます。
- アプリケーションレベルの設定:同じディレクトリの下にあるアプリケーションページでは、アプリケーションレベルの設定と機能を共有できます。
- セキュリティ:同じディレクトリの下にあるアプリケーションページでは、Web サーバーのセキュリティ設定を共有できます。アプリケーション固有のディレクトリ階層にアプリケーションを配置する場合、アプリケーションのルートディレクトリにある単一のアプリケーション定義(Application.cfc または Application.cfm)ページを使用することも、アプリケーションの個々のセクションを管理するアプリケーション定義ページをそれぞれ異なるディレクトリに配置することもできます。複数のアプリケーション定義ページを使用して異なるアプリケーション名を付ければ、論理的な Web アプリケーションが複数の ColdFusion アプリケーションに分割されます。また、同じアプリケーション名を指定し、アプリケーションの各サブセクションのコードがそれぞれ含まれた複数のアプリケーション定義ページを使用することもできます。次の図のディレクトリツリーは、アプリケーションフレームワークの 2 つの実装方法を示しています。
- 左側の例の Web Wonders, Inc. という会社では、アプリケーションのルートディレクトリに 1 つの "Application.cfc" ファイルをインストールして、すべてのアプリケーションページリクエストを処理しています。
- 右側の例の Bandwidth Associates では、個々の "Application.cfc" ファイルの設定を使用して、ColdFusion アプリケーションを部門レベルで作成しています。ルートの "Application.cfc" ファイルの設定を使用して処理されるのは、Products アプリケーションのページのみです。Consulting、Marketing、および Sales のディレクトリには、それぞれ専用の "Application.cfc" ファイルがあります。