The URL is the most
important part of each request sent to the ALP engine. It determines
what code will be executed in order to process the requests and may
contain also some inline parameters that give the processing code
additional information about the request.
General syntax of the ALP URL-s is:
alp://drive:/path1/../pathN/file.ext?parameter1=value1&....¶meterN=valueN
The URL contains the following parts:
alp:// - the ALP protocol
scheme name. In other words for the ALP consumer (Internet Explorer
or ALPFrame for example) the URL looks much like an HTTP URL, but
instead of http:// it begins with alp://
drive:/path1/../pathN/ - Full
physical path of a directory. The canonical form is with
"/" slashes, but ALP will accept back slashes instead
"\" and will convert them internally to canonical form.
file.ext - File name.
This is optional and if exists it specifies a file in the directory
pointed by the previous part of the URL. In general ALP determines the
file name extension (the portion of the file name after the last
"." in it) and lookups the configuration to determine which
internal ALP module should process the request.
parameter ... - The parameters
part is also optional and consists of name=value pairs separated with
"&" character. If the parameter name or value contains
control or non-ASCII characters they must be URL encoded.
ALP treats the physical path portion of the URL as 3 logical
parts which depend on the configuration settings found (if any) in the
directories in the path. The logical parts are: Virtual ALP site,
ALP Application
and Directory.
- Site - is a root point of directory tree that is treated as
virtual ALP site. All content of the site is isolated from other
virtual ALP sites. ALP associates with the site some general
settings, developer licenses and administrative tasks. If no site
definition is found ALP assumes root of the drive as virtual ALP
site root.
Also note that the ALP application and the ALP Directory settings
cannot cross the site boundaries and if they are not explicitly
defined the root of the Virtual ALP site is also ALP application and
ALP directory settings root.
- ALP Application - is a root directory of a
directory tree that shares common
application/execution settings. If no application is found in a particular
virtual ALP site
Application root equals to the site root. Application holds many settings and defines how
to process the content. For example ASP Application
and Session objects are
unique for each separate application tree.
- Directory - is always the directory pointed by the URL or directory
containing the pointed resource. It holds additional settings such as execution rights and
default document settings. The ALP Directory settings also cannot
cross the virtual ALP site boundaries and if they are not explicitly
defined the virtual ALP site uses the ALP defaults.
ALP determines these points in the computer's file system by looking
for certain files in the directories that form the URL:
- alp.site file - specifies
virtual ALP site root. If not found up to the drive root - the drive
root directory is assumed to be a site root. Empty file is enough
to trigger virtual site root point at the directory containing the
file.
- alp.application - specifies the application start point. If not found
up to the site root - site root is assumed to be an application root.
Empty file is enough to define new ASP application root point at
the directory containing the file.
- alp.directory - specifies directory settings root. If not found up to
the site root - site root setting are applied (if any). Empty
file can be used to revert to default settings if another
alp.directory file exists in one of the parent directories.
Files can be empty if there is no setting to override but their existence is important
in order to set the start points for the logical parts of the URL .
Example:
Lets take the following directory:
C:\sites
There are 2 site files in two sub-directories:
C:\sites\site1\alp.site and C:\sites\site1\dir1\site2\alp.site
2 application files:
C:\sites\site1\dir1\alp.application and C:\sites\site1\alp.application
The URL: alp://c:/sites/site1/dir1/dir2/file.htm
has site root: c:\sites\site1 and application root: c:\sites\site1\dir1
The URL: alp://c:/sites/site1/dir1/site2/dir3/file.htm
has site and application root: C:\sites\site1\dir1\site2
As we have mentioned already most of the ALP programming interfaces
(and especially the primary programming interface - ASP compatible
pages) resemble existing WEB programming techniques. Therefore ALP must
split the URL in logical parts that will be exposed to these programming
interfaces in terms known from the WEB programming - such as Host/Server
name, virtual path in a WEB site and so on. By determining the starting points ALP defines
these values and it exposes the site physical path with "/" slashes as a
host/server name and the resting
part of the URL as virtual path to the programming interfaces. In previous example for the first URL host name will be c:/sites/site1/
and for the second c:/sites/site1/dir1/site1/. The
virtual path will be for
the first case /dir1/dir2/ and for the second /dir3/.
Even without WEB server compatibility in mind these values have
important meaning to the applications as they allow them work in
location independent manner. ASP compatible pages for instance offer
the Server.MapPath method returns
the full physical path corresponding to a virtual or relative path
passed to them. For instance in the above example an ASP page in c:\sites\site1\dir1\dir2\file.asp
may use Server.MapPath("/dir1/database.db") to obtain the
full physical path to a database file it needs. The Server.MapPath
will return in this case: c:\sites\site1\dir1\database.db because
the virtual ALP site root in this example is c:\sites\site1 and
the virtual path /dir1 is mapped against the virtual ALP site root
directory. The same functionality applies to the links in the
displayed HTML content when they specify relative or virtual paths to
other pages/resources in the site instead of full URL, and the same is
true for other features that concern the ALP programming (such as
include directives and so on). All they together allow the developer
code all the references to other files in virtual ALP site centered
manner and so create code that would not depend on the actual physical
location.
As you may have noticed the ALP application and ALP directory
settings have no direct impact over the physical path mapping, but they
concern each application because they define the ALP engine behavior
exposed to the application files in the scope of each of these settings.
Conclusion
The developer needs to understand the ALP URL as first step and
keep the track of the logical parts of the URL when building
applications. The logical splitting of the URL is a result of
developer's actions - e.g. the developer creates virtual ALP site, ALP
application and so it is just a matter of planning of the project's
logical structure. The developer can always check what is the logical
structure in the file system by checking which alp.site,
alp.application and alp.directory files exist and where. Also a more
convenient way to check and define logical structure is provided by
the ALP shell extensions which are
included in all the developer oriented ALP download packages. They
allow the developer right click in Windows Explorer windows (over
files, directories and even in the empty space of a folder window) and
invoke the ALP Settings user interface by selecting the "ALP
Settings" menu item. The ALP settings user interface allows the
developer create and manage all the important ALP logical structure
elements and settings. Alternatively the developer can also
edit/create the alp.site, alp.application and alp.directory files with
a text editor (notepad for example) because they are text files and
are described in details in this documentation.
|