Mach-II Downloads
Stable Versions
- 3/30/09 Framework 1.6.1 Stable
- 5/12/09 Dashboard 1.0 Stable
- 4/16/09 Skeleton 1.6 Stable
Development Versions
- 12/27/09 Framework 1.8.0 RC2
Nightly Versions
- 2/1/10 Framework 1.8 BER
- 2/1/10 Framework 1.9 BER
- 1/13/10 Dashboard 1.1 BER
Get ZIPs of older nightlies
Latest Tweets
-
Excited to see 5 M2 topics submitted to CFUnited & 2 of the 4 speakers aren't on Team Mach-II. Yay community! Go vote: http://is.gd/7YGov
02/09/2010 -
Oh so close to a Mach-II Simplicity (1.8) FINAL / STABLE relase! Debugging on last RC2 edge case issue.
02/02/2010 -
@adrianscott Mike and Peter spent an hour last night discussing implementation details. It's looking great!
02/01/2010 -
i gotta tell you, it's really hard doing Real Work today instead of working on mach-ii's internationalization. (via @mikerogers_)
02/01/2010 -
Mach-II Integrity (1.9) Milestone 1 has been completed: http://is.gd/6aWZB
01/28/2010
Latest Google Group Topics
- How do YOU handle user file storage in your applications?
- Cannot install the framework
- Mach II at CFObjective 2010
- Odd behavior using SES URL's and 'urlExcludeEventParameter' property
Latest Team Mach-II Posts
Quick Facts
- OO MVC Framework for CFML
- Open source – Apache 2.0 license
- Compatible with:
- Driving enterprise-level apps since 2003
Mach-II Conceptual Overview
Mach-II is an extremely full-featured framework that is highly extensible through the use of filters, plugins, and modules. Mach-II is based on two main software architecture principles:
Event-Driven
In a Mach-II application, events are announced either programmatically or based on user actions, and event announcements drive the behavior of the application. The details of what occurs in an event is configured in Mach-II's XML configuration file, which allows for easy, flexible development and maintenance.
Implicit Invocation
In a Mach-II application, procedures and methods are not invoked directly, but rather are invoked implicitly as the result of an event announcement and any related notifications to Mach-II listeners. This concept is also referred to as the Hollywood Principle, which is a reference to the cliche Hollywood phrase, "don't call me, I'll call you." This concept leads to application components that are highly cohesive and loosely coupled, which makes applications easier to test, debug, and maintain.
General Framework Features
- XML Configuration Files provide an easy-to-reference roadmap for your entire application. Mach-II allows for the use of multiple XML configuration files for easier maintenance through the use of XML includes.
- Developer Configured Listeners serve as Mach-II's powerful controller layer in your applications. Listeners allow for maximum flexibility in controlling application flow, and help provide a distinct separation between the controller and the model layers in your applications.
- Highly Extensible Architecture through filters, plugins, properties and modules, which allows developers to easily add, remove, and alter functionality in their Mach-II applications. Read more about these features below.
Filters
Filters enable per-event flow control in Mach-II applications, and are easily added to Mach-II events through a single line in the XML configuration file. A simple example would be the addition of security or logging to a specific Mach-II event. By developing a filter and adding this filter to the event, this additional functionality can be added to or removed from the event without touching the business objects involved with the event.
Plugins
Plugins are similar to filters, but plugins execute on every event in a Mach-II application, and plugins also offer much more granular control through access to numerous plugin points during the course of event execution.
Modules
Modules allow for entire sub-applications, even completely independent or stand-alone applications, to be added to an existing Mach-II application. When a module is added to a Mach-II application this creates a parent-child relationship between the base application and the module, and functionality within the module can be overridden by the base Mach-II application. For example, if a blog application is used as a module in Mach-II, the authentication functionality of the parent application can override the authentication in the blog application.
For example, the blog section of this website is the open source MachBlog project. This was implemented using a module and a a custom skin. This was easily accomplished by not changing any core MachBlog files – including the original MachBlog XML configuration file. Any customizations to MachBlog was done through overriding the default behavior with the base application configuration.
Caching Package
The caching package can be used to cache data and output cached data within Mach-II applications. The new caching package allows for highly granular caching of data as well as rendered view output, and also supports named caches that can be created and cleared programmatically. The Mach-II caching package is highly flexible and supports multiple caching strategies. Mach-II 1.6 includes Time Span and Least Recently Used (LRU) caching strategies, and due to the extensible nature of Mach-II caching package, additional strategies can be developed relatively easily.
Logging Package
The logging package gives developers access to a complete logging solution, including the ability to log multiple levels of messages across multiple channels and loggers. The framework itself also broadcast logging messages as well. Debuging requests has never been so easy in Mach-II.
As with the Mach-II caching package, the logging package is also a completely modular, stand-alone package that may be used outside the context of Mach-II, provided a custom loader is written. The logging package may also easily be extended to incorporate logger types other than the three included (Email, CFlog and traditional debugging output) with Mach-II.
URL Management
Mach-II offers complex URL management in a simple to use way.
- Build framework specific urls via BuildUrl(), BuildUrlToModule() or BuildRoute()
- Quickly implement SES/Friendly urls by changing just a few properties
- Easy management of sub/peer applications with modules
- Build route style URLs
- Persist complex data types (i.e. CFCs, structs, arrays) across redirects
Custom Tag Libraries
Mach-II offers two custom tag libraries that provide seamless integration with the framework.
- The form tag library allows you build HTML forms extremely fast and also provides data binding
- The view tag library provides tags that solve common everyday view layer tasks
Bundled Properties, Filter and Plugins
The core framework ships with many components that simplify common Mach-II tasks.
- ColdSpringProperty.cfc - Integration ColdSpring with Mach-II
- EnvironmentProperty.cfc - Sets environment specific properties
- HTMLHelperProperty.cfc - Convenience property to ease the handling of HTML, CSS, and JavaScript assets and related tasks
- UrlRoutesProperty.cfc - Define and manage URL routes
- LoggingProperty.cfc - Define and manage logger and settings
- CachingProperty.cfc - Define and manage cache strategies and settings
- Additional filters and plugins
Development Tool / Application Manager
The Mach-II Dashboard is an essential tool that is designed to assist developers create and manage the development of Mach-II applications. For more information including screenshots, please visit the Mach-II Dashboard home page.
