- Architectural patterns
- Web-centric architectural patterns
- And here we are
Web-centric architectural patterns
As an example, every contemporary dot-com system I've studied—particularly those that survived the near-death experience of the late 1990s dot-bomb era—have gone through several distinct architectural periods, periods that track the history of the Web itself. Many others have documented the Web's social, economic, and business history (and writing a history of something that's only 38 years old is disturbing enough, given that I'm only 614 months old myself), so I've taken a stab at naming the various technical generations of Web-centric systems.
In the beginning, simple documents dominated the Web. You can easily identify sites of this era: they were stylistically distinct, consisting primarily of modestly formatted text, basic hyperlinks, and a few crudely placed static graphics, reflecting the simplicity of the HTML standards of the time. In the next identifiable movement, we saw the rise of colorful clients. The first generation of Web-centric systems had sufficient value that they attracted graphic designers (many from the print media) as well as serious developers. However, many of the designers who could build attractive sites couldn't create good software, and many of the developers who could build great software couldn't create approachable user experiences. In this generation, we saw the rise of eye candy (and the now-amusing but the then-ever-annoying HTML <blink> tag) but also more precise formatting and more engaging content.
It took a period of time coupled with natural market forces, but best practices began to emerge that yielded a balance of power between the stakeholders responsible for presentation and infrastructure. This led to a third generation focused on simple scripting. The rise of scripting languages began, and thus Perl, PHP, and others started to take hold. In this generation, we saw the first great schism surrounding the theology of dynamic HTML, with Microsoft's Active Server Pages on one side and, well, not Microsoft (including Java Server Pages) on the other.
Consistent with this model of punctuated equilibrium, the fourth generation was best identified by the rise of middleware, which continued the previous schism (leading to Microsoft's .NET and the alternative products supporting J2EE) and which represented the codification of many of the mechanisms commonly found in such systems.
In the fifth generation, the focus of innovation turned back again to the client layer above this middleware. With by-then-considerable experience in scripting languages and with the still-oscillating pendulum swinging between pure Web thin clients and traditional thick clients, the mark of this generation was the rise of simple frameworks (such as Struts). These served to codify best practices at the client layer, such as reflected in the Model-View-Controller pattern.