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
- None at this time
Nightly Versions
- 5/28/09 Framework 1.8 BER
- 5/12/09 Dashboard 1.1 BER
Get ZIPs of older nightlies
Latest Tweets
-
Did you know the HTMLHelperProperty support IE conditionals when using addStyleSheet? http://digg.com/u16x3J
06/29/2009 -
Finished HTMLHelper documentation with sexy features like asset timestamps and asset packages - M2 Simplicity! http://digg.com/u16x3J
06/29/2009 -
@dskaggs We aim to please! Patches make for easier defect fixes so I highly encourage looking at @mach_ii open source code like you did.
06/27/2009 -
RT @dskaggs ew blog post: Using the new HTMLHelperProperty in MachII 1.8 http://shortna.me/35f4b
06/27/2009 -
@dskaggs oh, don't forget the view-loaders since it simplifies your XML configuration file oh so much. Nifty little piece of engineering.
06/17/2009
Latest Google Group Topics
- jquery and mach-ii
- has anyone tried to use event field as a form field exclusively?
- Vague loop timeout
- Session Timeout Default
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, which includes numerous minor changes to the internals of the framework to vastly expand the information logged by Mach-II internally, as well as the introduction of the logging package itself. 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. 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 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 - Defind 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.
