Each week from now until the Fusebox conference (Aug
31 - Sep 1), we're talking with one of the conference speakers.
WEEK 1: Ben Edwards
FB: This week, Fusebox is talking with Ben Edwards.
Ben is presenting with Hal on Monday morning of the conference
on Mach-II, a new object oriented framework for building applications.
Ben, we've heard about Fusebox MX for some time, but it seems
that Fusebox MX has become Mach-II. What's the story behind
the name change? Was it purely for marketing purposes?
Ben: When we started out, Hal and I were thinking that we'd
MX version of Fusebox, so "Fusebox MX" made sense,
we thought. At
one point, we asked each other, "What is FBMX? What exactly
building? Are we just porting Fusebox to CFMX?" We decided
that no, we
were really trying to build a framework that would support developers
who wanted to make a shift to object oriented programming. And
course, we wanted to solve some real problems. So we looked
everything again and made a decision that the architecture for
framework should be event-based, implicit invocation—"
FB: You mentioned "implicit invocation". That's a
term probably new to
most Fuseboxers. What exactly is "implicit invocation"
and does it really
matter what architecture was used? Will it affect the way people
applications with Mach-II?
Ben: I said that we were talking about the framework in the
Fusebox. I'm a Fusebox fan; I built the J2EE implementation
and worked on the Adalon IDE for Fusebox. But we said, "What's
pain about building applications?" Maintenance—that's
a pain. And yet,
it's the single biggest item in the lifecycle cost of an application.
bigger than the costs to originally write the code. Mach-II
allows you to
rapidly develop an application, but it really shines when software
maintenance comes into play. But anyway, you asked about implicit
invocation. II [implicit invocation] is a well-documented architectural
style and it happens to excel at supporting maintainable code.
It's got a
rich, proven history in commercial, desktop software, DBMSs,
FB: Maintenance is very high on most developers' Least Favorite
having a framework built for maintenance piques our interest.
differentiates implicit invocation architecture from other architectural
Ben: Each style has its own structure. It helps define the
the application architecture must make, what tradeoffs are involved,
etc. Now, for a long time, people thinking about building better
have realized that when one bit of code is dependent on another
code—and that second bit of code depends on a third bit
when that happens the software becomes both fragile and brittle.
FB: Not a good combination.
Ben: Not at all. So this idea of keeping things independent
ingrained in good software engineering practices. We call it
coupling". I read recently someone said that the perfect
one in which "everybody knows nothing about anyone else."
ultimate in loose coupling. Well, that idea is built into the
nature of II.
Individual components-think of Fusebox circuits-don’t
have to know
which other components are available and how to explicitly make
them (they are not tightly coupled). Instead II—and Mach-II—has
idea of events occurring within the system and then individual
components "listening" for these events. Mach-II itself
is the controller
in a Model-View-Controller pattern and makes sure listening
are properly notified of appropriate events.
FB: That does seem quite different from traditional Fusebox.
Ben: Right—that was why we thought, "We can't keep
name; it will just confuse people." And so, Mach-II got
FB: What do you say to people who say that the name sounds
Ben: Well, hopefully, people will evaluate the framework based
merits, so I'd probably say something like: A razor? Sure, think
of "shaving" time and money off your software development
FB: You've mentioned events. What is an event?
Ben: An event is an encapsulation of an intention. It's the
encode anything that needs to be done in the software—whether
intention occurs by a user clicking something on their screen
the business logic components — the listeners —
create an event.
Events are objects, so they contain information that listeners
Things like form and URL variables, maybe, or information about
user's security profile.
FB: How do these business logic components "listen"?
Ben: The listeners are registered at configuration time with
framework through an XML file. The framework uses invokers to
listener in its native format and formats the information from
in a way that's meaningful to the listener.
FB: Can you give us an example?
Ben: Yes, let's say that you have a web service as a listener.
services have a well-defined manner of accepting arguments,
a WSDL XML format. The invoker's job is to pass the event to
listener in a way that the web service can process it.
FB: So you can have a web service as a listener. Are there
Ben: Sure, listeners can be web services, CFCs, Enterprise Java
even Flash clients.
FB: When would you advise someone to use Fusebox 4 and when
you use Mach-II? Are certain applications better suited to one
Ben: If you're using ColdFusion MX and you want to approach
application in an OO manner, Mach-II is probably the best choice.
you're committed to a procedural approach, Fusebox 4 is the
FB: You said that Mach-II is built around MVC. Does this mean
application programmers need to understand Model-View-Controller?
Ben: MVC is a design pattern with broad scope. It's enormously
for the framework writers. It lets us build a very flexible
can be used in many contexts, but MVC is fairly transparent
application programmer. To the application developer, Mach-II
separation of business logic through MVC, but you don't have
much about MVC to use Mach-II. A good framework provides the
benefits of appropriate design patterns but shields users of
framework from having to think about those design patterns.
FB: How hard will it be for people to learn this new framework?
Ben: You can approach this on different levels. In some ways,
an app in Mach-II is easier than building one in Fusebox 4.
challenge for the programmer is to learn to leverage OO to build
powerful applications. That's not a framework issue; that's
an OO issue.
But you don’t need to be an OO expert to make use of Mach-II.
being comfortable with OO will yield tremendous power when combined
FB: Any last thoughts?
Ben: Mach-II empowers developers wanting to build maintainable
reusable code. For people who want to investigate Mach-II in
and I are giving a class on Mach-II on August 25-27 in Las Vegas.
can just come to the conference early. You can get more info
halhelms.com and mach-ii.com. The mach-ii.com site will be up
And, let me put in a word of thanks to Vlad Friedman of
edgewebhosting.net, who kindly offered Mach-II a home on the
FB: Thanks, Ben.
Week 5: Jeff Peters
Week 4: Hal Helms
Week 3: John Quarto-von Tivadar
Week 2: Michael