Fusebox (programming)
Encyclopedia
Fusebox is a web application framework
Web application framework
A web application framework is a software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development...

 for ColdFusion
ColdFusion
In computing, ColdFusion is the name of a commercial rapid application development platform invented by Jeremy and JJ Allaire in 1995. ColdFusion was originally designed to make it easier to connect simple HTML pages to a database, by version 2 it had...

 and PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

. Originally released in 1997, the current version, 5.5, was released in December 2007.

Fusebox is intended to be easy to learn and provides benefits by helping developers structure their code through a set of simple conventions. Fusebox also allows advanced developers to build large applications, leveraging design patterns and object-oriented programming techniques if they wish.

Overview

Fusebox provides web application developers with a standardized, structured way of developing their applications using a relatively straightforward and easy to learn set of core files and encouraged conventions. In addition to the framework itself, Fusebox has become closely associated with a Web application development methodology developed by its proponents known as "FLiP
Flip
Flip may refer to:* Flip * Flip , a 1985 solo album from Nils Lofgren* Flip , a mathematical operation in algebraic geometry* Flip * Flip , a hinged form factor for handheld electronic devices...

" (for Fusebox Lifecycle Process). (Many people refer to Fusebox as a "methodology", but in fact, as stated, it's a development framework. FLiP, however, is a methodology). Many frameworks provide comparable advantages; however, Fusebox (probably on account of both its relatively long history and the sizable and active community that supports it) seems to be the most popular one for ColdFusion
ColdFusion
In computing, ColdFusion is the name of a commercial rapid application development platform invented by Jeremy and JJ Allaire in 1995. ColdFusion was originally designed to make it easier to connect simple HTML pages to a database, by version 2 it had...

. The framework has been ported and used in ASP
Active Server Pages
Active Server Pages , also known as Classic ASP or ASP Classic, was Microsoft's first server-side script engine for dynamically-generated Web pages. Initially released as an add-on to Internet Information Services via the Windows NT 4.0 Option Pack Active Server Pages (ASP), also known as Classic...

, JSP
JavaServer Pages
JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...

, Perl
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...

/CGI
Common Gateway Interface
The Common Gateway Interface is a standard method for web servers software to delegate the generation of web pages to executable files...

 and PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

 as well, though the ColdFusion and PHP versions of Fusebox are the only versions to gain momentum.

It is important to note that Fusebox deals primarily with the effort of wiring together view states (pages) with controller actions (form submits, etc.) and the front-end of the business-logic tier. The framework does not address creating and maintaining business logic
Business logic
Business logic, or domain logic, is a non-technical term generally used to describe the functional algorithms that handle information exchange between a database and a user interface.- Scope of business logic :Business logic:...

 such as database interaction or service layers.

Fusebox, Circuits and Fuseactions

The original concepts behind Fusebox were based on the household idiom of an electrical fusebox that controls a number of circuits, each one with its own fuse. In a Fusebox web application, all requests are routed through a single point (usually index.cfm for ColdFusion) and processed by the Fusebox core files. The application is divided into a number of circuits (usually in sub-directories) which are intended to contain related functionality. Each circuit in the application is further divided into small files called fuses that should perform simple tasks. As such, Fusebox is considered an implementation of the front controller
Front Controller pattern
The Front Controller Pattern is a software design pattern listed in several pattern catalogs. The pattern relates to the design of web applications. It "provides a centralized entry point for handling requests."...

, a common design pattern
Design pattern
A design pattern in architecture and computer science is a formal way of documenting a solution to a design problem in a particular field of expertise. The idea was introduced by the architect Christopher Alexander in the field of architecture and has been adapted for various other disciplines,...

.

URLs within a Fusebox web application are usually of the form index.cfm?fuseaction=cname.fname where "cname" is the name of a circuit and "fname" is an XML-defined "method" within that circuit known as a fuseaction. The query-string variable name "fuseaction" can vary depending on configuration parameters, so not all applications using Fusebox need to use the action variable "fuseaction".

Naming Conventions

Fusebox encourages, but does not enforce, separation of presentation logic from business logic. It uses a number of file naming conventions to encourage this separation: presentation files begin with dsp (display) or lay (layout), database access files begin with qry (query) and general business files begin with act (action). Typical file names are in the format [prefix]_[filename] like dsp_loginform.cfm. Additional naming conventions are used by some Fusebox developers but these are the most common ones.

Exit Fuseactions

Another concept that Fusebox encourages is to parameterize any exit points in a web page, coding them as variables that are set in the circuit control file. These exit points are known as XFAs - eXit FuseActions. The idea is that by parameterizing the exit points in a web page, the flow of control can be updated more easily, allowing more reuse of web pages or fragments thereof.

FuseDocs

Associated with the framework, but not strictly part of it, is the concept of FuseDocs
FuseDocs (programming)
FuseDocs is a program definition language created by Hal Helms in the late 1990s.In its original form, FuseDocs used a proprietary vocabulary to define the responsibilities, properties, and I/O of code module in the ColdFusion programming language. In its second form , FuseDocs uses an XML...

 which is a semi-formalized form of documentation written in XML that specifies the inputs and outputs of each fuse file. There are third-party tools available which can use FuseDocs to do things like generate test harness code.

History

Fusebox has had several major revisions over the years. The most popular versions in use today are Fusebox 3, 4 (including 4.1) and 5. In Fusebox 3, the control files were all written in the underlying programming language (e.g., fbx_Switch.cfm for ColdFusion). Fusebox 4 and later versions use XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

 for the control files (fusebox.xml and circuit.xml), but other framework components are written using the underlying programming language (e.g. fusebox5.cfm, again for ColdFusion). In theory, this helps improve tool support for the framework. It also allowed for the pre-parsing and generation of a single template for processing each fuseaction, greatly increasing performance. Fusebox 5.5 allows the XML files to be omitted if certain conventions are followed.

Fusebox (version 1)

Fusebox 1 grew out of a conversation on the CF-Talk mailing list in April 1998. Steve Nelson and Gabe Roffman are credited with creating the original Fusebox though the first Fusebox program was written by Josh Cyr. The methodology was constantly evolving and beyond a whitepaper and a handful of examples, no official documentation existed. Very few developers were exposed to Fusebox during these early days.

Fusebox 2

Craig Girard and Steve Nelson (along with Hal Helms and Nat Papovich) wrote a book, Fusebox: Methodology and Techniques, which was published in 2000 by Fusion Authority. Programmers who followed the practices described in the book were said to be doing "Fusebox 2."

Fusebox 3

Fusebox 3 (written primarily by Hal Helms, John Quarto-von Tivadar and Nat Papovich) was an effort by leading members of the Fusebox community to incorporate XFB and other ideas into a reusable library, known as the "core files." A simple API allowed application code to communicate with the core files. Upon release in the fall of 2001, Fusebox became a framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...

 rather than a methodology
Methodology
Methodology is generally a guideline for solving a problem, with specificcomponents such as phases, tasks, methods, techniques and tools . It can be defined also as follows:...

. A subsequent 3.01 release addressed minor issues. Fusebox 3 was something of a sea-change from Fusebox 2. Only the original principles remained relatively unchanged; a Fusebox 2 and Fusebox 3 application are structured very differently.

Fusebox 4

Fusebox 4 was a complete rewrite of Fusebox 3. The license for the core files (which is open source) is held by a private company owned by Hal Helms and John Quarto-von Tivadar: The Fusebox Corporation (which appears to be a defunct corporation).

Fusebox 4.1 introduced some new XML grammar elements beyond those available in 4.0 that let you declare, instantiate and manipulate objects (COM, Java and ColdFusion Components) as well as web services. These features have provided Fusebox developers with the means of tying object-oriented models (i.e. business-logic) directly into their controllers. However, many Fusebox developers used object-oriented or highly-structured models in earlier versions of Fusebox or in the current versions without use of these grammar elements.

Fusebox 5

In 2006, The Fusebox Corporation asked Sean Corfield to take the lead in developing the next iteration of Fusebox. Fusebox 5 was another complete rewrite
Rewrite (programming)
A rewrite in computer programming is the act or result of re-implementing a large portion of existing functionality without re-use of its source code. When the rewrite is not using existing code at all, it is common to speak of a rewrite from scratch...

 with new features and improved performance. Fusebox 5 nearly completely maintained backwards-compatibility with Fusebox 4.1. In November 2006 The Fusebox Corporation transferred ownership of the core files and fusebox website to TeraTech under the guidance of TeraTech president and Fusebox speaker Michael Smith. TeraTech announced that Fusebox will remain open source and is seeking to increase community involvement in the project again. Fusebox 5.1 and all subsequent releases are licensed under the
Apache Source License 2.0.
In February 2007 the members of Team Fusebox met at the Frameworks conference in Bethesda Maryland and created a plan of action for community involvement using volunteers in nine different areas of Fusebox.

Fusebox 5.5

This release focused primarily on adding a set of conventions that allow the creation of Fusebox applications without XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

 configuration files. The use of these new features instead of XML is called "implicit Fusebox".
  • Alpha testing began in June 2007
  • A Public Beta became available at Adobe MAX in October 2007
  • The official release of Fusebox 5.5 became available at the beginning of December 2007

Current Status

The release of Fusebox 5.5.1 in March 2008 was the last release by Sean Corfield. In August 2008, Adam Haskell took over development, but became frustrated with the Fusebox organization, and attempted to branch a new framework called FuseNG (NG for Next Generation, a Star Trek
Star Trek
Star Trek is an American science fiction entertainment franchise created by Gene Roddenberry. The core of Star Trek is its six television series: The Original Series, The Animated Series, The Next Generation, Deep Space Nine, Voyager, and Enterprise...

 reference). FuseNG quickly lost steam and ended without a release.

As it stands now, Fusebox has no future development plan, no developers, and no support if bugs are found. The TeraTech company owns Fusebox and has no plans release it to any other group. The death of Fusebox has been extensively debated.

See also

  • Comparison of web application frameworks
    Comparison of web application frameworks
    This is a comparison of notable web application frameworks.-Perl:-PHP:-Java:-Python:-Ruby:-CFML :-ASP.NET:-Other:-ASP.NET:-C++:-CFML:-Python:-Java:-PHP:-Ruby:-Others:...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK