A Survey of Web Application Frameworks

The vast majority of web sites on the Internet today are UNIX based. Indeed they rely upon the LAMP stack, comprised of Linux, Apache, MySQL, and PHP to function. Furthermore, one of the key principles of web application frameworks is the reuse of modules that will aid developers in writing Web applications. This design tenet of using modules that each have own their own assigned functionality is analogous to how UNIX utilizes modules. Thus the topic of Web application frameworks (WAF) is one that is particularly germane and relevant to UNIX.

Web Application Frameworks (WAF)

In general, we may say that a Web framework is a collection of software components that aid the development and execution of Web-based user applications which are presented to users by their Web browsers. The applications created by the developers reside on the server, and may be executed either server-side or client-side. The syntax and semantics of these applications is determined by the framework that is used. Until recently, almost all Web frameworks were server-centric (Vosloo & Kourie, 2008), though of late we are seeing more client-side Web frameworks.

Drilling deeper though, we see that a WAF is a re-usable program, set of programs, and/or code library that performs common tasks for “one application, or layer of one application” (Johnson, 2005), or service. These “non-full-stack frameworks” may perform such common tasks as database operations, URL routing, caching, security, and low-level management of protocols, sockets, processes/threads, et cetera (Vosloo & Kourie, 2008). By using the framework, we as the developers will only need to customize the specific portions of the application that we deem necessary, as other routine tasks have been taken care of by the framework.

Conversely, agile web frameworks such as Ruby on Rail (RoR) are considered mature “full-stack web frameworks” and useful for the full and total development of web applications. In contrast with non-full-stack WAFs, agile web frameworks are not limited to one layer, but rather they serve the full stack. In essence, the full-stack web application brings together multiple libraries, and provides all the applications that are required to build the website. As with the non-full-stack WAF, the agile frameworks are reusable as well, and may be utilized countless times for any of the applications that are included within the framework (Ignacio Fernández-Villamor, Díaz-Casillas & Iglesias, 2008).