Minimal functionality for the Web server is to serve static content,
i.e., static files which are pointed to by the URI
(Uniform Resource Identifier). Note, that the output produced by the dynamic
component is only part of the goal of dynamic content. Dynamic processing
may create new files, send mail, search databases, and whatever else any
software on the planet can do. Dynamic content can be served in 3 ways:
- Standalone application which is called for each request. Web server
passes request parameters to this application, application runs, produces
some output, Web server collects the output from it and sends it back to
Web browser which originated the request. This is very taxing on the computer,
but at the same time easy to set up, and flexible.
- Integrated application -- it is essantially a subroutine within
Web server (or a shared memory object/library module) which is an integral
part of Web server. The integrated application has a small overhead,
since running it is essentially calling a routine. However, there are time
when it may not be an ideal solution. What if you have many different
dynamic applications -- your software package becomes fat. Also, if
application is computationally intensive -- maybe you want to run requests
on different computer(s) than the one which holds Web server. Finally,
what if application should be run only behind firewall (you do not want
your corporate database to run on the public Web server).
- Application server -- an application which processes specific type
of requests and runs perpetually as a daemon/service. It accepts requests
from Web server via some communication protocol, and returns results back
to the Web server. It is always up, and does not need to be started for
each request. It can run on another computer, and finally, there maybe
many application servers running in parallel, and the load can be
spread between them evenly (how do you think Search Engines run?).