WireBox
Encyclopedia
WireBox is an enterprise web application framework
for the ColdFusion
application programming language, inspired by Google Guice
and the Java Spring Framework. It was created by Luis Majano & Ortus Solutions and provides Dependency injection
, inversion of control
and aspect-oriented programming
design pattern
capabilities in an effort to make the configuration and dependencies of ColdFusion components (CFCs) easier to manage and consume. It relies on the fact of using annotations, programmatic configurations (no XML), life cycle scopes and event driven messaging to produce highly reliable DI and AOP patterns.
WireBox alleviates the need for custom object factories or manual object creation in ColdFusion applications. It provides a standardized approach to object construction and assembling that will make your code easier to adapt to changes, easier to test, mock
and extend. WireBox leverages an array of object, function, and property metadata annotations to make your object assembling, storage and creation. It uses the power of event driven architecture via object listeners or interceptors for extending not only WireBox but the way objects are analyzed, created, and wired. The AOP capabilities are all driven by an AOP listener which decouples itself from WireBox code and is standalone. WireBox uses the WireBox Programmatic Mapping DSL (Domain Specific Language) to define object construction and relationships in pure ColdFusion (No XML!).
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 the 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...
application programming language, inspired by Google Guice
Google Guice
Google Guice is an open source software framework for the Java platform released by Google under an Apache license. It provides support for dependency injection using annotations to configure Java objects...
and the Java Spring Framework. It was created by Luis Majano & Ortus Solutions and provides Dependency injection
Dependency injection
Dependency injection is a design pattern in object-oriented computer programming whose purpose is to improve testability of, and simplify deployment of components in very large software systems....
, inversion of control
Inversion of Control
In software engineering, Inversion of Control is an abstract principle describing an aspect of some software architecture designs in which the flow of control of a system is inverted in comparison to procedural programming....
and aspect-oriented programming
Aspect-oriented programming
In computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns...
design pattern
Design pattern (computer science)
In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that...
capabilities in an effort to make the configuration and dependencies of ColdFusion components (CFCs) easier to manage and consume. It relies on the fact of using annotations, programmatic configurations (no XML), life cycle scopes and event driven messaging to produce highly reliable DI and AOP patterns.
Motivation
WireBox's inspiration has been based on the idea of rapid workflows when building object oriented ColdFusion applications, programmatic configurations and simplicity. With that motivation it introduced dependency injection by annotations and conventions, which has been the core foundation of WireBox.WireBox alleviates the need for custom object factories or manual object creation in ColdFusion applications. It provides a standardized approach to object construction and assembling that will make your code easier to adapt to changes, easier to test, mock
Mock object
In object-oriented programming, mock objects are simulated objects that mimic the behavior of real objects in controlled ways. A programmer typically creates a mock object to test the behavior of some other object, in much the same way that a car designer uses a crash test dummy to simulate the...
and extend. WireBox leverages an array of object, function, and property metadata annotations to make your object assembling, storage and creation. It uses the power of event driven architecture via object listeners or interceptors for extending not only WireBox but the way objects are analyzed, created, and wired. The AOP capabilities are all driven by an AOP listener which decouples itself from WireBox code and is standalone. WireBox uses the WireBox Programmatic Mapping DSL (Domain Specific Language) to define object construction and relationships in pure ColdFusion (No XML!).
Features At A Glance
Here are a simple listing of features WireBox implements- Annotation driven dependency injection
- 0 configuration mode or a programmatic binder configuration approach via ColdFusion (No XML!)
- Creation and Wiring of or by:
- ColdFusion Components
- Java Classes
- RSS Feeds
- WebService objects
- Constant values
- DSL string building
- Factory Methods
- Multiple Injection Styles:
- Property
- Setter
- Methods
- Constructor
- Automatic Package/Directory object scanning and registration
- Multiple object life persistence scopes:
- No Scope (Transients)
- Singletons
- Request Scoped
- Session Scoped
- Application Scoped
- Server Scoped
- CacheBox Scoped
- Integrated logging via LogBox, never try to figure out what in the world the DI engine is doing
- Parent Factories
- Factory Method Object Creations
- Object life cycle events via WireBox Listeners/Interceptors
- Built in adapters for integrating:
- ColdSpring
- ColdSpring 2
- LightWire
- Autowiring Injection DSL
- Customizable injection DSL
- Create your own injection DSL annotations
- WireBox object providers to avoid scope-widening issues on time/volatile persisted objects
- When requesting an instance you can pass a structure of arguments to passthrough to the object's constructor when initialized.