The Web server: A
Web server handles the HTTP protocol. When the Web server receives an
HTTP request, it responds with an HTTP response, such as sending back
an HTML page. To process a request, a Web server may respond with a
static HTML page or image, send a redirect, or delegate the dynamic
response generation to some other program such as CGI scripts, JSPs
(JavaServer Pages), servlets, ASPs (Active Server Pages), server-side
JavaScripts, or some other server-side technology. Whatever their
purpose, such server-side programs generate a response, most often in
HTML, for viewing in a Web browser.
Understand that a Web
server's delegation model is fairly simple. When a request comes into
the Web server, the Web server simply passes the request to the program
best able to handle it. The Web server doesn't provide any
functionality beyond simply providing an environment in which the
server-side program can execute and pass back the generated responses.
The server-side program usually provides for itself such functions as
transaction processing, database connectivity, and messaging.
While
a Web server may not itself support transactions or database connection
pooling, it may employ various strategies for fault tolerance and
scalability such as load balancing, caching, and clustering—features
oftentimes erroneously assigned as features reserved only for
application servers.
The application server: As for the
application server, according to our definition, an application server
exposes business logic to client applications through various
protocols, possibly including HTTP. While a Web server mainly deals
with sending HTML for display in a Web browser, an application server
provides access to business logic for use by client application
programs. The application program can use this logic just as it would
call a method on an object (or a function in the procedural world).
Such
application server clients can include GUIs (graphical user interface)
running on a PC, a Web server, or even other application servers. The
information traveling back and forth between an application server and
its client is not restricted to simple display markup. Instead, the
information is program logic. Since the logic takes the form of data
and method calls and not static HTML, the client can employ the exposed
business logic however it wants.
In most cases, the server
exposes this business logic through a component API, such as the EJB
(Enterprise JavaBean) component model found on J2EE (Java 2 Platform,
Enterprise Edition) application servers. Moreover, the application
server manages its own resources. Such gate-keeping duties include
security, transaction processing, resource pooling, and messaging. Like
a Web server, an application server may also employ various scalability
and fault-tolerance techniques.
|