I’ve recently started checking out the Ariaware RIA Platform. If you are building RIAs, do yourself a favor and download, install, and learn this framework.
The biggest thing that kept me away from learning more about this was the misconception that it was tied to MX 2004 screens/forms, which are tied to UIComponent and UIObject which I avoid like the plague. But this is not the case. You can use the framework with your own custom classes and components and not touch UIObject in any way.
ActionScript as a language is still growing up. AS2.0 is just over a year old. It doesn’t have a rich tradition of patterns and best practices that other, more senior languages have. Developers are still figuring out how to cross-apply these things from other languages into AS.
Furthermore, I think my own story is pretty typical for the average Flash developer. I’ve dabbled in programming before, but didn’t have any formal training in it or any extensive professional experience. I got into Flash in the late 90’s because it was “cool”. My programming experience has grown along with ActionScript, and I’ve been branching out into other languages and ideas as I go. I think that a large portion of Flash developers are just learning about patterns and practices and frameworks, at the same time that ActionScript itself is “learning” about them.
The guys at Ariaware obviously do not fit this description. They know patterns and best practices. And they have taken them and built a framework for application development in Flash. This is pretty much what I have been looking for for many months. My projects at work are getting larger and more complex, and while my coding skills in ActionScript are what I would consider pretty expert, when it comes time to tie a huge system together in some logical way that is easy to understand, scale, debug, etc., I just couldn’t get it down.
I’ve taken a few hours a day over the last few days to read the docs and start creating some apps. There’s a bit of a learning curve, but the result is beautiful. Each part of the system is compartmented, simple to understand, does what it’s supposed to and nothing else. The parts communicate with other parts in predescribed ways.
Best of all, since it is based on existing patterns, my coworkers – Java and PHP developers – can look at it and know exactly what is going on. I can tap them for knowledge on how to best architect pieces. We are now speaking the same language. Although, it does take away some of the mystique of doing something that nobody else can understand. 🙂
This is very similar to the Actionscript framework published in design patterns chapter in The Actionscript 2.0 Dictionary published in the summer of 2003. Its almost a class-by-class/pattern-by-pattern version.
Hi Keith,
Thanks for the kind words. I’m glad to hear you like ARP! We have a mailing list for it going which you can subscribe to on the site. I would appreciate your feedback and I have a new version in the works that contains a Flex example as well as some further workflow enhancements/docs.
Graham: The reason you see a similarity is because we worked together with Ali and Steven (who wrote the chapter you’re referring to) on the Telrock Messaging project (then known as Opal) and we have similar, but not identical, views towards which patterns are most useful in an RIA.
After we released ARP, Ali and Steven went on to release a framework that is aimed just at Flex that uses a similar list of patterns. However, the pattern implemenations (ARP was written from the ground-up for ActionScript 2.0), interactions and the frameworks themselves work very differently. ARP also supports both Flash and Flex.
You can find out more about the design patterns published in the ActionScript 2.0 dictionary in the Core J2EE Patterns and the GoF book.
That’s what’s so great about patterns: They are common answers to common design problems, exist in the public domain and their adoption results in a common language for developers.
Also, I wrote up a post on the patterns used and their interactions on FlashAnt which you might want to check out:
http://flashant.org/index.php?m=200312#20
(Since it was written last year, you may want to read through the ARP documentation for the most up-to-date information.)
Thanks Aral, I did sign up for the mailing list. Haven’t received any posts yet. I assume it’s just slow right now. I have GoF, but it’s really nice to have some concrete examples in AS to go on. I’m going to pick up the J2EE book soon, it was recommended by others as well.
Hi guys – good to see that the concepts of design patterns are capturing the interest of the community. I thought I’d take a second just to clarify on one of Aral’s point here however..
“After we released ARP, Ali and Steven went on to release a framework that is aimed just at Flex that uses a similar list of patterns.”
So in 2002, I first introduced the Flash community to the concept of applying relevant J2EE design patterns (principally from the Core J2EE Pattern catalogue – I’d previously implemented a Java framework upon many of the same patterns). In Reality J2EE (which is ActionScript 1.0 and Flash Remoting) I introduced the Value Object, Business Delegate, Service Locator, Front Controller and Command patterns. As far as I’m aware, this was the first time these patterns had been specifically implemented, and used together, for RIA development in the Flash ecosystem.
Following publication of the book, we contacted Aral to work with us on the Opal project; during the early phases of the project, I enjoyed defending the architecture (and the need for the architecture – we should have got Aral a t-shirt with “But Flash isn’t Java” on it 🙂 ), but ultimately, I took responsibility during the initial weeks of the project for laying down a refined implementation of the design patterns in Reality J2EE – indeed, this project was the first time I’d taken the Front Controller pattern that had previously been an HTTP Request handling controller, and adapted it to the event-driven architecture that survives today.
Following the completion of that project, we were asked to write a chapter for the ActionScript 2.0 Dictionary, which is where the first published implementation of those patterns in ActionScript 2.0 was released.
The microarchitecture that we have worked with internally (called Cairngorm) has evolved towards Flex development, primarily because that is the focus of the enterprise RIA developers who have adopted it; though it was common knowledge within circles of the RIA community that we intended to do so, we held back the announcement of Cairngorm as an open-source project at MAX2004. The following day (I read the blog entry while people were coming into the room for my second delivery of my presentation!), Aral open-sourced his Ariaware platform. Irrespective, it’s all good for the development community to have these frameworks out there.
Apologies for the length of this comment; I know it wasn’t Aral’s intention but I don’t want the community to mistakenly believe that the Cairngorm microarchitecture followed ARP, or took inspiration from ARP – on the contrary.
The RIA community now has a choice of open-source RIA frameworks – this is a good thing, and will drive further innovation I’m sure.
Here’s hoping that we can collectively take the state of the art even further.
Happy Christmas to all !
This has some interesting reading for those considering both Cairngorm and ARP
http://groups.yahoo.com/group/flexcoders/message/5741
Hi Steven,
Sorry if my comment made it sound like the implementation of Cairngorm followed that of ARP — that was not my intention — I was just stating that it was released as open-source after ARP was.
The real reason for my comment was to inform the author of the original comment that we worked together on Opal and shared ideas and knowledge (both ways!) 😉 on that project.
I don’t think anyone would deny the service you have done to the Flash and Flex communities by promoting the use of Smalltalk/J2EE-based design patterns in RIA development. As I’ve often stated — and to mirror your sentiments — the more such tools we have, the more the whole community will benefit.