ColdBox Overview

ColdBox is an event-driven, convention, based ColdFusion Development Platform. It provides a set of reusable code and tools that can be used to increase your development productivity, as well as a development standard for working in team environments. ColdBox is comprehensive and modular, which helps address most infrastructure concerns of typical ColdFusion applications. It also goes places that other frameworks do not.

For more information go to http://ortus.svnrepository.com/coldbox/trac.cgi/wiki/ColdBox

What are some of ColdBox's Novel Features

Documentation

We are firm believers in developer education. We have over 30 step by step guides and over 550 pages worth of documentation right in this wiki. We believe that by empowering the user with knowledge, the adaptation rate will increase and the ability of the developer to find what they need will make their productivity increase.

Custom Conventions

Conventions over configurations is our motto. We get rid of verbosity of xml logic and use ColdFusion and a set of conventions for our applications. With ColdBox you can even define your own application layouts and conventions. This gives great flexibility to developers who are used to their own application layouts and conventions. Conventions are also used for registering events, interceptors, plugins and much more. The use of conventions over configurations is what makes ColdBox unique.

Coldfusion Controllers instead of XML Controllers

ColdBox doesn't rely on xml declarative logic where you have to define an event, what it does and where does it go. ColdBox is a conventions based framework that will let you program in ColdFusion to get things done. You basically expose methods on event handler CFC's (Controllers) by turning their access to public or remote. The framework then will auto-register the handler CFC's and now you are able to use the methods as ColdBox Events. So the declarative logic is now placed within the methods, where you can place method exit points, what business logic to call and what view to render or what event to surrender execution to or whatever you like, in CODE. This is how ColdBox can help you create multi-layered applications with one single skeleton and configuration file. So instead of working with a long and complex configuration file all the time, you are mostly working with ColdFusion code all the time. You would use the configuration file to setup your project or maybe tweak some settings.

Aspect programming & Application Debugger

ColdBox comes bundled with an extensive set of plugins and interceptors that will help you on every day software application tasks like bug reports and notifications, AOP file logging with auto-archiving, per-environment settings, storage facilities for cluster environments, object caching, datasource declarations, web services integrations, internationalization, IoC integrations, application security, pretty URL's via SES and so much more. ColdBox is not only an MVC framework but a development platform.

ColdBox Dashboard

The ColdBox Dashboard is a visual application that helps you configure your framework installation and has tools for code generation. It is also a self-documenting application that will help you learn about the framework. You can modify all of the framework configurations, read documentation and it is tightly integrated to this site for you to search the wiki, svn repository, and ticket reports, and much more.

ColdBox Caching

ColdBox has an advanced memory aware and configurable caching engine. You have several tuning parameters for the cache and also visual cache reports in the debugging panel. You can actually see how many objects and what type of objects are in your cache, the efficiency of your cache and the tuning parameters. This feature will help developers save time and actually not have to worry about persistence. ColdBox also allows for event caching, in which the HTML output events produce will be cached by the framework and presented to users. This will enhance applications and system stability. The best part of it is that you use metadata in the cfcomponent and cffunction tags to actually declare caching parameters. ColdBox also allows for extensive view caching and on-demand render and cache capabilities. To top it off, the caching engine has an event broadcaster model built-in that can advice you off new objects and object removals.

Unit & Integration Testing

ColdBox is a framework based on objects and Unit Testing is an integral part of development, then why shouldn't you be able to unit test your handlers and provide you with integration testing? Well, Unit Testing is part of ColdBox. ColdBox includes a unit testing feature to let you do integration testing and test the entire application by testing your event handlers. You can event test relocations and re-routing.

ColdBox Proxy: Flex/Air/Remote Integration

The ColdBox proxy enables remote applications like Flex and AIR to communicate with ColdBox and provide an event model for those applications. Not only that, but you can reinitialize the entire application, get settings, and yes, announce custom or core interceptions. You can create custom interceptor chains for your model that can be executed asynchronously when a user hits a save record button for example. You can create a Service Layer with built-in environmental settings, logging, error handling, event interception and chaining, you name it, and the possibilities are endless.

Not only that, but this enables you to actually create any amount of front ends using the same reusable ColdBox and model code. The code is the same, you create event handlers, you interact with a request collection, with core and custom plugins, but you don't set views or layouts because the framework is now a remote framework for your model. So what do you do, well, return data, arrays, xml, and value objects. Anything, right from within the event handlers or setup a configuration setting that tells the framework to always return the request collection.