- Mach-II
Infobox Software
name = Mach-II
caption = "We're Community Driven"
genre =web application framework
developer = [http://www.greatbiztools.com GreatBizTools, LLC] |source_model =Open source
latest_release_version = 1.6 Beta
latest_release_date = September 23, 2008
operating system =Cross-platform
licence = Apache 2.0
website = [http://www.mach-ii.com mach-ii.com]Mach-II is an open-source object-oriented
web application framework based on themodel-view-controller design pattern. The framework focuses on trying to ease software development and maintenance. Mach-II was the first object-oriented framework forColdFusion .The mission of Mach-II is to do MVC and do that well without sacrificing extensibility. Mach-II is highly extensible through its filter and plugin architecture. This design allows developers to leverage third-party functionality or other frameworks easily. A by-product of this basic credo is that Mach-II is not hampered by the release schedules or bugs of other frameworks because they are not intrinsically integrated into the Mach-II core. This allows Mach-II developers to "virtually customize" so Mach-II application always use your architecture and specifications without being forced to abide by convention over configuration.
Mach-II is not a full-stack framework like
Ruby on Rails . Mach-II aims to be a pure MVC framework that provides extensibility through the framework’s architecture instead of providing built-in functionality to code generation or Object Relational Mapping (ORM).Mach-II is owned and supported by GreatBizTools, LLC (GBT). GBT is a consulting firm that specializes in designing, developing, and implementing human resource management systems.
Principles
Mach-II has been developed on the following object-oriented principles:
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.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 cliché 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.Features
* XML Configuration Files provide an easy-to-reference roadmap for applications built on the framework. 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. Listeners allow for maximum flexibility in controlling application flow, and help provide a distinct separation between the controller and the model layers.
* Highly Extensible Architecture through filters, plugins, and modules which allow developers to easily add, remove, and alter functionality in Mach-II applications.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.
URL Management
Mach-II offers basic URL management in which the can build framework specific urls via BuildUrl() or BuildUrlToModule(). It is easy and quick to implement SES/Friendly urls by changing just a few properties in the XML configuration file. Mach-II also can persist complex data types (i.e. CFCs, structs, arrays) across redirects.
Platforms
The Mach-II framework is available for ColdFusion. An earlier version of Mach-II is available for PHP, but is no longer officially supported. Mach-II is supported for
Adobe ColdFusion 6.1+ andNew Atlanta BlueDragon 7+. Although not officially supported, according to Vince Bonfanti at New Atlanta, version Mach-II 1.1.1 runs without modification on BlueDragon 6.2.1.Drawbacks
* Mach-II has a steeper learning curve for developers that have a procedural programming background since Mach-II is an object-oriented framework.
* Mach-II based applications have some application overheard compared to roll your own frameworks. This drawback applies to all frameworks. With the price of memory and processing power low, the relatively small overhead is usually met with indifference by most developers.Mach-II vs. Other ColdFusion Frameworks
=Mach-II vs. Fusebox=Mach-II is object-oriented which lends itself to developing loosely coupled and tightly cohesive models. In general, Fusebox is largely procedural, unless you choose to follow the MVC design pattern. Whereas Mach-II uses implicit invocation, Fusebox uses explicit invocation, where Choosing between Mach-II and Fusebox depends on the way you or your development team works. Developers that understand or want to learn more about object-oriented design and development find that Mach-II is a good choice for a framework. Procedural developers or developers that do not have the time to learn about object-oriented design and development usually find that Fusebox might be a better framework choice as it is aimed towards procedural development.
Mach-II vs
Model-Glue Mach-II and Model-Glue are similar in that they are both event driven, implicit-invocation, object-oriented MVC frameworks. Model-Glue hooks in other frameworks to the MVC framework.
ColdSpring 's IOC framework and support for both the [http://www.reactorframework.org Reactor] and [http://compoundtheory.com/transfer Transfer] ORM frameworks have been built-in, and scaffolding are also built-in, if you install either Reactor or Transfer (but Model-Glue does not depend on those frameworks otherwise). Model-Glue's MVC offers slightly simpler functionality. Mach-II does not install with other frameworks built-in, but allows them via its plug-in architecture.The Mach-II.xml File
The mach-ii.xml file is the main configuration file for your Mach-II application. The XML configuration file has an accompanying DTD currently called mach-ii_1_5_0.dtd that is included with the core framework files. This file is commonly referred to as the "configuration file" throughout this article.
Framework development
Mach-II for ColdFusion was originally created by Ben Edwards and Hal Helms. The framework is currently maintained by a dedicated team of contributors. The principle commercial entity supporting Mach-II is GreatBizTools, LLC - a human resource management company.
Release history
* Mach-II 1.6b was released on September 23, 2008
* Mach-II 1.5 was released on October 1, 2007
* Mach-II 1.5rc1 was released as a public release candidate on August 14, 2007
* Mach-II 1.5b was released as a public beta on June 26, 2007
* Mach-II 1.1.1 was released November 28, 2006
* Mach-II 1.1.1b was released as a public Beta on August 21, 2006
* Mach-II 1.1.0 was released in November, 2005Future development road map
* Mach-II 1.6 is scheduled for release late Q3 / early Q4 2008
* Mach-II 1.8 is scheduled for release late Q1 / early Q2 2009
* Mach-II 2.0 is scheduled for an alpha pre-view in the late half of 2009License
Since the 1.1.0 release, Mach-II has been released under the Apache 2.0 license. Mach-II was licensed under an Apache 1.1 license before the 1.1.0 release, and is owned by GreatBizTools, LLC. You can use Mach-II on any commercial application as long as you abide by the license. For more details, please see the license that is shipped with the framework.
Team Mach-II
* [http://www.mattwoodward.com/blog Matt Woodward] - Community Manager
* [http://blog.maestropublishing.com/ Peter J. Farrell] - Lead Developer and Code Wrangler
* [http://www.jroller.com/page/kwiersma Kurt Wiersma] - Developer and Resident Geek
* Brian FitzGerald - Wiki Manager and Evangelist
* [http://www.kylehayes.info/blog/ Kyle Hayes] - DesignerExternal links
Mach-II Resources
* [http://www.mach-ii.com/ Mach-II web site]
* [http://blog.maestropublishing.com/ Shuttle.Space] - The blog of Peter J. Farrell
* [http://www.mach-ii.info Mach-II.info Resource Site] - Mach-II Resource Site
* [http://corfield.org/index.cfm?fuseaction=machii.main Sean Corfield's Mach-II Page] - Sean Corfield's Mach-II Page
* [http://www.mach-ii.de Mach-II.de the german side] - Mach-II (the German side)Mach-II Open Source Applications
* [http://www.machblog.org/ MachBlog] - A full-featured Mach-II blogging application.
ee also
*
Comparison of web application frameworks
Wikimedia Foundation. 2010.