Tools such as Visual Basic (VB) and Visual FoxPro succeeded and became wildly popular because they provided simple and effective abstractions of a programming language. This allowed relatively inexperienced developers to rapidly prototype and produce small business applications. The .NET languages and platform that superseded them have grown rapidly in complexity and this sort of simple abstraction has proved much more elusive.
Web Forms attempted to abstract the complexities of the stateless Web model and to speed up the development of Rich Internet Applications (RIA), by making them work more like a traditional desktop application. This was done to minimise the culture-shock for those VB 6 / ASP developers who did not have a strong background in HTTP/HTML Web development. In the event, it confused the VB6 code-jockeys, and presented a complexity-overkill for the seasoned Web developer.
The problems seem to stem from the fact that the event-driven model, which creates state where there is none, and relies heavily on Postback, is fragile and makes needlessly complex the seemingly- straightforward task of rendering HTML reliably to a browser. Criticisms levelled at Web forms include difficulty in testing, bloated ViewStates, a lack of standards-compliance, which made cross-browser support painful, and generally sucking all the fun out of web programming.
As such, the advent of ASP.NET MVC (Model-View-Controller) is a blessed relief to many. It is based on solid and well-established principles of “separation of concerns”, and actually simplifies the process of rendering standard HTML to a range of browsers. And yet, as presented by Scott Guthrie in his recent DevConnections keynote, and reported recently by Laila Lotfi on Simple-Talk, it is aimed squarely at the experienced programmer who wants “full control over their HTML”, and at large-scale applications.
If ASP.NET MVC is for the experienced programmer only, and Web Forms are fundamentally flawed, or as Rob Conery puts it are “an abstraction wrapped in deception covered in lie sauce presented on a plate full of diversion and sleight of hand”, then where does the small shop turn for a simple and rapid development platform for RIAs?
It seems that, for these people, the answers may lie elsewhere. Ruby on Rails (RoR), also based on an MVC design, has grown rapidly in popularity due to a simplicity and clarity of structure that often seems to elude Microsoft frameworks. Likewise, PHP has always been massively popular for its relative simplicity and ubiquity, and it now has it own CakePHP framework, which begs, steals and borrows more than a few tricks from RoR. Similarly, the Python fraternity is warming to Django. On top of this, there are ExtJS, jQuery, MooTools, Dojo, Rialto, Qooxdoo, and a host of other JavaScript platforms, offering an easy route to RIA paradise.
A generation of entrepreneurs grew successful businesses using simple RAD tools such as VB and FoxPro. These simple tools don’t seem to exist for the next generation of predominately web-based developers, at least not in the Microsoft platform.
As always, we’d love to hear what you think. Many thanks to everyone who contributed to the previous Scalar UDFs editorial; the Amazon voucher goes to BuggyFunBunny for an interesting peak into a possible future direction.
Cheers,
Tony.