Mach-II

From Wikipedia, the free encyclopedia

Mach-II
Image:MachII fullColor logo web.jpg
"We're Community Driven"
Developed by GreatBizTools, LLC
Latest release 1.5 / October 1, 2007
OS Cross-platform
Genre web application framework
Licence Apache 2.0
Website mach-ii.com

Mach-II is an open-source object-oriented web application framework based on the model-view-controller design pattern. The framework focuses on trying to ease software development and maintenance. Mach-II was the first object-oriented framework for ColdFusion.

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 you 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" Mach-II so your application always have 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.

Contents

[edit] Principles

Mach-II has been developed on the following object-oriented principles:

[edit] 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.

[edit] 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 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.

[edit] 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, and modules, which allows developers to easily add, remove, and alter functionality in their Mach-II applications. Read more about these features below.

[edit] 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.

[edit] 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.

[edit] 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.

[edit] URL Management

Mach-II offers basic URL management. You can build framework specific urls via BuildUrl() or BuildUrlToModule(). You can quickly implement SES/Friendly urls by changing just a few properties. In version 1.5, you can also easily manage sub/peer applications with modules. Mach-II also allows you to persist complex data types (i.e. CFCs, structs, arrays) across redirects.

[edit] 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+ and New 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.

[edit] 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.

[edit] Mach-II vs. Other ColdFusion Frameworks

[edit] 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. If you understand or want to learn more about object-oriented design and development, Mach-II might be the framework of your choice. If you prefer to write procedural code or do not have the time to learn about object-oriented design and development, Fusebox might be a better framework choice. Fusebox is much easier to learn and its possible for developers that never seen it before to edit applications written with Fusebox.

[edit] 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 cooks in other frameworks to the MVC framework. ColdSpring's IOC framework and support for both the Reactor and 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.

[edit] 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.

[edit] 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.

[edit] Release History

  • 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, 2005

[edit] Future Development Roadmap

  • Mach-II 1.6 is scheduled for release late Q1 / early Q2 2008
  • Mach-II 2.0 is scheduled for an alpha pre-view late Q2 2008

[edit] License

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.

[edit] Team Mach-II

[edit] External links

[edit] Mach-II Resources

[edit] Mach-II Open Source Applications

  • MachBlog - A full-featured Mach-II blogging application.

[edit] See also