The WEB servers such as IIS
usually keep most of their configuration in a central storage -
metabase, configuration files set, system's registry etc. ALP on the
other hand keeps only a few general settings in a global storage
(global means machine-wide configuration) and a default configuration.
The default configuration is used only to supply settings for the
options not specified by the particular applications explicitly. So,
the major part of the ALP configuration is specified as part of the
applications built for ALP and not in some kind of centralized
storage. The developers should not change the ALP defaults in its
installation directory in order to preserve the factory default ALP
behavior - all the specifics an application may need can be specified
within the application itself so there is no need to deal with the
defaults.
What dictates this decision? ALP resembles a WEB server
functionality and supports virtual ALP sites which have almost the
same role as the virtual WEB servers maintained by the most WEB server
software products. The virtual ALP sites are isolated from each other
and as you have learned in ALP URL chapter
they in fact split the local machine's file system in many virtual ALP
sites. Thus for ALP the file system looks much like some kind of
intranet with many sites. The applications that run in these sites may
need quite different ALP configurations and thus each site may include
different settings ALP will obey when it runs the applications in it.
Furthermore ALP is designed with physical location independency in
mind. Therefore the applications built for ALP should be able to run
from any physical location in the computer's file system without need
of any re-configuration. Thus the ALP configuration implementation
relies on configuration files placed within the application directory
structure, so that when the user moves the application's directory
tree from one place to another the configuration is moved with it. A
centralized configuration storage like in the case of a WEB server
would not be suitable for ALP as it will would contain some full
physical paths that will need to change if certain application or part
of it moves.
This architecture is designed this way mostly to support the
applications deployment. Thus the developer does not need to be
concerned about the actual location where the application will be
installed on the users' machines which considerably simplifies the
setup/distribution process of the applications built for ALP.
The configuration files
ALP uses 3 different types of configuration files. In theory it is
possible to combine all the settings in one file, but we split them in
3 files to avoid the need to read all the settings in some of the
cases when ALP needs them. For example in ALP
URL you have learned that ALP determines the virtual ALP site
boundaries by the mere existence of an alp.site file in a
particular directory and treats this directory as a root of a virtual
ALP site even if this file is empty. This is very important to
maintain good performance because ALP needs to determine these
boundaries quite often. For example in Internet Explorer or ALPFrame
browsers you may have displayed a HTML content with hundreds of links.
Each time the user moves the mouse over a link ALP needs to supply
information about the URL so that the browser can display it in the
status bar or perform another helper action. If it was necessary to
read the entire configuration each time when the user moves the mouse
over a link it would have decreased the browser performance
drastically.
ALP uses the following configuration files:
ALP Site - alp.site.
These files define the virtual ALP sites boundaries (the file
existence is enough for that), contain a few optional virtual
site-wide settings and may contain an ALP developer
license which applies to this virtual ALP site.
ALP Application - alp.application. These
files define the boundaries of particular ALP Application. The term
ALP Application in this case is used to specify a logical part of an
virtual ALP site that uses shared Application
and Session objects and single set of
ALP application settings.
ALP Directory - alp.directory. These
files define some general processing settings for the files in the
directory and its sub-directories up to the next sub-directory which
contains its own alp.directory file (if any). The settings include
default documents (files processed by default if the URL contains no
file name), unattended execution protection and a few other settings
that the developer may want to change in particular areas of the
logical ALP application (see above).
All the files are text files that use the UDS text format which is
described in ALP oriented fashion in the ALP configuration files syntax
chapter. The developer does not need to edit these files manually -
knowing about their existence and role is enough - the rest of the
work can be done through the ALP Settings shell
extension which extends Windows Explorer with ALP configuration
editing capabilities.
The defaults (global) and the application
specific (local) settings
As we mentioned above ALP keeps default settings for all the major
options the developer may set on Virtual ALP site and ALP Application
specific scope. This allows the developer to not specify all the options
explicitly and rely on the defaults instead. However the ALP Settings
shell extension usually generates all the options explicitly when you
generates new ALP application settings or ALP directory settings which
is additional guarantee that the application will work correctly
everywhere - even if the ALP defaults are corrupted to some extent (you
can call this a paranoid feature).
The ALP defaults are called also global ALP engine configuration.
They are kept in files with the same names as the files mentioned above.
I.e. there is one alp.site, one alp.application and one alp.directory
file that contain the ALP defaults. The file names are the same as the
names of file that keep the local application specific settings
in order to make it easier to determine each file's role when needed.
The global ALP configuration files are located in the ALP
installation/distribution directory. You can identify this directory
most easily by the existence of the core ALP DLL in it - iewebsrv.dll.
In ALP autorun distributions the ALP engine is usually located in a
subdirectory of the distribution package and these files are there - in
the same directory where the iewebsrv.dll resides as in the case of ALP
installation.
The effective settings
ALP determines the effective settings for each configuration type
(virtual ALP site, ALP Application, ALP directory) by traversing the
path specified in the URL back. It looks for Virtual ALP site settings (alp.site
file) back to the drive root if no virtual ALP site definition is found
the defaults apply. For ALP application (alp.application file) and ALP
directory (alp.directory) settings the ALP engine looks back to the
virtual ALP site root but not further. for each of them the defaults
apply if no settings are found.
When ALP finds settings of one of these types it loads them and
merges them with the defaults so that the settings specified in the
local file (found in the URL path) override the defaults. Whenever an
option is missing in the local settings the default option applies. In
other words ALP implements two level inheritance: defaults->local
settings and the local settings have priority over the defaults
wherever a particular option exist in both local and default
settings.
Settings override mechanism detailed
You may need to look into the ALP
configuration files syntax for some terms. Generally only developers
who want deeper understanding of the ALP configuration who intent to
edit it manually need to read this section. The ALP Settings
shell extension provides the developer with easy to use access to the
configurations sufficient for almost all the possible scenarios except
cases in which custom scripting language is used (not VBScript or
JScript) and a few other rare scenarios.
The terms used: local configuration is one of the 3 types of
configuration (alp.site, alp.application or alp.directory) found in the
application's directory tree which applies to a given URL. The global
configuration is the ALP default settings kept in the files with the
same names in the ALP installation/distribution directory (see The
defaults above).
- If the setting - section or record exists in local
configuration, but does not exist in the global configuration it will
present in the resulting effective configuration.
- If a section exists in both local and in the global configuration it will not be entirely
replaced by the section existing in the local configuration. Instead
the section from the global configuration will appear and only
the records specified in the local configuration will replace the
original ones or will be added if they do not exist in the global configuration.
- Records - are replaced by their versions in the local
configuration if they exist in both configurations. If they exist in
only on of the configurations they appear in the effective
configuration.
A formal example:
If we have:
{ Section:
(int)rec=1
} Section;
in the global and
{ Section:
(int)rec=2
(int)rec=3
} Section;
in the local will produce effectively:
{ Section:
(int)rec=2
(int)rec=3
} Section;
In most cases values with equal names (i.e. records with many values) are used to
define lists. When configurations are mixed local list overrides the global one.
To see a dump of the effective configuration for a given URL use
alpdump://<the URL> instead of alp://<the URL>. For
example to see what configuration settings apply to alp://c:/mydir/myfile.asp
replace the URL in the address bar (in ALPFrame right click the window
caption and select "Go to URL" from the system menu) with alpdump://c:/mydir/myfile.asp. |