|
Structuring an application
When
you design a ColdFusion application, structure its contents into
directories and files, also known as mapping the directory structure.
This activity is an important step in designing a ColdFusion application.
Before you start building the application, establish a root directory
for the application. You store application pages in subdirectories
of the root directory.
How ColdFusion finds and process application definition pagesColdFusion uses the following rules to locate
and process the Application.cfc, Application.cfm, and OnRequestEnd.cfm
pages that define application-specific elements. The way ColdFusion
locates these files helps determine how you structure an application.
Each time ColdFusion processes a page request it does the following:
When ColdFusion starts processing the request, it does
the following:
It searches the page’s directory for
a file named Application.cfc. If one exists, it creates a new instance
of the CFC, processes the initial events, and stops searching. (ColdFusion
creates a new instance of the CFC and processes its initialization
code for each request.)
If the requested page’s directory does not have an Application.cfc
file, it checks the directory for an Application.cfm file. If one
exists, ColdFusion logically includes the Application.cfm page at
the beginning of the requested page and stops searching further.
If the requested page’s directory does not have an Application.cfc
or Application.cfm file, ColdFusion searches up the directory tree
and checks each directory first for an Application.cfc file and
then, if one is not found, for an Application.cfm page, until it
reaches the root directory (such as C:\). When it finds an Application.cfc
or Application.cfm file, it processes the page and stops searching.
ColdFusion processes the requested page’s contents.
When the request ends, ColdFusion does the following:
If you have an Application.cfc, ColdFusion processes the
CFC’s onRequestEnd method and releases the CFC
instance.
If you do not have an Application.cfc, but do have an Application.cfm
page, ColdFusion looks for an OnRequestEnd.cfm in the same directory
as the Application.cfm page ColdFusion uses for the current page.
ColdFusion does not search beyond that directory, so it does not
run an OnRequestEnd.cfm page that resides in another directory.
Also, the OnRequestEnd.cfm page does not run if there is an error
or an exception on the application page, or if the application page
executes the cfabort or cfexit tag.
The
following rules determine how ColdFusion processes application pages
and settings:
ColdFusion processes only one Application.cfc or Application.cfm
page for each request. If a ColdFusion page has a cfinclude tag
pointing to an additional ColdFusion page, ColdFusion does not search
for an Application.cfc or Application.cfm page when it includes
the additional page.
If a ColdFusion page has a cfapplication tag,
it first processes any Application.cfc or Application.cfm, and then
processes the cfapplication tag. The tag overrides
the settings from the application files, including the application
name and the behaviors set by the cfapplication tag
attributes.
You can have multiple Application.cfc files, Application.cfm
files, and cfapplication tags that use the same
application name. In this case, all pages that have the same name
share the same application settings and Application scope and set
and get all the variables in this scope. ColdFusion uses the parameter
settings of the cfapplication tag or the most recently processed
file, if the settings, such as the session time-out, differ among
the files.
Note: If your application runs on a UNIX platform,
which is case-sensitive, spell Application.cfc, Application.cfm,
and OnRequestEnd.cfm with capital letters.
Defining the directory structureDefining an application directory structure
with an application-specific root directory has the following advantages:
- Development
- The application is easier to develop and maintain, because
the application page files are well-organized.
- Portability
- You can easily move the application to another server or
another part of a server without changing any code in the application
page files.
- Application-level settings
- Application pages that are under the same directory can share
application-level settings and functions.
- Security
- Application pages that are under the same directory can share
web server security settings.
When you place your application
in an application-specific directory hierarchy, you can use a single
application definition (Application.cfc or Application.cfm) page
in the application root directory, or place different application
definition pages that govern individual sections of the application
in different directories.
You divide your logical web application
into multiple ColdFusion applications by using multiple application
definition pages with different application names. Alternatively,
use multiple application definition pages that specify the same application
name, but have different code, for different subsections of your
application.
The directory trees in the following image show
two approaches to implementing an application framework:
In the example on the left, a company named Web Wonders,
Inc. uses a single Application.cfc file installed in the application
root directory to process all application page requests.
In the example on the right, Bandwidth Associates uses the
settings in individual Application.cfc files to create individual
ColdFusion applications at the departmental level. Only the Products
application pages are processed using the settings in the root Application.cfc
file. The Consulting, Marketing, and Sales directories each have
their own Application.cfc file.
|