Paul Hammant's Blog: Previous Web Architectures
For enterprise app dev, and to support a following blog entry, I’d like to recap some technology choices that have previously used since the advent of the web.
Also see the following blog entry that is about enterprise web-app technology choices for 2012, and new challenges for where the object model is running.
What’s the synopsis of this blog-entry?
Over the years, logic is progressively migrating from a web-server tier into the browser. Pattens, practices and responsibilities were established in the web-server tier, and were starting to be defined in the web page.
Beyond the declarative nature of HTML programming, and the understanding of the contracts behind URLs, there was no functionality in any turing-complete manner present in web pages.
Web application development in 1993, 2000 and 2006.
In the year 2000, Sun’s Java Servlets or Java Server Pages (JSP) apps were a possibility with Model-View-Controller (MVC) being the recommended pattern. Microsoft had recovered from the mistake of ignoring the web in 1995, and had made Active Server Pages (ASP) the most popular enterprise solution. Indeed they had their fork of Java (google for “Project COOL”) .Net ready for enterprise app dev (see later). PHP had come from nowhere as a CGI solution, and Apache with that mechanism of linkage was the most popular web server. You might have even seen /cgi-bin/ in the URLs of web applications, though rewrites were possible. Allaire’s Cold Fusion (an independent IIS data-binding solution) had by then been snubbed when Microsoft didn’t buy the 90% of the company they didn’t already own and launched ASP instead. ASP apps followed the data-binding solution that fatter MS-Access solutions had pioneered for years. ASP.Net was still two years away though. Python and Ruby may have been used in CGI mode, but Rails (in 2003 I foolishly told DHH it wouldn’t scale in the enterprise) was still three years away, and Django two more. Microsoft had pioneered AJAX style functionality in ActiveX controls, and you might have encountered applications that used them. Similarly Sun could still make a claim that Java Applets were a reality on the web at large. Macromedia’s Shockwave/Flash was a viable platform that competed with, and would ultimately beat both ActiveX & Java Applets.
AJAX was the big thing. Between them Microsoft, Netscape and Google had made it popular. Most enterprise teams were building apps that were somewhere between Web 1.0 and Web 2.0. Roy Fielding’s REST is big but it required some decoding for the layman. Ruby on Rails had been a significant productivity force for a year or two. The .Net offerings for the web were solid 2.0 a year before and before the end of the year 3.0 would be released. Model-View-Presenter (MVP) was the paradigm, and Martin talked about it after some initial ThoughtWorks projects with .Net. Microsoft’s patterns and practices group would later talk about it too. That’s not to say that MVC is dead - most of the non-.Net frameworks are coded in accordance with it. All web-app best practitioners were now doing POST-redirect-GET (PRG) and you finally hit the back button after posting a form - take that Tim Berners-Lee. ThoughtWorks had a year or two before pushed out Selenium for web-testing (and was one of the early pioneers of Comet as a result), then Sahi for another go at the same idea, with WebDriver (now Selenium2) to come a year later. Web applications were now beautifully decomposed solutions, illustrating Separation of Concerns, Inversion of Control, if not Dependency Injection in particular.
For the purposes of the following article, the take away is that Model-View-Controller in the web-server tier (as delivered by web frameworks) is a big thing in 2006.