Introduction to Flex PureMVC

  • Introduction to PureMVC
  • a) PureMVC is a free open source framework
    b) Created and maintained by Futurescale.
    c) Framework is implemented in ActionScript 2 & 3.

  • Why pureMVC?
  • a) Composition over inheritance
    b) Liberal use of Interfaces
    c) Indirection is used but not overwhelming
    d) Instance members hide singleton references from application code
    e) MXML views can be extremely thin
    f) Benefits of Cairngorm, with few of the disadvantages.

  • How we can evaluate effectiveness?
  • There are more than 9 different frameworks and toolkits for creating Flex applications. Each frameworks has it's own advantage and disadvantage. Different frameworks are Slide, ARP, ServerBox Foundry, Guasax, Flest, MVCS, Model-Glue: Flex, Cairngorm, pureMVC, Parsley.
    They shared their experiences with each, and ranked them based on Approachability , Fiexibility and Scalability.
    Approachable
    - Documentation
    - Adoption
    - Active community
    - Shared knowledge (applicable from other development environments)
    Scalable
    - Testable code
    - Encourages clear encapsulation
    - Accommodates change
    - Supports parallel developments
    - Modular applications
    Flexible - Open-source license
    - Context independent
        a) Minimize internal dependencies such as the Flex framework
        b) Minimize external dependencies like AIR, Java, Rails, AMF, PHP

    - Approachable issues are in Slide, ARP, ServerBox Foundry, Guasax and Model-Glue: Flex
    - Approachable and Scalable issues are in Flest and MVCS

  • Goals of PureMVC
  • a) The Pure MVC framework has a very narrow main goal: to help you separate your applications Coding concerns into three tiers; Model, View and Controller.
    b) Simple but appropriate framework scope.
    c) Reduce confusion over application layers, class roles, responsibilities & collaborations.
    d) Balance speedy implementation with scalability & maintainability.
    e) Provide clear & adequate documentation.
    f) Avoid platform dependencies.
    g) Hide complexity from developer.
    h) A well-planned framework that doesn’t require continuous upgrade and maintenance to keep up with new features, deprecations & refactoring.

  • PureMVC Benefits
  • a) Affecting the total cost of ownership by impacting future maintainability
    b) Pattern- based
       - Supported by time- proven design patterns that can be implemented in any OOP environment.
       - Easy to understand.
    c) Useful implementation classes
       - Framework can be used ‘out-of-box ‘with minimal implementation requirements.
       - Façade class provides a single collaborator for communication with the core framework.
    d) Loosely- coupled architecture
       - Promotes reusability of view components & model data objects & services.
       - Incorporates publish / subscribe- style notifications.
       - Creates clear separation of client- tier coding concerns.
    e) Programmed to interfaces
       - Framework supports extensibility by sub- classing or interface implementation.
       - Interfaces defined for all framework classes.
       - All classes built with extension in mind; protected methods and variables and interface parameters in method signatures.
       - Framework provides for future extension via other libraries by grouping supporting patterns into a separate package, and making no core dependencies on the pattern packages.
    f) Well documented
       - Source code freely available.
       - Complete API documentation.
       - Conceptual and UML Diagrams.
       - Unit tests for all classes and methods.
       - Plenty of demos show the basics and demonstrate best practices
       - Implementation Idioms & Best Practices document by the architect.
       - Professional courseware under development has already been beta- tested by hundreds of students.

    Two versions of the framework are supported with reference implementations; Standard & MultiCore.
    In short,
       a) Standard Version provides a simple methodology for separating your coding interests according to the MVC concept.
       b) MultiCore Version allows multiple Pure MVC applications to run within the same virtual machine; modular programming.