What are some application server examples

What is the difference between application server and web server?


Reply:


In most cases, these terms web server and application server are used interchangeably.

The following are some of the key differences in web server and application server functionality:

  • The web server is used to provide HTTP content. App Server can also serve HTTP content, but it is not limited to just HTTP. Other protocol support such as RMI / RPC can be provided
  • The web server is mainly designed for the provision of static content. However, most web servers have plugins to support scripting languages ​​such as Perl, PHP, ASP, JSP, etc., through which these servers can generate dynamic HTTP content.
  • Most application servers have a web server as an integral part, meaning App Server can do whatever the web server can do. In addition, App Server has components and functions to support application-level services such as connection pooling, object pooling, transaction support, messaging services, etc.
  • Because web servers work well for static content and app servers work well for dynamic content, most production environments have web servers that act as a reverse proxy for app servers. This means that while a page request is being processed, static content (such as images / static HTML) is provided by a web server that interprets the request. With the help of a filter technique (usually an extension of the requested resource), the web server identifies the request for dynamic content and forwards it transparently to the app server

An example of such a configuration is Apache Tomcat HTTP Server and Oracle (formerly BEA) WebLogic Server. Apache Tomcat HTTP Server is the web server and Oracle WebLogic is the application server.

In some cases the servers are tightly integrated, e.g. B. IIS and .NET Runtime. IIS is a web server. In conjunction with a .NET runtime environment, IIS can provide application services.







This is a detailed answer with a few scenarios to clearly understand the difference, the similarity, and the way the two can work together

Application server is a term that is sometimes associated with a Web server is mixed. While a web server is mainly HTTP protocols processed , the application server processes several different protocols including, but not limited to HTTP .

The main task of the web server is to view the site content, and the application server is for logic responsible for the interaction between the user and the content displayed. The application server is working along with the web server on which one is displayed and the other interacts.

The information that is passed back and forth between the server and its client is not limited to simple display markup, but to the interaction between the two.

In most cases, the server creates these Interaction through a component API how J2EE (Java 2 Platform) , EJB (Enterprise JavaBean) and other various application software models.

An example:

The best way to understand the difference between the scenarios where there is an application server working with the web server and one where there is no application server is through an online store.

Scenario 1: Web server without an application server

You have an online shop with only one web server and no application server. The website has an ad from which you can choose a product. When you submit a query, the site does a search and returns an HTML result to its client. The web server sends your request directly to the database server (be patient, I'll explain this in our next nugget) and wait for a response. Upon receipt, the web server formulates the response in an HTML file and sends it to your web browser. This back and forth communication between the server and the database server occurs every time a query is run.

Scenario 2: web server with one application server

If the query you want to run has previously run and no data has changed since then, the server generates the results without sending the request to the database server. This enables a real-time query where a second client can access the same information and receive reliable real-time information without sending another duplicate query to the database server. The server basically acts as an intermediate stage between the database server and the web server. In this way, the retrieved information can be reused in the first scenario, since this information is embedded in a specific and "customized" HTML page. This is not a reusable process. A second client has to request the information again and receive another embedded HTML page with the requested information - highly inefficient.

To support such a multitude of complex tasks, this server must have built-in redundancy, high processing power, and plenty of RAM so that all the data it retrieves can be processed in real time.

Hope that helps.







Both terms are very general, one containing the other and in some cases vice versa.

  • Web server : Delivers content to the web via the http protocol.

  • Application server : Hosts and exposes business logic and processes.

I think the main point is that the web server makes everything available through the http protocol while the application server is not limited to that.

However, in many scenarios you will find that the web server is used to create the front end of the application server, that is, it provides a series of web pages for the user to interact with the business rules found in the application server.


Web server

Run and go to http: // localhost: 8080. What you see is a web server that is working. The server simply provides files over HTTP that are stored on your computer. The key point is that this is all in addition to the HTTP protocol. For example, there are FTP servers that do exactly the same thing (host stored files), but using a different protocol.

Application server

Suppose we have a tiny application like the one below (excerpt from Flask).

The small sample program assigns the URL to the function and that of the function.

To run this code we need an application server (e.g. Gunicorn) - a program or module that can listen for requests from a client and return something dynamically using our code. In the example we are simply returning very bad HTML.

What business logic are everyone else talking about? Now that a URL is specifically mapped somewhere in our code base, we hypothetically show some logic about how our program works.


Recapping

Web server - delivers files that are stored somewhere (most often .css, .html, .js). Common web servers are Apache, Nginx or even Python's SimpleHTTPServer.

Application server - Serves files that are generated during operation. Essentially, most web servers have plugins or even built-in features. There are also strict application servers like Gunicorn (Python), Unicorn (Ruby), uWSGI (Python) etc.

Note that you can actually create a web server using the application server's code. This happens in some cases during development when you don't want a ton of different servers running on your computer.






As Rutesh and jmservera pointed out, the distinction is fuzzy. Historically, they were different, but by the 1990s these two previously different categories mixed traits and effectively fused them together. At this point, it's probably best to imagine that the App Server product category is a strict superset of the Web Server category.

Some stories. In the early days of the Mosaic browser and hyperlinked content, this so-called "web server" was developed to provide website content and images via HTTP. Most of the content was static and the HTTP 1.0 protocol was just one way of sending files. The "web server" category quickly evolved around CGI functions - effectively launching a process for every web request to generate dynamic content. HTTP also matured and the products became more complex with caching, security, and management functions. When the technology matured, we received company-specific Java-based server-side technology from Kiva and NetDynamics, which eventually all merged into JSP. Microsoft added ASP to Windows NT 4.0 in 1996, I believe. The static web server had learned some new tricks, making it a more effective "

The app server had evolved in a parallel category and existed for a long time. Companies supplied products for Unix such as Tuxedo, TopEnd, Encina, which were philosophically derived from mainframe application management and monitoring environments such as IMS and CICS. Microsoft's offering was Microsoft Transaction Server (MTS), which later evolved into COM +. Most of these products specified "closed" product-specific communication protocols to connect "fat" clients to servers. (For Encina, the communication protocol was DCE RPC; for MTS, it was DCOM; etc.) In 1995/96, these traditional app server products began to embed basic HTTP communication capabilities first via gateways. And the lines began to blur.

Web servers became more and more sophisticated in terms of higher loads, more parallelism and better functions. App servers offer more and more HTTP-based communication functions.

At this point the line between "app server" and "web server" is blurred. But people keep using the terms differently to emphasize them. When someone says "web server" they often think of HTTP-centric, web-UI-oriented apps. When someone says "app server" they might think "higher loads, enterprise functions, transactions and queues, multi-channel communication (HTTP + more). However, often it is the same product that fulfills both workload needs.

  • WebSphere, the "app server" from IBM, has its own bundled web server.
  • WebLogic, also a traditional app server.
  • Windows, Microsoft's App Server (in addition to the file and print server, media server, etc.) bundles IIS.



As mentioned earlier, web servers process HTTP petitions, while application servers process petitions for distributed components. The easiest way to understand the difference is to compare the two products in terms of the programming environment they offer.

Web server -> programming environment

IIS: ASP (.NET)

Tomcat: Servlet

Pier: Servlet

Apache: Php, CGI

Application server -> programming environment

MTS: COM +

WHAT: EJB

JBoss: EJB

WebLogic Application Server: EJB

The key difference is that application servers support some technologies for distributed components support and functions such as remote calling and distributed transactions such as EJB in the Java world or COM + deploy on the Microsoft platform. HTTP servers often support some simpler programming environments, often scripts such as ASP (.NET) for Microsoft or Servlet, including JSP and many others for Java or PHP and CGI for Apache.

Other features such as load balancing, clustering, session failover, connection pooling, and so on, which were previously in the field of application servers, are also becoming available directly on web servers or through some third-party products.

Finally, it should be noted that the picture is further distorted by "lightweight containers" like Spring Framework, which often complement the purpose of application servers in a simpler way and without the application server infrastructure. And as the distribution aspect in applications moves from a distributed component to a service paradigm and SOA architecture, there is less and less space left for traditional application servers.



The main difference between web server and application server is that the web server has static pages, e.g. HTML and CSS, while the application server is responsible for generating dynamic content by executing server-side code, e.g. B. JSP, Servlet or EJB.

Which one should I use?
Once you know the difference between web and application server and web containers, you can easily figure out when to use them. You need a similar Apache HTTPD when serving static web pages. If you have a Java application with only JSP and servlet to generate dynamic content, you need Tomcat or Jetty. While , if you have Java EE application using EJB, distributed transactions, messaging and other fancy functions than you need a full one like JBoss, WebSphere or Oracle WebLogic.

The web container is part of the web server and the web server is part of the application server.

The web server consists of a web container, while the application server consists of a web container and an EJB container.



In short, a web server is a server that serves web pages to users over http. An application server is a server that hosts the business logic for a system. It often hosts both long running / batch processes and / or interop services that are not intended for human use (REST / JSON services, SOAP, RPC, etc.).






A web server only processes HTTP / HTTPS requests. It makes content available to the web using the HTTP / HTTPS protocol.

An application server provides business logic to application programs over any number of protocols, possibly including HTTP. The application program can use this logic just as it would call a method on an object. In most cases, the server exposes this business logic through a component API, e.g. For example, the EJB (Enterprise JavaBean) component model found on Java EE (Java Platform, Enterprise Edition) application servers. The main point is that the web server makes everything available through the http protocol, while the application server is not limited to it. An application server therefore offers many more services than a web server, which typically include:

  • An API (proprietary or non-proprietary)
  • Load balancing, failover ...
  • Object lifecycle management
  • State administration (session)
  • Resource management (e.g. connection pools to the database)

Most application servers have a web server as an integral part, meaning App Server can do whatever the web server can do. In addition, App Server has components and functions to support application-level services such as connection pooling, object pooling, transaction support, messaging services, etc.

An application server can (but not always) run on a web server to execute program logic, the results of which can then be provided by the web server. This is an example of a web server / application server scenario. A good example in the Microsoft world is the relationship between Internet Information Server and SharePoint Server. IIS is a web server. SharePoint is an application server. SharePoint resides "above" IIS, executes certain logic and delivers the results via IIS. In the Java world, for example, there is a similar scenario with Apache and Tomcat.

Because web servers work well for static content and app servers work well for dynamic content, most production environments have web servers that act as a reverse proxy for app servers. That is, while a page request is being processed, static content such as images / static HTML is provided by a web server that interprets the request. With the help of a filter technique (usually expansion of the requested resource), the web server identifies the request for dynamic content and forwards it transparently to the app server.

An example of such a configuration is Apache HTTP Server and BEA WebLogic Server. Apache HTTP Server is the web server and BEA WebLogic is the application server. In some cases the servers are tightly integrated, e.g. B. IIS and .NET Runtime. IIS is a web server. If IIS is equipped with a .NET runtime environment, it can provide application services




The line between these two is getting thinner and thinner.

Application servers provide business logic to clients. This means that application servers consist of a number of methods (not exclusive, but can also be a network computer that can run a lot of software) to execute business logic. So it simply outputs the desired results, not HTML content. (similar to a method call). So it's not entirely HTTP-based.

However, web servers forward HTML content to web browsers (exclusively HTTP-based).Web servers were only able to handle only the static web resources, but the advent of server-side scripting made it possible for web servers to handle dynamic content as well. When a web server picks up the request and routes it to relevant scripts (PHP, JSP, CGI scripts, etc.) to create HTML content to be sent to the client. Once the content has been received, the web server sends the HTML page to the client.

Today, however, these two servers are used together. Where the web server accepts the request and then calls a script to create the HTML content. The script then calls an application server LOGIC again (e.g. fetching transaction details) to fill the HTML content.

Thus, both servers are used effectively.

Hence ... We can safely say that for the most part nowadays, web servers are used as a subset of application servers. BUT this is NOT the case in the theater.

I have read many articles on the subject and found this article very useful.


An application server is typically designed and deployed to accommodate longer running processes that are also more resource intensive.

A web server is used for short bursts that are generally not resource intensive. The main purpose of this is to facilitate the delivery of web-based traffic.


There is another one in Java: Web container (or more precisely servlet container). For example, it lies between the web server and the application server.

A web container in Java terms is an application server that is basically just implemented the JSP / Servlet part of Java EE and which lacks several core parts of Java EE, e.g. B. EJB support. One example is Apache Tomcat.


An application server is a computer (an executable process actually running on a computer) that "listens" (on any channel, using any protocol) to requests from clients for the service it is providing, and then based on those requests do something. (may or may not include a response to the customer)

A web server is a process running on a computer that "listens" specifically to the TCP / IP channel using one of the "internet" protocols (http, https, ftp, etc.) and does anything based on those incoming requests , what he does. Generally (as originally defined) an HTML web page was retrieved / generated and returned to the client, either retrieved from a static HTML file on the server or dynamically created based on parameters in the incoming client request.




A web server runs the HTTP protocol to serve web pages. An application server can (but not always) run on a web server to execute program logic, the results of which can then be provided by the web server. This is an example of a web server / application server scenario.

A good example in the Microsoft world is the relationship between Internet Information Server and SharePoint Server. IIS is a web server. SharePoint is an application server. SharePoint resides "above" IIS, executes certain logic and delivers the results via IIS.

In the Java world, for example, there is a similar scenario with Apache and Tomcat.


On the one hand, a web server provides web content (HTML and static content) via the HTTP protocol. On the other hand, an application server is a container on which you can build business logic and processes through various protocols, including HTTP in an n-tier architecture, and make them available to client applications.

An application server therefore offers many more services than a web server, which typically include:

  • An API (proprietary or non-proprietary)
  • Object lifecycle management,
  • State administration (meeting),
  • Resource management (e.g. connection pools to the database),
  • Load balancing, failover ...

AFAIK, ATG Dynamo was one of the first application servers (as defined above) in the late 1990s. In early 2000, some proprietary application servers ruled like ColdFusion (CFML AS), BroadVision (server-side JavaScript AS), etc. But none really survived the era of Java application servers.


Basic understanding:

In the client-server architecture

Server:> Which one serves the requests.

Client:> Which service is consuming.

Web servers and application servers are both software applications that serve as servers for their clients.

They were given their names based on where they were used.

Usage --

Example: All flat servers are generally available ready-made and only serve web-based content.

Usage --

Example: Google Maps Server, Google Search Server, Google Docs Server, Microsoft 365 Server, Microsoft Computer Vision Server for AI.

We can adopt them as levels / hierarchies in a 4-tier / N-tier architecture.

Please follow this link for standard architecture analogies:

https://docs.microsoft.com/en-us/previous-versions/msp-np/ee658120(v%3dpandp.10)


The main difference is that a web server processes HTTP requests, while an application server executes business logic on any number of protocols.


Actually, Apache is a web server and Tomcat is an application server. If comes as an HTTP request to the web server. Then static content is sent back from the web server to the browser. If there is some logic to do, then send this request to the application server. After processing the logic, the response is sent to the web server and sent to the client.


All of this complicates something very simple. An application server contains a web server, an application server only contains a few more additions / extensions than standard web servers. If you look at TomEE as an example:

You will see that Tomcat (web container / server) is just another tool in the app server arsenal. You can also download JPA and the other technology on the web server if you want, but the application servers package all of these things just for your convenience. Essentially, to be fully classified as an app server, you need to adhere to a list of tools set out in a standard.


There is not necessarily a clear dividing line. Nowadays, many programs combine elements of both the provision of http requests (web server) and the processing of the business logic (app server).


From https://en.wikipedia.org/wiki/Web_server

A Web server is a computer system that processes requests over HTTP, the basic network protocol used to distribute information on the World Wide Web. The term can refer to the entire system or specifically to the software that is accepts and monitors the HTTP requests .

From https://en.wikipedia.org/wiki/Application_server#Application_Server_definition

An application server is behind a web server (e.g. Apache or Microsoft Internet Information Services (IIS)) and (almost always) executed in front of an SQL database (e.g. PostgreSQL, MySQL or Oracle).

Web applications are computer code that runs on application servers and is written in the languages ​​supported by the application server and the run-time libraries and components offered by the application server calls .


The application server and the web server are both used to host web applications. The web server deals with the web container. The application server deals with the web container as well as the EJB container (Enterprise JavaBean) or the COM + container for Microsoft dot Net.

The web server is designed to serve static HTTP content such as HTML, images, etc. For the dynamic content, plugins are available to support scripting languages ​​such as Perl, PHP, ASP, JSP, etc. It is limited to the HTTP protocol. The following servers can generate dynamic HTTP content.

Programming environment of the web server:

IIS: ASP (.NET)

Apache Tomcat: Servlet

Pier: Servlet

Apache: Php, CGI

Application Server can do anything that web server can, and listens to any protocol. App Server has components and functions to support application-level services such as connection pooling, object pooling, transaction support, messaging services, etc.

Application server programming environment:

MTS: COM +

WHAT: EJB

JBoss: EJB

WebLogic Application Server: EJB