A Simple Paradigm for RIA Development

Lately at Emergent Path we have been building applications using ColdFusion on the server side and Flex on the front end to create very compelling Rich Internet Apps. I have settled on a standard set of technologies and frameworks that provide a standard way of building web apps, and I wanted to share my thoughts.  I am hardly alone in the direction I am moving. Anecdotally, several people I know have been building applications in a simliar way, and blogs and mailing lists are starting to fill with technical questions around various parts of the solution.

On the client, we use Flex with the Cairngorm framework to build well-organized, maintainable code. Cairngorm has a reputation as being a little heavy, and we have experimented with variaous cusotmizations and simplications of the framework. There are other Flex frameworks out there, but Cairngorm at the moment is the most widely used, so that is our current standard. Flex handles the View and Controller aspects of the application.

On the server, we use ColdFusion 8 (and that's important, upgrade your server!) with Coldspring to handle the Model. Coldspring is robust and scalable and is rapidly becoming my favorite ColdFusion framework. It only handles the model, and it is a complimentary technology to Fusebox, Mach-II, Model-Glue, Coldbox, and in this case, Flex. 

Coldspring supports the Transfer and Reactor ORM frameworks, but to date we have not used them in any development projects. We tend to customize the model code, and ORM for us has no clear advantage over other code generators. We have been using the Illudium Pu-36 Code Generator for our base model generation. It is a fairly limited tool, supporting only 1:1 table-entity mapping, but it is very easy to use and allows for customization of the code templates to suit your own architectural style.

Under this paradigm, our ColdFusion apps end up with an Application.cfc and index.cfm in the root, the coldspring folder, a model folder, a services folder (for remote service proxies), and that's it. The Coldspring.xml config file, and any other folders (such as upload/download directories, db scripts) can be held outside the webroot and accessed through the local file system. Images and CSS elements are held in the Flex source folder and deployed at compile-time to the proper location.

This paradigm offers simplicity, rapid development, scalability, and good code organization for long-term maintainability. I've been thinking about making an acronym for it, but I haven't come up with anything yet. 

Comments
Brian Rinaldi's Gravatar Thanks for the mention of Illudium. FWIW, when I built it, it was intentionally limited because that allows the ease of use. The idea was that you could use it without editing configuration files or mapping data fields and whatnot. That being said, I am working on adding some new features (and an entire back-end rewrite) that make it slightly less limited but keeping my focus on the ease of use. Would love to hear feedback from you all (and FYI I am looking for folks who want to join as contributors).
# Posted By Brian Rinaldi | 4/22/08 9:32 PM
Robert Munn's Gravatar Brian, I try to use the simple is beautiful rule in software design. Simplicity is one of the key reasons I like Illudium. :-)

We have a developer working on some code generation stuff right now. I'll pass on that you are looking for volunteers to help with the next version.
# Posted By Robert Munn | 4/23/08 9:50 AM
BlogCFC was created by Raymond Camden. This blog is running version 5.8.001.