1 / 32

Frameworks: Mach II or Fusebox 4?

Sean A Corfield Director of Architecture Macromedia, Inc. Frameworks: Mach II or Fusebox 4?. Goals. Introduce you to both frameworks Use a sample application to show how frameworks help with (and shape) application structure Cover pros and cons of each framework

yale
Download Presentation

Frameworks: Mach II or Fusebox 4?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sean A Corfield Director of Architecture Macromedia, Inc. Frameworks: Mach II or Fusebox 4?

  2. Goals Introduce you to both frameworks Use a sample application to show how frameworks help with (and shape) application structure Cover pros and cons of each framework Provide you with enough information to make a decision on which one to use for a given project

  3. Who Am I? Senior Architect for Macromedia IT (since mid-2000) A ColdFusion developer (since late-2001) A Mach II developer (since mid-2003) A Fusebox developer (since late-2004) An advocate of standards and best practices (since birth?)

  4. Agenda Frameworks: What? Why? Overview of Fusebox 4 Overview of Mach II Some Similarities Sample Application Fusebox Flavors Mach II Flavor Some Differences Some Pros & Cons Conclusion

  5. Frameworks: What? Why? A framework... ...is reusable code that provides the base on which to build applications in a standard way. ...often implements an architecture which then shapes how the application is designed. A good framework... ...saves development time – because it provides a lot of standard infrastructure out-of-the-box. ...eases maintenance – because it provides a common structure to all applications.

  6. Overview of Fusebox 4 Procedural core framework (4 .cfm + 2 UDF libs) Available for CF5, CFMX, BD, PHP Electrical metaphor of fusebox, circuits and fuses index.cfm?fuseaction=mycircuit.myfuseaction Routes to myfuseaction handler in circuit mycircuit Each fuseaction handler contains XML verbs <do action=”somecircuit.somefuseaction”/> <include template=”somefuse”/> Translates XML to CFML (PHP) on first use

  7. Overview of Fusebox 4 Continued

  8. Overview of Mach II Object-oriented core framework (29 CFCs) Available for CFMX, also BD, limited PHP beta Event-based, implicit invocation architecture index.cfm?event=myevent Routes request to myevent event handler Each event handler contains XML verbs <notify listener=”somecfc” method=”somemethod”/> <announce event=”anotherevent”/> Dynamically processes the queue of events (semi-interpreted)

  9. Overview of Mach II Continued

  10. Some Similarities Focused on separation of logic from presentation index.cfm & framework-as-controller XML-based configuration One-stop core files Public / private “handlers” Plugin architecture

  11. Sample Application A task manager for a cat club Simple user identification List tasks Add / edit tasks Assign tasks to users Intended to be a demo not necessarily best practice! [demo]

  12. Old-School Fusebox Created with Adalon using FLiP (Fusebox Lifecycle Process) Design focuses on pages, exits (links / submit buttons) Circuits used for related functionality: user identity, task management, general site stuff Traditional fuse structure: action, query, display, layout. [look at source code]

  13. Old-School Fusebox

  14. MVC Fusebox Separation of fuses into three primary circuits: Model, View, Controller (each of which may have sub-circuits) Only Controller has public fuseactions (Model and View are all internal) Model contains all the action and query fuses, View contains the display and layout fuses [look at source code]

  15. MVC Fusebox

  16. OO Fusebox Model is replaced by CFCs action and query fuses become one or more methods – each circuit might become one CFC Controller circuit uses <invoke> verb to call methods Some fuses must become multiple methods or must return complex results Initialization of service CFCs happens in fusebox.init.cfm (for example) [look at source code]

  17. OO Fusebox

  18. Mach II Model is CFCs (very similar to OO Fusebox) Best practice would split CFCs into listeners, business objects, data access objects etc Controller (mach-ii.xml) uses <notify> verb to call methods Controller also invokes views directly (there's only one XML file) Initialization of service CFCs is handled automatically by the framework [look at source code]

  19. Mach II

  20. Some Small Differences Fusebox Per-circuit XML files CFCs and MVC are optional in Fusebox Circuits allow for modular applications Basic permissions model built in Views are included directly Mach II Single XML file Requires CFCs and enforces MVC Monolithic applications (but can share session) Roll your own permissions/security Views must be declared

  21. Some Big Differences Fusebox Explicit Invocation Static event handling circuit.xml is the entire logic path All execution paths are spelled out Dynamic events mean redirects Mach II Implicit Invocation Dynamic event handling mach-ii.xml has no logic paths Execution paths are implied by code Dynamic events happen internally

  22. Some Fusebox Pros & Cons Pros Easier to learn Supports multiple programming styles Fine-grained control over framework behavior Better modularity XML grammar is expressive & extensible Cons Still easy to write spaghetti code Lots of framework options to learn Procedural code isn't “cool”

  23. Some Mach II Pros & Cons Pros Enforces / supports best practices more fully Simple, consistent framework structure CFCs are building blocks that extend the framework (filters / listeners) Cons OO, MVC and CFCs have a steep learning curve Monolithic XML file can be hard to manage Less granular control of framework Views require XML declarations

  24. Other Factors Both support an OO style but Mach II requires it – your comfort level with OO design may influence your choice Fusebox has great tool support: Eclipse plugin, Dreamweaver, FuseBuilder, Adalon and others Mach II support is planned for CFEclipse and Adalon in due course

  25. Other Factors Continued Documentation is skimpy for both frameworks (but several books exist for Fusebox) User community is strong for both frameworks (larger and better established for Fusebox – because Fusebox has been around longer) Both sets of core files are essentially the product of one person but Fusebox also has a team of people working on the community resources and the website

  26. Other Frameworks Mach II and Fusebox are not your only choices: onTap – Isaac Dealey – http://fusiontap.com/ Procedural, implicit invocation, massive HTML library Model-Glue – Joe Rinehart – http://www.model-glue.com/ MVC, OO, event-based implicit invocation, XML-driven beans Reaction – Murat Demirci Page Controller, ASP.NET-style code behind concept

  27. Other Frameworks (cont) There are also some model-only frameworks Tartan – Paul Kenney – http://tartanframework.org/ Service / Command / Data Access / Value Object, OO, works well with Mach II, Fusebox and Model-Glue ColdSpring – Dave Ross – http://cfopen.org/projects/coldspring/ Inversion of Control, CFC Container (like Java's Spring)

  28. Conclusion? You tell me... ...after seeing this presentation, Who would use Fusebox? Who would use Mach II? Who would make a choice on a project-by-project basis?

  29. What Do I Use? I helped introduce Mach II to Macromedia so I use Mach II for projects at work – it's a Web Team standard I'm a contributor to Mach II (lead developer for 1.0.10) I use Fusebox 4.1 for all my projects outside work I'm a member of Team Fusebox

  30. Conclusion If you have a very complex application – that has a lot of internal state transitions which can occur dynamically – then Mach II may be more appropriate Otherwise Fusebox is easier to learn, supports more programming styles (including OO) and has a stronger support community with several books available

  31. Resources Fusebox http://fusebox.org/ Fusebox Plugin for Eclipse http://cfopen.org/projects/fusebox3cfe/ Fusebox Explorer for Dreamweaver http://cfopen.org/projects/fuseboxexplorer/ FuseBuilder http://fusebuilder.net/ Adalon http://adalon.net/ Mach II http://mach-ii.com/ Also http://corfield.org/fusebox/http://corfield.org/machii/

  32. Sean A CorfieldDirector of ArchitectureMacromedia, Inc. scorfield@macromedia.com sean@corfield.org Frameworks: Questions and Answers?

More Related