The following topics describe the application server evolution, its place in SOA with an introduction to the WSO2 Application Server.
What is an Application Server
An Application Server (AS) is a software program which accommodates the hosting, deployment and management of various applications. Residing in the middle tier, between an organization’s database layer and the user-interaction layer, an application sever facilitates communication and connection of the front and back tiers.
For example, if a user triggers a particular control in a user interface, like clicking the submit button, it typically invokes a service deployed in the application server. The deployed service or application defines what course of actions needs to be taken when the button is clicked. Few possibilities are data retrieval from the database and manipulation before presenting to the end-user or invoking other services as defined in the application’s business logic. These operations are typically handled by an application server.
In addition to business logic implementation, application servers also centrally manage most reusable operations like security, monitoring, governance, high-availability etc. Separation and central management of an organization’s pool of applications and services are key reasons for the wide acceptance and adoption of application servers in distributed enterprise architectures today.
Evolution of Application Servers
The application server concept emerged in early client-server environments. The term was originally used to differentiate servers that hosted databases and related services from file/print servers.
The client-server architecture was introduced back then to address some of the drawbacks of the file-server architecture, where file servers acted as mere shared storages and performed no logical processing. In contrast, the client-server environment had a server which hosted the database and performed related operations (similar to an application server). Many clients shared the server. End-user interaction was handled by the client computers whereas logical processing was cooperatively shared between clients and the server.
In a typical client-server environment, application developers had to write most of the program code for operations such as database interactions, client request management, session management and security in addition to the actual business logic. Since every developer had to write similar code for common functionalities, packaging and hosting them in a centrally-accessible server increased reusability and reduced overhead. This triggered the emergence of the 3-tier (or N-tier) architecture, with reusable functionalities instilled in application servers in middle tier/s. This enables developers to focus simply on an application’s business logic implementation.
Application server functionality has enormously expanded over the years. Nowadays, most enterprises have 3-tiered (or N-tiered) distributed architectures with Web-enabled applications and services hosted and managed in application servers.
The WSO2 Application Server
The WSO2 Application Server is a lean, open source, high-performant application server with Web application and Web services deployment and management capabilities.
It is fully-open source and developed based on the lean, component-based WSO2 Carbon platform. It utilizes Apache Tomcat and is capable of hosting any kind of Web application deployable in Tomcat. Users can simply and effectively create, consume and manage their applications and services in a unified manner through the Application Server's "Management Console" user-interface.
Unlike many over-bloated, proprietary solutions, WSO2 has created a new platform that cuts out unnecessary layers, supporting the full WS-* stack in a simple, clean, lightweight model. It is reliable, scalable and supports secure communication and transactional integration based on the concept of loose coupling. Web applications inherit features such as authentication/authorization, user management from the WSO2 Carbon platform.
The WSO2 Application Server brings together a number of open source projects into a single, seamless, easy-to-use offering. Instead of having you to download different parts of the Apache Web services stack separately and assemble them together, WSO2 has already done that for you. With the WSO2 AS, you get a single, integrated package with lots of additional features which are inherited from the powerful WSO2 Carbon platform. The WSO2 Application Server utilizes Apache WS* stack and REST protocol features, provides enterprise-class security features, JAX-WS support, governance, monitoring, clustering, high-availability, load balancing, tracing, logging and more.
WSO2 has positioned the application server product in 3 different phases. Currently in use is the WSO2 Application Server, which is the successor of WSO2 Web Services Application Server (WSAS). WSO2 WSAS was launched in 2008 with its predecessor being WSO2 Tungsten.
The WSO2 Application Server in context of SOA
An enterprise’s application servers are typically accessed by a variety of heterogeneous clients, within a LAN and over the Internet. Modern-day enterprises acknowledge the advantages of building Web-enabled applications on Web service interfaces. Web services have also become the fundamental building block of a service oriented architecture (SOA) implementation.
As a result, the WSO2 Application Server is designed to be portable and interacts with the outside using platform-agnostic technologies such as XML/SOAP messaging. This gives clients access to an enterprise’s applications and services irrespective of their infrastructures.
The WSO2 Application Server has extensive Web service management capabilities, which makes it ideal for SOA implementations. It utilizes Apache WS-* stack for Web services related functionalities along with Axis2 components such as Rampart, Sandesha2, Neethi etc. It also offers unique capability to run Web applications and Web services on the same server and manage them simply through a unified graphical console.
The Application Server supports deployment of different types of services such as Data Services, spring, jar, axis2 and JAX-WS. Service type depends on the way the service is developed. However, finally all services are deployed within the Axis2 engine and all features will be available for all service types.