Introducing ColdBox. An open source Coldfusion Framework
ColdBox is a proven event-driven CFC based ColdFusion Framework, specifically designed for high availability web applications. The purpose behind ColdBox was to create a fast & stable development methodology that could be shared among several developers. It makes use of an MVC (Model View Controller) design pattern implemented via CFC's. I introduce the concept of event handler CFC's that hold all the code necessary to prepare views, call model CFC's, use ColdBox plugins, and redirect requests through the ColdBox Controller. You can consider the event handlers to be all that code that you had on top of your templates, but now moved to an Object Oriented pattern. You can look at the MVC Design Pattern diagram below:
ColdBox uses both implicit and explicit invocation methods. You have one single xml file: config.xml, from where you can configure your entire application and plugins. You can use ColdSpring, Reactor, Remoting, CRUD, Bean/DAO Factories or any other technology and/or pattern that you can think off with ColdBox. However, ColdBox does make you adhere to an application directory structure and some naming conventions. This is done with the purpose of creating a standard for all developers in the same team to share and for ColdBox to find what it needs. You are only limited by your ingenuity.ColdBox also uses a request collection where all variables can be shared among an execution request. The Request Collection is a central repository of information that is refreshed on every user request. This is how data gets moved around from event handlers to views and layouts.Another important feature is the use of a plugin library of CFC's that extend the normal usage of ColdBox to application specific tasks but without hindering system performance. These plugins are reusable components that your applications can use for application-specific tasks and can be loaded on demand via a Plugin Factory. Thus, your plugins are not utilized or loaded into a scope, they are just invoked. Some samples are: i18n, resource bundles, refresh a webservice stub, Bug Reports, java file utilities, etc. This is a major difference between ColdBox and any other framework, in that it gives you a set of reusable on-demand components for tedious or repeatable application-specific tasks.Below you can see an overview diagram of how ColdBox works, you do not need to install special software on your web server or radically modify your coldfusion installation. You can explore this site to find more information about ColdBox. If you need to contact me please use the Contact button in the navigation bar.
ColdBox Overview:
ColdBox Capabilities & Features
- MVC Design pattern
- PROVEN & TESTED for high availabilty and mission critical applications
- Multi-Layout & View concept (Can be programmed at runtime if needed)
- One Centralized Variable Collection for data
- One config.xml for implicit invocation and setup
- Event Handler CFC's
- Event Chaining
- Support for Child Applications
- Supports as many as you want child applications
- No extra configurations, just point to the parent's system folder
- ColdBox auto-senses if it is in a Parent or Child Application
- ColdBox auto calculates the distance to its parent if parent code is neededBug Reports
- Event Handler Execution Profiling
- UDF Library usage (Optional, for legacy)
- Small footprint controller
- Optimized for high traffic sites
- Incorporated ColdBox Dashboard (Optional)
- Online System Update
- Online API
- Main Application Config.xml Editor
- Online Backups
- Framework extensions through Plugins
- Logger (Bug Tracking, Tracers)
- Renderer (Render Logs, Views, Layouts,etc)
- FileUtilities (Java Utilities, File Utilities)Webservices (instantiation, refresh, etc)
- ClientStorage (Permanent variable storage for clustered environment uses WDDX)Messagebox (Universal Error/Warning/Information messagebox)
- Settings (ColdBox metadata and dashboard utility)Zip (A great zip utility plugin by Arthur Kordowski)
- cfcViewer (A cfc metadata retriever by Oscar Arevalo )
Hope this can give you a better insight into what ColdBox is and what it can do. I will start posting more information as I progress.