Actions

Difference between revisions of "Application Server"

m (The LinkTitles extension automatically added links to existing pages (https://github.com/bovender/LinkTitles).)
Line 1: Line 1:
An [[application]] [[server]] is a program that handles all application operations between users and an [[organization]]'s backend [[business]] applications or databases. It is also referred to as an appserver. An application server is typically used for complex transaction-based applications. To support high-end needs, an application server has to have built-in redundancy, monitor for high-availability, high-performance distributed application services and support for complex database access.<ref> Definition - What is an Application Server? [https://www.webopedia.com/TERM/A/application_server.html Webopedia]</ref>
+
== What is an Application Server?<ref>[https://www.webopedia.com/TERM/A/application_server.html Definition - What is an Application Server?]</ref> ==
 
+
An '''application server''' is a program that handles all application operations between users and an organization's backend business applications or databases. It is also referred to as an '''app server'''. An application server is typically used for complex transaction-based applications. To support high-end needs, an application server has to have built-in redundancy, monitor for high availability, high-performance distributed application services, and support for complex database access.
 
 
An application server consists of a server operating [[system]] (OS) and server [[hardware]] that work together to provide computing-intensive operations and services to the residing application. An application server executes and provides user and/or other app access when utilizing the installed application's business/functional logic. Key required features of an application server include [[data]] redundancy, [[high availability]], load balancing, user [[management]], data/application security and a centralized management interface. Moreover, an application server may be connected by enterprise systems, networks or [[intranet]] and remotely accessed via the [[Internet]]. Depending on the installed application, an application server may be classified in a variety of ways, including as a Web server, database application server, general purpose application server or enterprise application (EA) server.<ref>Explaining Application Server [https://www.techopedia.com/definition/432/application-server Techopedia]</ref>
 
  
 +
An application server consists of a server operating system (OS) and server hardware that work together to provide computing-intensive operations and services to the residing application. An application server executes and provides user and/or other app access when utilizing the installed application's business/functional logic. Key required features of an application server include data redundancy, high availability, load balancing, user management, data/application security, and a centralized management interface. Moreover, an application server may be connected by enterprise systems, networks, or intranet and remotely accessed via the Internet. Depending on the installed application, an application server may be classified in a variety of ways, including as a Web server, database application server, general purpose application server, or enterprise application (EA) server.<ref>[https://www.techopedia.com/definition/432/application-server Explaining Application Server]</ref>
  
 
The application server is frequently viewed as part of a three-tier application, consisting of a graphical user interface (GUI) server, an application (business logic) server, and a database and transaction server. More descriptively, it can be viewed as dividing an application into:
 
The application server is frequently viewed as part of a three-tier application, consisting of a graphical user interface (GUI) server, an application (business logic) server, and a database and transaction server. More descriptively, it can be viewed as dividing an application into:
*A first-tier, front-end, Web browser-based graphical user interface, usually at a personal [[computer]] or workstation
+
*A first-tier, front-end, Web browser-based graphical user interface, usually on a personal computer or workstation
*A middle-tier business logic application or set of applications, possibly on a local area [[network]] or intranet server
+
*A middle-tier business logic application or set of applications, possibly on a local area network or intranet server
*A third-tier, back-end, database and transaction server, sometimes on a [[mainframe]] or large server<ref>Understanding Application Server [https://searchsqlserver.techtarget.com/definition/application-server Techtarget]</ref>
+
*A third-tier, back-end, database, and transaction server, sometimes on a mainframe or large server<ref>[https://searchsqlserver.techtarget.com/definition/application-server Understanding Application Server]</ref>
  
  
 
[[File:Application_Server.jpg|300px|Application Server]]<br />
 
[[File:Application_Server.jpg|300px|Application Server]]<br />
source: [https://www.slideshare.net/Emrit_Nirala/what-is-server-web-server-vs-application-server Amit Nirala]
+
source: Amit Nirala
  
  
'''History of Application Server'''<ref>History of Application Server [http://hosteddocs.ittoolbox.com/AS030504.pdf IT Toolbox]</ref><br />
+
== History of Application Server<ref>[http://hosteddocs.ittoolbox.com/AS030504.pdf History of Application Server]</ref> ==
In the early days of application servers, it was realised that applications (the programs people were using to get work done) themselves, were becoming bigger and more complex - both to write and to maintain. At the same time, pressure was increasing for applications to share more of their data and sometimes functionality with other applications. More applications were either located on a network or used networks extensively. It seemed logical to have some kind of program residing on the network that would help share application capabilities in an organised and efficient way - making it easier to write, manage, and maintain the applications. The end result of this thinking was what is now called an application server. However, these servers first appeared in client/server computing and on LANs. At first, they were often associated with "tiered" applications, when people described the functionality of applications as two-tiered (database and client program), three-tiered (database, client program, and application server), or n-tiered (all the above plus whatever). This was (and still is) a complex [[model]] of application development, and it resisted wide-scale implementation.
+
In the early days of application servers, it was realized that applications (the programs people were using to get work done) themselves, were becoming bigger and more complex - both to write and to maintain. At the same time, the pressure was increasing for applications to share more of their data and sometimes functionality with other applications. More applications were either located on a network or used networks extensively. It seemed logical to have some kind of program residing on the network that would help share application capabilities in an organized and efficient way - making it easier to write, manage, and maintain the applications. The end result of this thinking was what is now called an application server. However, these servers first appeared in client/server computing and on LANs. At first, they were often associated with "tiered" applications, when people described the functionality of applications as two-tiered (database and client program), three-tiered (database, client program, and application server), or n-tiered (all the above plus whatever). This was (and still is) a complex model of application development, and it resisted wide-scale implementation.
 
   
 
   
  
'''When to Use an Application Server'''<ref>When should Application Server be Used? [https://www.service-architecture.com/articles/application-servers/when_to_use_an_application_server.html Service Architecture]</ref><br />
+
== When to Use an Application Server<ref>[https://www.service-architecture.com/articles/application-servers/when_to_use_an_application_server.html When should Application Server be Used?]</ref> ==
 
You should consider an application server when you have a need for:
 
You should consider an application server when you have a need for:
 
*Integration with existing systems and databases
 
*Integration with existing systems and databases
*[[Website]] support
+
*Website support
  
 
Secondary reasons to use application servers derive from the primary reasons. A few secondary reasons are:
 
Secondary reasons to use application servers derive from the primary reasons. A few secondary reasons are:
*[[E-Commerce]]
+
*E-Commerce
*Web-integrated [[collaboration]]
+
*Web-integrated collaboration
 
*Component re-use
 
*Component re-use
  
One way to look at application servers is that they are a formalization of a solution to a problem that has been around for a long time. That problem can characterized as a need to create an integrated presentation and processing environment for existing systems and databases. The presentation has pretty much been decided with browsers now being the dominant interface. This is why you usually see a Web server paired with or included in an application server. The integrated processing has been moving towards components for some time. Application servers provide containers for such components along with application program interfaces (APIs) to support the components. These APIs are to the existing systems and databases.
+
One way to look at application servers is that they are a formalization of a solution to a problem that has been around for a long time. That problem can be characterized as a need to create an integrated presentation and processing environment for existing systems and databases. The presentation has pretty much been decided with browsers now being the dominant interface. This is why you usually see a Web server paired with or included in an application server. Integrated processing has been moving towards components for some time. Application servers provide containers for such components along with application program interfaces (APIs) to support the components. These APIs are to the existing systems and databases.
  
  
'''Application Server Categories'''<ref>Application Server Categories [https://www.lifewire.com/what-is-an-application-server-818199 LiveWire]</ref>
+
== Application Server Categories<ref>[https://www.lifewire.com/what-is-an-application-server-818199 Application Server Categories]</ref> ==
 
*Java-based, including Oracle WebLogic and IBM WebSphere (supporting the database and the Web client)
 
*Java-based, including Oracle WebLogic and IBM WebSphere (supporting the database and the Web client)
 
*Microsoft Windows Server-based
 
*Microsoft Windows Server-based
*Others, often built using open source technologies
+
*Others, often built using open-source technologies
  
  
'''Features of Application Servers'''<ref>Features of Application Servers [http://hosteddocs.ittoolbox.com/AS030504.pdf|Ajay Srivastava & Anant Bhargava]</ref><br />
+
== Features of Application Servers<ref>[http://hosteddocs.ittoolbox.com/AS030504.pdf Features of Application Servers]</ref> ==
*Component Management: Provides the [[manager]] for handling all the components and run time services like session management, synchronous/asynchronous client notifications and executes server business logic.
+
*Component Management: Provides the manager for handling all the components and run time services like session management, synchronous/asynchronous client notifications, and executes server business logic.
*[[Fault Tolerance]]: Ability of the Application server with no single point of failure, defining policies for recovery and fail-over recovery in case of failure of one object or group of objects.
+
*Fault Tolerance: Ability of the Application server with no single point of failure, defining policies for recovery and fail-over recovery in case of failure of one object or group of objects.
 
*Load Balancing: Ability to send the request to the different servers depending upon the load and availability of the server.
 
*Load Balancing: Ability to send the request to the different servers depending upon the load and availability of the server.
 
*Transaction Management
 
*Transaction Management
*Management Console:Single point graphical management console for remotely monitoring clients and server [[clusters]]
+
*Management Console: Single point graphical management console for remotely monitoring clients and server clusters
*Security:Security features for applications security  
+
*Security: Security features for applications security  
  
  
'''Types of Application Servers (Models)'''<ref>Types of Application Servers (Models) [https://www.utilizewindows.com/overview-of-different-application-server-models/ Utilize Windows]</ref><br />
+
== Types of Application Servers (Models)<ref>[https://www.utilizewindows.com/overview-of-different-application-server-models/ Types of Application Servers (Models)]</ref> ==
There three different types of application servers:.
+
There are three different types of application servers:
*Dedicated application server - one physical hardware server which is runs one single network application. Some applications actually require this. The benefit of using a dedicated application server is its level of performance given that the server hardware is serving a single application. All CPU and I/O resources are dedicated to providing a single [[service]]. However, this model is more expensive because it will forces additional physical serversto be installed for other purposes as organizations typically have to use more than one network application in their environment. In addition, depending on application usage, this model may result in unused capacity if the application is not often used. This would reult in inefficient use of the application server.
+
*Dedicated application server - one physical hardware server which runs one single network application. Some applications actually require this. The benefit of using a dedicated application server is its level of performance given that the server hardware is serving a single application. All CPU and I/O resources are dedicated to providing a single service. However, this model is more expensive because it will force additional physical servers to be installed for other purposes as organizations typically have to use more than one network application in their environment. In addition, depending on application usage, this model may result in unused capacity if the application is not often used. This would result in inefficient use of the application server.
*Distributed application server - one network application which runs on many servers concurrently. Many Web-based applications use a distributed model. More servers allow configuration of fault tolerance reulting in negligible down time and uninterrupted [[workflow]] for the end-user. More servers also allow for scalability which in turn balance the load between different servers and enables a larger number of users who can use the network application.The downside of this type of model is the cost of implementation as it requires more hardware and [[software]] along with the capability of the application to run on more machines instead of one.  
+
*Distributed application server - one network application that runs on many servers concurrently. Many Web-based applications use a distributed model. More servers allow configuration of fault tolerance resulting in negligible downtime and uninterrupted workflow for the end-user. More servers also allow for scalability which in turn balances the load between different servers and enables a larger number of users who can use the network application. The downside of this type of model is the cost of implementation as it requires more hardware and software along with the capability of the application to run on more machines instead of one.  
*P2P or Peer-to-peer model. - application runs on multiple systems. The key advantage of a P2P application is that it uses server hardware very efficiently.The peer-to-peer application model can balance the load more effectively when compared to distributed application server model, and provide the best performance possible. This is accomplished by analyzing the servers and determining how to load balance. However, the peer-to-peer application model is more complex to set up.
+
*P2P or Peer-to-peer model. - the application runs on multiple systems. The key advantage of a P2P application is that it uses server hardware very efficiently. The peer-to-peer application model can balance the load more effectively when compared to distributed application server model, and provide the best performance possible. This is accomplished by analyzing the servers and determining how to load balance. However, the peer-to-peer application model is more complex to set up.
  
  
'''[[Mobile Application]] Servers'''<ref>What are Mobile Application Servers? [https://en.wikipedia.org/wiki/Application_server Wikipedia]</ref><br />
+
== Mobile Application Servers<ref>[https://en.wikipedia.org/wiki/Application_server What are Mobile Application Servers?]</ref> ==
A mobile app server is mobile [[middleware]] that makes back-end systems accessible to mobile application to support Mobile application development. Much like a web server that stores, processes and delivers web pages to clients, a mobile app server bridges the gap from existing infrastructure to mobile devices.
+
A mobile app server is mobile middleware that makes back-end systems accessible to mobile applications to support Mobile application development. Much like a web server that stores, processes and delivers web pages to clients, a mobile app server bridges the gap from existing infrastructure to mobile devices.
  
The purpose of a mobile application server is to build on existing infrastructure to accommodate mobile devices. Although most standards-based infrastructure (including SOAs ) are designed to connect to any independent of any [[vendor]], [[product]] or technology, most enterprises have trouble connecting back-end systems to mobile applications, because mobile devices add the following technological challenges:
+
The purpose of a mobile application server is to build on existing infrastructure to accommodate mobile devices. Although most standards-based infrastructure (including SOAs ) are designed to connect to any independent any vendor, product, or technology, most enterprises have trouble connecting back-end systems to mobile applications because mobile devices add the following technological challenges:
*Limited resources – mobile devices have limited [[power]] and bandwidth
+
*Limited resources – mobile devices have limited power and bandwidth
 
*Intermittent connectivity – cellular service and wifi coverage is often not continuous
 
*Intermittent connectivity – cellular service and wifi coverage is often not continuous
*Difficult to secure – mobility and BYOD make it hard to secure mobile devices
+
*Difficult to secure – mobility and BYOD makes it hard to secure mobile devices
  
Core capabilities of a mobile application services include
+
Core capabilities of mobile application services include
 
*Data routing– data is packaged in smaller (REST) objects with some business logic to minimize demands on bandwidth and battery
 
*Data routing– data is packaged in smaller (REST) objects with some business logic to minimize demands on bandwidth and battery
 
*Orchestration– transactions and data integration across multiple sources
 
*Orchestration– transactions and data integration across multiple sources
*[[Authentication]] service– secure connectivity to back-end systems is managed by the mobile middleware
+
*Authentication service– secure connectivity to back-end systems is managed by the mobile middleware
*Off-line support– allows users to access and use data even though [[device]] is not connected
+
*Off-line support– allows users to access and use data even though the device is not connected
*Security– data encryption, device [[control]], SSL, call logging
+
*Security– data encryption, device control, SSL, call logging
  
  
'''Application Server Vs. Web Server'''<ref>Application Server Vs. Web Server [https://www.nginx.com/resources/glossary/application-server-vs-web-server/ NGINX]</ref><br />
+
== Application Server Vs. Web Server<ref>[https://www.nginx.com/resources/glossary/application-server-vs-web-server/ Application Server Vs. Web Server]</ref> ==
Despite the contrast implied by “application server vs. web server,” on the Internet the two types of server are usually deployed together for a common purpose: fulfilling user requests for content from a website. There are no standards documents that define the properties of web servers and application servers, but let’s look at how the terms are commonly understood.
+
Despite the contrast implied by “application server vs. web server,” on the Internet the two types of server are usually deployed together for a common purpose: fulfilling user requests for content from a website. There are no standard documents that define the properties of web servers and application servers, but let’s look at how the terms are commonly understood.
  
A web server‘s fundamental job is to accept and fulfill requests from clients for static content from a website (HTML pages, files, images, video, and so on). The client is almost always a browser or mobile application and the request takes the form of a [[Hypertext]] Transfer Protocol (HTTP) message, as does the web server’s response.
+
A web server‘s fundamental job is to accept and fulfill requests from clients for static content from a website (HTML pages, files, images, video, and so on). The client is almost always a browser or mobile application and the request takes the form of a Hypertext Transfer Protocol (HTTP) message, as does the web server’s response.
  
An application server’s fundamental job is to provide its clients with access to what is commonly called business logic, which generates dynamic content; that is, it’s code that transforms data to provide the specialized functionality offered by a business, service, or application. An application server’s clients are often applications themselves, and can include web servers and other application servers. Communication between the application server and its clients might take the form of HTTP messages, but that is not required as it is for communication between web servers and their clients. Many other protocols are popular, including the variants of CGI.
+
An application server’s fundamental job is to provide its clients with access to what is commonly called business logic, which generates dynamic content; that is, it’s code that transforms data to provide the specialized functionality offered by a business, service, or application. An application server’s clients are often applications themselves and can include web servers and other application servers. Communication between the application server and its clients might take the form of HTTP messages, but that is not required as it is for communication between web servers and their clients. Many other protocols are popular, including the variants of CGI.
  
In a typical deployment, a website that provides both static and dynamically generated content runs web servers for the static content and application servers to generate content dynamically. A reverse proxy and load balancer sit in front of one or more web servers and one or more web application servers to route traffic to the appropriate server, first based on the type of content requested and then based on the configured load-balancing [[algorithm]]. Most load balancer programs are also reverse proxy servers, which simplifies web application server [[architecture]].
+
In a typical deployment, a website that provides both static and dynamically generated content runs web servers for the static content and application servers to generate content dynamically. A reverse proxy and load balancer sit in front of one or more web servers and one or more web application servers to route traffic to the appropriate server, first based on the type of content requested and then based on the configured load-balancing algorithm. Most load balancer programs are also reverse proxy servers, which simplifies web application server architecture.
  
So why is it a question whether something is an application server vs. a web server? It’s largely due to how the [[design]] and use of the two types of servers has increasingly come to overlap as the demands on websites have grown. Many popular applications act as both web servers and application servers (think Apache HTTP Server, Express, Hapi, and Koa).
+
So why is it a question of whether something is an application server vs. a web server? It’s largely due to how the design and use of the two types of servers have increasingly come to overlap as the demands on websites have grown. Many popular applications act as both web servers and application servers (think Apache HTTP Server, Express, Hapi, and Koa).
  
 
Another overlap is that some web application servers use HTTP as their communication protocol. Similarly, some web servers end up looking like application servers because they have built-in modules and functionality that natively support popular languages like PHP, or proxy and translate requests from HTTP into the protocol (such as FastCGI) used by the application.
 
Another overlap is that some web application servers use HTTP as their communication protocol. Similarly, some web servers end up looking like application servers because they have built-in modules and functionality that natively support popular languages like PHP, or proxy and translate requests from HTTP into the protocol (such as FastCGI) used by the application.
  
  
'''Benefits of Using Application Servers'''<ref>Benefits of Using Application Servers [http://www.itpro.co.uk/strategy/29643/what-is-an-application-server IT Pro]</ref><br />
+
== Benefits of Using Application Servers<ref>[http://www.itpro.co.uk/strategy/29643/what-is-an-application-server Benefits of Using Application Servers]</ref> ==
*Provide integrity of data and code by enabling a centralised approach to application updates and upgrades.
+
*Provide integrity of data and code by enabling a centralized approach to application updates and upgrades.
*Scalability - An application server can pool database connections. This means an organisation can scale out a web server farm without the need to increase the number of database connections.
+
*Scalability - An application server can pool database connections. This means an organization can scale out a web server farm without the need to increase the number of database connections.
*Security - Having a direct link from a web page to a database opens up infrastructure to SQL injection attacks. With a separate data access layer carrying out data validation and/or showing business logic, you can ensure that text entered in a web form is not used as an SQL call. Security is also improved by centralising authentication processes as well as data access management.
+
*Security - Having a direct link from a web page to a database opens up infrastructure to SQL injection attacks. With a separate data access layer carrying out data validation and/or showing business logic, you can ensure that text entered in a web form is not used as an SQL call. Security is also improved by centralizing authentication processes as well as data access management.
 
*Improve the performance of large heavily-used applications by placing restrictions on network traffic.  
 
*Improve the performance of large heavily-used applications by placing restrictions on network traffic.  
  
  
===References===
+
== See Also ==
 +
[[Web Server]]
 +
 
 +
 
 +
== References ==
 
<references/>
 
<references/>
  
  
===Further Reading===
+
== Further Reading ==
*Introduction to Application Servers [http://www.nyu.edu/classes/jcf/g22.3033-003_fa09/slides/session1/IntroductionToApplicationServers.pdf NYU]
+
*[http://www.nyu.edu/classes/jcf/g22.3033-003_fa09/slides/session1/IntroductionToApplicationServers.pdf Introduction to Application Servers]
*Difference Between Web server and Application server [https://techdifferences.com/difference-between-web-server-and-application-server.html Tech Differences]
+
*[https://techdifferences.com/difference-between-web-server-and-application-server.html Difference Between Web server and Application server]
 +
__NOTOC__

Revision as of 17:43, 19 January 2023

What is an Application Server?[1]

An application server is a program that handles all application operations between users and an organization's backend business applications or databases. It is also referred to as an app server. An application server is typically used for complex transaction-based applications. To support high-end needs, an application server has to have built-in redundancy, monitor for high availability, high-performance distributed application services, and support for complex database access.

An application server consists of a server operating system (OS) and server hardware that work together to provide computing-intensive operations and services to the residing application. An application server executes and provides user and/or other app access when utilizing the installed application's business/functional logic. Key required features of an application server include data redundancy, high availability, load balancing, user management, data/application security, and a centralized management interface. Moreover, an application server may be connected by enterprise systems, networks, or intranet and remotely accessed via the Internet. Depending on the installed application, an application server may be classified in a variety of ways, including as a Web server, database application server, general purpose application server, or enterprise application (EA) server.[2]

The application server is frequently viewed as part of a three-tier application, consisting of a graphical user interface (GUI) server, an application (business logic) server, and a database and transaction server. More descriptively, it can be viewed as dividing an application into:

  • A first-tier, front-end, Web browser-based graphical user interface, usually on a personal computer or workstation
  • A middle-tier business logic application or set of applications, possibly on a local area network or intranet server
  • A third-tier, back-end, database, and transaction server, sometimes on a mainframe or large server[3]


Application Server
source: Amit Nirala


History of Application Server[4]

In the early days of application servers, it was realized that applications (the programs people were using to get work done) themselves, were becoming bigger and more complex - both to write and to maintain. At the same time, the pressure was increasing for applications to share more of their data and sometimes functionality with other applications. More applications were either located on a network or used networks extensively. It seemed logical to have some kind of program residing on the network that would help share application capabilities in an organized and efficient way - making it easier to write, manage, and maintain the applications. The end result of this thinking was what is now called an application server. However, these servers first appeared in client/server computing and on LANs. At first, they were often associated with "tiered" applications, when people described the functionality of applications as two-tiered (database and client program), three-tiered (database, client program, and application server), or n-tiered (all the above plus whatever). This was (and still is) a complex model of application development, and it resisted wide-scale implementation.


When to Use an Application Server[5]

You should consider an application server when you have a need for:

  • Integration with existing systems and databases
  • Website support

Secondary reasons to use application servers derive from the primary reasons. A few secondary reasons are:

  • E-Commerce
  • Web-integrated collaboration
  • Component re-use

One way to look at application servers is that they are a formalization of a solution to a problem that has been around for a long time. That problem can be characterized as a need to create an integrated presentation and processing environment for existing systems and databases. The presentation has pretty much been decided with browsers now being the dominant interface. This is why you usually see a Web server paired with or included in an application server. Integrated processing has been moving towards components for some time. Application servers provide containers for such components along with application program interfaces (APIs) to support the components. These APIs are to the existing systems and databases.


Application Server Categories[6]

  • Java-based, including Oracle WebLogic and IBM WebSphere (supporting the database and the Web client)
  • Microsoft Windows Server-based
  • Others, often built using open-source technologies


Features of Application Servers[7]

  • Component Management: Provides the manager for handling all the components and run time services like session management, synchronous/asynchronous client notifications, and executes server business logic.
  • Fault Tolerance: Ability of the Application server with no single point of failure, defining policies for recovery and fail-over recovery in case of failure of one object or group of objects.
  • Load Balancing: Ability to send the request to the different servers depending upon the load and availability of the server.
  • Transaction Management
  • Management Console: Single point graphical management console for remotely monitoring clients and server clusters
  • Security: Security features for applications security


Types of Application Servers (Models)[8]

There are three different types of application servers:

  • Dedicated application server - one physical hardware server which runs one single network application. Some applications actually require this. The benefit of using a dedicated application server is its level of performance given that the server hardware is serving a single application. All CPU and I/O resources are dedicated to providing a single service. However, this model is more expensive because it will force additional physical servers to be installed for other purposes as organizations typically have to use more than one network application in their environment. In addition, depending on application usage, this model may result in unused capacity if the application is not often used. This would result in inefficient use of the application server.
  • Distributed application server - one network application that runs on many servers concurrently. Many Web-based applications use a distributed model. More servers allow configuration of fault tolerance resulting in negligible downtime and uninterrupted workflow for the end-user. More servers also allow for scalability which in turn balances the load between different servers and enables a larger number of users who can use the network application. The downside of this type of model is the cost of implementation as it requires more hardware and software along with the capability of the application to run on more machines instead of one.
  • P2P or Peer-to-peer model. - the application runs on multiple systems. The key advantage of a P2P application is that it uses server hardware very efficiently. The peer-to-peer application model can balance the load more effectively when compared to distributed application server model, and provide the best performance possible. This is accomplished by analyzing the servers and determining how to load balance. However, the peer-to-peer application model is more complex to set up.


Mobile Application Servers[9]

A mobile app server is mobile middleware that makes back-end systems accessible to mobile applications to support Mobile application development. Much like a web server that stores, processes and delivers web pages to clients, a mobile app server bridges the gap from existing infrastructure to mobile devices.

The purpose of a mobile application server is to build on existing infrastructure to accommodate mobile devices. Although most standards-based infrastructure (including SOAs ) are designed to connect to any independent any vendor, product, or technology, most enterprises have trouble connecting back-end systems to mobile applications because mobile devices add the following technological challenges:

  • Limited resources – mobile devices have limited power and bandwidth
  • Intermittent connectivity – cellular service and wifi coverage is often not continuous
  • Difficult to secure – mobility and BYOD makes it hard to secure mobile devices

Core capabilities of mobile application services include

  • Data routing– data is packaged in smaller (REST) objects with some business logic to minimize demands on bandwidth and battery
  • Orchestration– transactions and data integration across multiple sources
  • Authentication service– secure connectivity to back-end systems is managed by the mobile middleware
  • Off-line support– allows users to access and use data even though the device is not connected
  • Security– data encryption, device control, SSL, call logging


Application Server Vs. Web Server[10]

Despite the contrast implied by “application server vs. web server,” on the Internet the two types of server are usually deployed together for a common purpose: fulfilling user requests for content from a website. There are no standard documents that define the properties of web servers and application servers, but let’s look at how the terms are commonly understood.

A web server‘s fundamental job is to accept and fulfill requests from clients for static content from a website (HTML pages, files, images, video, and so on). The client is almost always a browser or mobile application and the request takes the form of a Hypertext Transfer Protocol (HTTP) message, as does the web server’s response.

An application server’s fundamental job is to provide its clients with access to what is commonly called business logic, which generates dynamic content; that is, it’s code that transforms data to provide the specialized functionality offered by a business, service, or application. An application server’s clients are often applications themselves and can include web servers and other application servers. Communication between the application server and its clients might take the form of HTTP messages, but that is not required as it is for communication between web servers and their clients. Many other protocols are popular, including the variants of CGI.

In a typical deployment, a website that provides both static and dynamically generated content runs web servers for the static content and application servers to generate content dynamically. A reverse proxy and load balancer sit in front of one or more web servers and one or more web application servers to route traffic to the appropriate server, first based on the type of content requested and then based on the configured load-balancing algorithm. Most load balancer programs are also reverse proxy servers, which simplifies web application server architecture.

So why is it a question of whether something is an application server vs. a web server? It’s largely due to how the design and use of the two types of servers have increasingly come to overlap as the demands on websites have grown. Many popular applications act as both web servers and application servers (think Apache HTTP Server, Express, Hapi, and Koa).

Another overlap is that some web application servers use HTTP as their communication protocol. Similarly, some web servers end up looking like application servers because they have built-in modules and functionality that natively support popular languages like PHP, or proxy and translate requests from HTTP into the protocol (such as FastCGI) used by the application.


Benefits of Using Application Servers[11]

  • Provide integrity of data and code by enabling a centralized approach to application updates and upgrades.
  • Scalability - An application server can pool database connections. This means an organization can scale out a web server farm without the need to increase the number of database connections.
  • Security - Having a direct link from a web page to a database opens up infrastructure to SQL injection attacks. With a separate data access layer carrying out data validation and/or showing business logic, you can ensure that text entered in a web form is not used as an SQL call. Security is also improved by centralizing authentication processes as well as data access management.
  • Improve the performance of large heavily-used applications by placing restrictions on network traffic.


See Also

Web Server


References


Further Reading