Introducing ActionScript Foundry

Goals and benefits

The development of rich internet applications forces concepts different than those dictated by “standard” web applications. In a word, we think that developing a RIA application is like creating a client/server one. In rich internet applications, the client part will have to maintain and adapt its own data representation, synchronize the state of the display with those data, and react to the user inputs by applying business logic. In the RIA model, the back-end services can be solely considered as external resources.
The main purpose of the ActionScript Foundry is to provide a way to organize effectively the components involved in enterprise-scale RIA based on Flex.

Who should use the Foundry ?

If you are asking yourself “should I use the Foundry”, consider the following questions:

  • Am I familiar with RIA concepts? The ActionScript Foundry has been designed to respond to challenges implied by the RIA concepts. If you plan on using a framework for your first Flex application, maybe you should consider first develop a small prototype to come to a decision.
  • Am I familiar with the design patterns? most frameworks (including the AS Foundry), are based on design patterns. The most important portion of the learning curve when discovering a framework is actually dedicated to the study of design patterns and their participants.
  • How much developers the development team will be composed of? Bigger the development team will be, the more the adoption of a global approach to design is necessary. A framework could leverage the cohesion of the team concerning conceptual aspects.
  • Does my project require the use of a MVC framework? Depending on the number of use cases, views, on the typology of the project, maybe the MVC will not be the best design paradigm to adopt.
  • Is the ActionScript Foundry framework the best suited for my project? Each project starting is the opportunity to take a new look at the design approach. To create a small mash-up application, maybe a small homemade framework will serve the purpose in a more efficient way than the AS Foundry could. Moreover, there are others good frameworks that could be more adapted to one particular project or another.


The Foundry is founded on a very simple-layered design. It is based on several design patterns, and includes tools built to resolve some of the recurrent Flex development issues: screen flow, search features, form handling, etc.

The Foundry framework is divided on five packages:

  • Commons: the low-level library, a collection of low-level types and utility classes;
  • Foundry: the MVC framework;
  • Toolbox: a collection of tools based on the Commons and Foundry package;
  • Foundry-Java-Commons : Java classes created to speed up the development cycle for the client-side (Flex) and server-side (Flex Data Services – Live Cycle Data Services – BlazeDS);
  • AirFoundry: an extension to use with Adobe AIR.


The library “Commons” contains low-level types, data structures and utilities used for objects manipulation.The “Commons” library main purpose is to encourage ActionScript developers to adopt good practices when designing their low-level (value) classes.
As an example, Java development forces the implementation of hashCode and equals methods on the objects to resolve the the identity / equality problem. The Foundry mimics this concept by encouraging the use of the IBasicObject interface.
See this article about objects identity.


The Foundry library is the core of the ActionScript Foundry : the MVC framework.
It uses several design patterns (including MVC) to bring a way to structure the applications and fasten development of RIA applications using Adobe Flex. The package contains a full implementation of MVC mechanisms, intended to separate the application logic from the presentation layer.


The Toolbox ActionScript package provides high-level tools responding to common needs while developing RIA applications : access right management, internal browsing, internationalization, form handling, full-text search, etc.

Java Commons

The Java Commons library is a type library used to ease the development of Java services when using Adobe LiveCycle Data Services or Blaze Data Services on the server-side, and the ActionScript Foundry on the client-side.


AirFoundry extends the micro-architecture of the Foundry, and then it can be used in Adobe AIR.

Which package fits my needs?

You are free to use – for example – the Foundry package without the Toolbox package, as the framework defines a very simple dependency tree :

  • the Commons library depends on nothing but the Flex framework;
  • the Foundry library depends on the Commons library;
  • the Toolbox library depends on both the Commons and Foundry packages.

Next Step

Monday, November 17th, 2008 No Comments by Sylvain Didier