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.
Eg: Apache HTTP Server,
Sun ONE Web Server, iPlanet Web Server
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.