In the earliest days of computerized business applications, all processing took place on mainframes, with the client having no role other than to display information from the server and accept user input. This was largely dictated by the high cost of processing power. It simply was not affordable to spread powerful clients throughout the enterprise, so all processing was consolidated, and "dumb terminals" provided the user interaction.
As memory and processing power became cheaper, dumb terminals were replaced by microcomputers (or personal computers). With the added power available, more desktop applications, such as word processors and spreadsheets, could run stand-alone, so no server was necessary. One challenge faced by organizations with microcomputers was a lack of centralized data. Although the mainframe era had everything centralized, the age of the microcomputer distributed everything, adding many challenges for centralizing business rules and synchronizing data across the enterprise.
To help resolve this issue, several vendors released platforms that sought to combine the strengths of the microcomputer with those of the mainframe, which led to the birth of client/server systems. These platforms afforded end users the power and ease of microcomputers while allowing for business logic and data to be stored and accessed from a centralized locationwhich solved the problems of the day. The new challenge introduced with the client/server systems was distribution. Any time changes needed to be made to client applications, IT departments had to manually reinstall or upgrade the software on every single desktop computer. Many companies found they needed a full-time staff whose primary responsibility was keeping the software on the end users' desktops current.
With the explosive growth of the Internet in the 1990s, a new model for business applications became available. This model worked by having a web browser act as a thin client, whose primary job was to render HTML and send requests back to an application server that dynamically composed and delivered pages to the client. This is often referred to as a "page-based architecture." This model successfully solved the distribution problem of the client/server days; the application was downloaded from the server each time an end user needed it, so updates could be made in a single centralized place and automatically distributed to the entire user base. This model was and continues to be successful for many applications; however, it also creates significant drawbacks and limitations. In reality, Internet applications bore a great resemblance to mainframe applications, in that all the processing was centralized at the server, and the client only rendered data and captured user feedback. The biggest problems with this surrounded the user interface (UI). Many of the conveniences that end users grew to accept over the previous decade were lost, and the UI was limited by the capabilities of HTML.
For example, desktop software as well as client/server applications frequently use the drag-and-drop feature. However, HTML (Hypertext Markup Language) applications almost never use the feature, due to the complexities and lack of cross-browser support for the DHTML (Dynamic HTML), which it requires to implement in a pure HTML/DHTML solution.
In most cases the overall sophistication of the solutions that could be built and delivered was greatly reduced. Although the web has offered great improvements in the ease and speed of deploying applications, the capabilities of web-based business applications took a big step backward because browser-based applications had to adapt to the limitations of the web architecture: HTML and Hypertext Transport Protocol (HTTP).
Today, the demands for Internet-based applications continue to grow and are often quite different from the demands of the mid-1990s. End users and businesses are demanding more from their investments in Internet technology. The capability to deliver true value to users is forcing many companies to look toward richer models for Internet applications; models that combine the media-rich power of the traditional desktop with the deployment and content-rich nature of web applications.
As Internet applications begin to be used for core business functionality, the maintainability of those applications becomes more crucial. The maintainability of an application is directly related to the application's architecture. Sadly, many web applications were built with little thought about the principles of application architecture, and therefore they are difficult to maintain and extend. Today, it is easier to build a solid architecture for an application by providing a clean separation between the business, data access and presentation areas, with the introduction of elements such as Web Services, service-oriented architecture (SOA) became more feasible for web-based applications.
To meet the demands of businesses, RIAs should be able to do the following: