Tony Davis

Simple-Talk Editor
News, views and good brews

The Road to RIA

Published Thursday, November 26, 2009 12:05 PM

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.

Comments

 

beechgrovejoe said:

A wonderful example of revisionist history by someone with a vested interest in MVC.  WebForms has worked perfectly well.  Complaints like bloated view state, difficulty in testing, fragile postbacks, lack of standards compliance, or sucking the fun out of Web programming is exactly what you would expect from someone who never really learned WebForms.  When you look at the job market, there are still many more jobs for WebForms developers than MVC developers.  This all remindes me of the VB6 haters that who lacked understanding of the VB6/COM environment and therefore said VB6 sucked.  And like the VB6 haters of the past, reguardless of what they say, WebForms will continue to be successful due to it's power and versitility.  I would expect the MVC people to go the way of the C++ people.  They will simply be relegated to niche corners of the industry supported by companies that simply want to prove they are better because they are different.  Maybe some day they will grow up and realize that for a given time frame, all development platforms are created equal.  And if you don't believe that you really need to take a class in computer science.
November 27, 2009 1:01 PM
 

Raymondo said:

Some months ago I came across a tool called Ironspeed.  We tested the free version and we then decided that it make sense to buy the Enterprise version.  We have now completed 2 projects, not big but enough to wet the appetite.  We are now looking at the projects and with the knowledge learnt on the first 2 projects.  Ironspeed uses VB and HTML but it is intuiative.  A modicum of knowledge is required.  
So check out www.ironspeed.com.  It is one of the easiest RAD tools I have worked with.   Decide for yourself.  
November 30, 2009 9:40 PM
 

DThrasher said:

I agree. ASP.NET WebForms was a huge step backward, as far as I was concerned. The interesting thing about PHP for me is how similar it is to classic ASP. The original ASP had plenty of room for improvement, but replacing it wholesale with an awkward, stateful controls-based model was not helpful.

I'm glad that the Microsoft and the .NET community have decided to move away from ASP.NET toward a more web-native approach.
December 1, 2009 9:29 AM
 

IowaWebDave said:

I too would add classic ASP to the list.  It was so easy to throw a page up on a website with ASP.  No need to compile or make sure the correct .NET framework was installed, etc. etc.  Updating a page simply required Notepad!  

ASP.NET may have been a big step forward from an "enterprise perspective", but it really made it tough for small web sites/developers to use.  I think that's where the Ruby on Rails and PHP has really gained popularity.  Microsoft lost a big market there.
December 1, 2009 9:43 AM
 

miles said:

I would like to echo what Raymondo said.  Iron Speed Designer is a code generator that takes care of most of the complexity of building web applications.  I suspect I would never be as good at developing web applications as I am now had I not found Iron Speed.  This product allowed me to deliver high quality applications right away.  Then I learned about the page life cycle/postback/viewstate etc.

I do agree with you that the page life cycle model is deeply flawed.  There is so much un-necessary overhead and redundancy, not to mention complexity.  If MVC can help me escape from stateless hell, then I am all for it.

FWIW,

Miles
December 1, 2009 3:46 PM
 

ignatandrei said:


I agree that WebForms is flawed. So was VB3 to VB6( no OO, no Threading , etc) . But VB was a deeply success in his times.

I think that ASP.NET , completed with Windows forms and ORM(EF, L2S) , are a RAD system . And combined it offers a power beyond PHP and Ruby( you can have a WebSite and a Windows Forms application for the approximate same code base ).

And then, for passionate programmers, there exists ASP.NET MVC , WPF, etc.
December 2, 2009 2:56 AM
 

BuggyFunBunny said:

Just spent some time at the Iron Speed site.  Tough to tell in a few minutes whether it's built to do what some java/database generators do:  read the catalog and generate not just input forms from single tables, but also all the "business logic" embedded in BCNF schemas (check constraints, foreign keys, and the like).  It that world, FireStorm was the first serious commercial effort I saw.  From what I can see, even Hibernate is moving in that direction.  

The whole notion of RIA is an attempt to replicate a connected, character mode interface (with pretty pixels now) in a disconnected block mode interface world.  Square peg, round hole.  AJAX and variants are the attempt.  My suspicion is that the cell phone pipe will replace the HTTP pipe just because it is a round hole.  That will not make the phone companies happy, at least in the near term (on my side of the pond).  Where the cell pipe is public infrastructure, you'll get there that much faster, due to lack of redundant networks each trying to bankrupt the others.

As to MVC being "better", have a look at Allen Holub's site.  A decade ago, he described better alternatives.  MVC as it developed in the java world, for example, turns out to be a fungible term.  It ain't today what it was a couple of years ago, and "new" ways of implementing it yield a Babal of frameworks.  Even in Python, which is a much smaller world, there's more than one way to do it; Django has Guido's blessing, but not all agree (TurboGears, Pylons, Sprox, etc.).

Kind of a segue from the last Editorial that I couldn't resist.
December 2, 2009 11:11 AM
 

timothyawiseman@gmail.com said:

A Rich Internet Application inherently has complexity than a similar program written for the desktop and is a much more recent concept than desktop applications.  In time, I am certain that a small number of very easy to use frameworks will emerge for the creation of basic RIAs with minimum effort and minimum skill (at least in terms of programming).  But it takes time for these to be fully developped and time for the community/marketplace to standardize on a small number of competitors.

Several of the options mentioned here are beginning to make strides in that direction.  While I am only just starting to learn I have so far found Django on Python impressive.  It is relatively easy to use (especially for someone who already knows at least some python) and yet powerful enough for a most projects.

Another point is that there is still room for desktop applications and many problems for which older RAD tools server very well.  I have for instance completed several very small projects recently in Access and I have heard of developers who still predominantly work in Accesss.  As a development tool it is very limited and only useful for certain niches of problems, but it is very easy to learn, very fast to write applications in within that niche of problem sets, and quite sufficient to make a living with.  I know some people would mock its use for anything, and it is certainly only appropriate for limited problem sets, but it can make an excellent RAD tool in certain circumstances.

I suspect in the future, there will be excellent RAD tools for RIA which require only basic programming knowledge.  In the meantime, those who want to write RIAs would be well advised to learn programming thoroughly with multiple frameworks and those who want to work with a basic programming knowledge only (at least for the short term) have plenty of room still in basic desktop applications.
December 2, 2009 11:49 AM
 

silverblatt said:

Like so many recent Microsoft products, ASP.NET clearly IS too complex and too poorly documented.  I came to it as an experienced programmer, but even after five or six years of coding with it, I'm still spending entirely too much time struggling to make things work and too little time being productive.  All this is in marked contrast to working with VB or Access, where the environment stays out of my way and allows me to concentrate on what I enjoy and do well:  designing efficient and useful interfaces, building solid business logic, and actually producing something useful in a reasonable amount of time.

But I don't think the fault is mostly with ASP.NET (or any tool for that matter).  In my view, a more fundamental problem is that we continue to use an underlying technology (HTML/HTTP) to do something it was never designed for (building rich internet applications, which by their very nature must be either stateful or not very rich).  I'd like to see a totally new set of web standards, to be supported by both browsers and programming tools, and making the following improvements:
1.  Move all processing (except for fetching/serving pages and their associated code, and database access) from the server to the client, which, if done well, could improve the performance of both server and client.
2.  Further simplify and abstract state maintenance, possibly with some built in adaptive logic that could change the particular strategy (cookies, query strings, etc.) on the fly in response to network latency, page size, available memory, etc.
3.  Adopt a page rendering scheme that is more standardized and predictable than the current jumble of HTML, CSS, scripting and all the various browser settings and peculiarities; even with a fairly good grasp of all of these, it can be difficult to predict exactly if, where and how a particular control will render on a particular client.  Compare that to VB, C and just about any other desktop environment, in which controls consistently render exactly where you place them on a form (what a concept!).

Whether it's the tools, or the nature of current web standards, or both, I have to agree with Tony that building web applications has sucked much of the fun out of programming for me.


December 4, 2009 4:57 PM
 

timothyawiseman@gmail.com said:

Silverblatt, I think point number 3 is very good, but I am not sure it is one that can entirely be overcome.  

While our current amalgamation of javascript, HTML, CSS, etc, etc certainly has plenty of room for improvement, much of the issue is in the fact that it needs to be renderable by any standards compliant browser.  This will add in some unpredictability as different groups implement things in different ways and work with different limitations.  A desktop has different capabilities than a tablet pc which has different capabilities than a smartphone.

In fact, many Rich Internet Applications eschew the browser entirely and provide their own separate clients.  For instance many internet-only games such as World Of Warcraft, and Magic:The Gathering Online provide their own non-browser clients.  As do virtually all major chat programs such as AIM.  Other services, such as last.fm and dropbox.com, can work potentially work entirely in a browser but require a separate client to access all features in the easiest fashion.

In time it is likely that more of this will move to the broswer as it becomes more capable, but for the time being the richest experience requires a separate, custom written desktop component.
December 7, 2009 11:31 AM
You need to sign in to comment on this blog


















<November 2009>
SuMoTuWeThFrSa
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
Finding Stuff in SQL Server Database DDL
 You'd have thought that nothing would be easier than using SQL Server Management Studio (SSMS) for... Read more...

Mission Critical: SQL Server 2008 Performance Tuning Task List
 In which Buck Woody imagines how the US military would have tackled DBA checklists for... Read more...

Simple Query tuning with STATISTICS IO and Execution plans
 A great deal can be gleaned from the use of the STATISTICS IO and the execution plan, when you are... Read more...

Switching rows and columns in SQL
 When they use SQL Server, one the commoner questions that Ms Access programmers ask is 'Where's the... Read more...

Writing Efficient SQL: Set-Based Speed Phreakery
 Phil Factor's SQL Speed Phreak challenge is an event where coders battle to produce the fastest code to... Read more...