Evolution Softworks

> Home   > Capabilities   [>] Web Application Architecture

Web Application Architecture

While no one solution will address every client's requirements, many of Evolution's development projects involve common elements, reflecting both shared characteristics of web applications, and our long-term commitment to industry-leading toolsets.

Architecture Overview

A web application operates as a standards-based Internet service, powered by custom server-side software. All end-user and administrative functions are accessed remotely using any standard web browser software.

A web server, usually located at a third-party Internet hosting facility, is configured to respond to publicly accessible web addresses, as well as to some password-protected web addresses. A combination of static web media, scripted templates, and custom application software on that server implements the various web interfaces and internal functions of the system. A standard relational database is used to store system content and user account information.

Software Platform

Evolution selects Open Source solutions when practical, as these community efforts typically produce highly extensible and well supported products.

Evolution generally recommends the following industry-standard suite of Open Source software as the platform for developing web applications:

Application Language

Perl is the premier programming language for server-side web applications. It combines the rapid-development and dynamic binding facilities of scripting languages with features from traditional software engineering languages like support for object orientation and exception handling. Powerful text manipulation capabilities make it well suited for processing templates for web pages, and for interacting with character-based services. An enormous library of third-party software supports all of the protocols and formats required for Internet integration.

Web Server

Apache is the world's leading web server, hosting over half of all web sites. An active developer community has tuned the software for performance and stability, and a wide variety of extensions and supporting modules are available. The mod_perl extension links in a full Perl environment that allows any aspect of the web server's operation to be altered or extended by custom software, without the inter-process performance bottleneck of CGI scripting.

Database Server

The database server is used to store and retrieve content published on the site, user account information, and temporary session information used by the application server. Depending on each system's expected usage patterns and performance requirements, Evolution generally selects either MySQL or PostgreSQL as the relational database server. Where appropriate, information may also be stored and retrieved from any ODBC-accessible database, including Microsoft SQL Server, Oracle, and others.

Supporting Tools

A variety of Open Source extension modules are used to integrate the above server software into a coherent application server platform. In particular, the Apache and Perl developer communities have created a substantial number of freely available toolkits that greatly speed application development.

Custom Software

Object oriented software development techniques are used to develop components that enable access to the system's data, display web page content, and control application processes, increasing modularity and extensibility.

The visual appearance of the system is managed by a collection of Mason templates, which also indicates how the interface is tied to the underlying application objects. Each template specifies the appearance and behavior of a web page, with common elements like page headers separated out into "include" files. Pages which display dynamic information from the application do so by embedding calls to various application objects within the template. Pages which contain interactive forms also include bindings that pass any submitted information to the application objects tier.

A collection of application object classes encapsulate the publishing content, subscriber information, and other system content materials. These classes act as mediators between the web-centric programming interface required by the display templates and the SQL-centric database server where the data is stored. This provides a centralized mechanism for accessing custom application functionality and enforcing the system's standard procedures, such as the workflow rules used by the article submission and review area.

>> Home Page   >> Copyright   >> Email Me