Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News RIA Frameworks: And the Survey Says…

RIA Frameworks: And the Survey Says…

This item in japanese


Given the number of frameworks now available for rich Internet application (RIA), choosing the right one, if not the best one, can be a difficult decision. Inside RIA recently completed an online survey that asked Flex/ActionScript RIA developers about their preferred frameworks.

The survey listed four major frameworks: Mate, PureMVC, Cairngorm and Swiz. The results speak for themselves. InsideRIA’s Rich Tretola says: “Well it appears that I was little off in my predictions. By getting over 30 percent of the vote, PureMVC has led the way, with Cairngorm taking second place, and Mate coming in third.”

In discussions surrounding the voting, one developer, Karl, shared why he does not use Cairngorm:

I found Cairngorm to be overly complex and, in a lot of ways, a square wheel. For example, why do I need to raise an event that gets handled by a front controller and routed to a command? Why not just invoke the command directly? The front controller pattern is trying to claim that keeping all of my commands in one place is agile. Actually, by removing the command's invocation from its natural context, I found myself spending a huge amount of time trying to remember where the source code related to the event was. After I finally found the correct code, I was trying to remember what I wanted to do with it. Overkill.

Others recommended frameworks that were not on the survey list. For example, one developer, Vipin, said:

We use Tom Bray's EasyMVC, which is very simple, but uses most of the concepts used by Cairngorm. There are lots of interesting features in the available frameworks, and we kind of mixed everything together and made an in-house framework, which is working nicely: faster development and multiple developers on the same project, and no confusion on how to deal with events and commands etc.

Chris Brind’s very thoughtful comments and suggestions really completed the survey:

The main advantage that a framework offers is a prescribed way of implementing an approach, be it MVC or ViewHelper, or whatever.

I would recommend that any team about to embark on a project take a close look at what frameworks are available and weigh up whether the benefits they will get from using an existing one will out-weigh writing their own or simply putting in place a convention and code-review process.

IMHO if you have quality, disciplined developers, a good convention is what is really required. But a lot of people don't like to work to conventions, and I imagine some of the more anal architects don't trust their developers enough to follow one, which is a sad case to start with.

Rate this Article


Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • much simpler and more flexible than any of these

    by Charles Kendrick,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    All of the listed frameworks require you to write a great deal of boilerplate plumbing code to get UI events to trigger data model changes. A better approach is to make UI widgets aware of data models and provide a standard processing pipeline for typical CRUD operations, which you can then override wherever you need to.

    Interestingly the best implementations of the MVC pattern are in the Ajax space, not the flex space. For example, in SmartClient, just providing a visual component with a DataSource makes that component able to provide view, edit, validate and save interactions without further configuration. This works with any data provider, because the component only see the DataSource and it's data schema, and never knows the details of the underlying data provider.

    This is just one example - there are many more in the example tree that this loads:

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p