Jump to content

ColdBox Platform: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Lmajano (talk | contribs)
m Update latest release
Lmajano (talk | contribs)
m External link updates, google group was deprecated
Line 216: Line 216:
*[http://apidocs.ortussolutions.com Online API]
*[http://apidocs.ortussolutions.com Online API]
*[http://www.forgebox.io ForgeBox - community based code sharing]
*[http://www.forgebox.io ForgeBox - community based code sharing]
*[https://groups.google.com/coldbox Help Google Group]
*[https://community.ortussolutions.com Community Forums]


== References ==
== References ==

Revision as of 15:02, 21 February 2023

ColdBox Platform
Original author(s)Ortus Solutions, Corp
Initial releaseJune 15, 2006 (2006-06-15)
Stable release
7.3.0[1] / 2024-05-14[±]
RepositoryColdBox Repository
Written inCFML, Java
TypeWeb application framework
LicenseApache License v2
WebsiteColdBox.org

ColdBox is a free, open-source, conventions-based, modular web application framework intended for building enterprise applications with ColdFusion (CFML) using a Hierarchical MVC approach.

It is a set of tools and methodologies that can allow a developer to build their web applications in a modern and secure way.  It also provides them a scaffold to which to base their applications on. As a result, they don’t have to reinvent the wheel on the majority of concerns when they have to think about when building web applications.  The framework gives developers the right tooling to get their job done quickly, securely, modularly and in a flexible way.

The source code of ColdBox and its companion libraries are hosted on GitHub and licensed under the terms of the Apache License v2.

History

ColdBox was developed and created by Luis F. Majano in 2006 and it has become the most widely used and maintained MVC framework. Given its speed and scalability, ColdBox evolved into a performant and simple framework that empowered developers. It became a professional open source project in 2008, when professional services were offered by the parent company Ortus Solutions, Corp. Later, in 2011 the Hierarchical Model View Controller was set as its core foundation design pattern. In the last few years it introduced tight integration to Java's CompletableFuture API to support Futures and Promises and asynchronous/parallel programming. Currently, the latest release is version 6.8.1 (August 11, 2022).

Capabilities

  • An HMVC web framework for the ColdFusion platform.
  • Modular development platform to provide HMVC architectural patterns
  • Conventions over configurations (No XML)
  • Integrates with Hibernate ColdFusion ORM
  • Offers a consistent framework aiming to reduce confusion and be easy to learn
  • Persistence abstraction layers (caching)
  • Built-in logging library
  • Built-in dependency injection and AOP capabilities
  • Internal Domain Specific Languages to define caching, DI/AOP, logging and mocking
  • Ability to do unit and integration testing
  • Ajax support which is easy to extend and customize
  • RESTful and SOAP web service support
  • Adobe Flex/Air integration and monitoring
  • Provides multi-development environment capabilities
  • Prolific Documentation
  • Integrates natively with Java's CompletableFuture API to support futures and promises.

Platforms

ColdBox is supported on Lucee (A popular open source CFML engine) and Adobe's ColdFusion application servers.It has supported IDE plugins for, Visual Studio Code, Sublime Text, Eclipse IDE, and Adobe ColdFusion Builder

ColdBox Universe

The ColdBox Platform is composed of several internal standalone libraries that can be used with any CFML Framework or none at all. Its library includes:

  • LogBox - Logging Library
  • WireBox - Dependency Injection and AOP library
  • CacheBox - Caching Engine and Aggregator
  • TestBox - Testing framework for ColdFusion

Usage

Below is a list of some notable users of the Coldbox Platform.[2]

Installation

Getting started is easy with ColdBox, WireBox, CacheBox or LogBox in any ColdFusion (CFML) application since just CommandBox, the CLI and package manager, should be leveraged. These commands run from the CommandBox interactive shell.

Controllers

ColdBox is conventions-based framework that is programmed in CFML, differing from other CFML MVC frameworks that use XML declarative logic for their controllers.

Below is an example of a controller:

component{

	// Use Dependency injection for hibernate based virtual services
	property name="userService" inject="entityservice:User";
	
	/**
	* Return immediate HTML
	*/
	function sayHello(event){
	 	return "hello";
	}

	/**
	* Return immediate JSON from an ORM object's memento
	*/
	function sayHello(event){
	 	return userService.get( rc.id ).getMemento();
	}
	
	/**
	* Return content in multiple formats
	*/
	function list(event){
		prc.data = userService.list();
	 	// render out all users in json format
		event.renderData( data=prc.data, formats="json,xml,pdf,html" );
	}
}

URL mappings

ColdBox supports URL mappings and routing Rails style but adapted for ColdFusion. It also supports the creation of RESTful routing:

// Resources 
resource( "photos" );

// Nested Resources
resources(
	resource 	= "agents",
	pattern 	= "/sites/:id/agents"
);

// Redirects
route( "/oldRoute" )
	.toRedirect( "/main/redirectTest" );

// Direct Routing
route( "/render/:format" ).to( "actionRendering.index" );

// With Regex
route( "post/:postID-regex:([a-zA-Z]+?)/:userID-alpha/regex:(xml|json)" )
	.to( "ehGeneral.dumpRC" );

// subdomain routing
route( "/" )
	.withDomain( ":username.forgebox.dev" )
	.to( "subdomain.show" );

// Responses + Conditions
route( "/ff" )
	.withCondition( function(){
		return ( findnocase( "Firefox", cgi.HTTP_USER_AGENT ) ? true : false );
	} )
	.toResponse( "Hello FireFox" );
route( "/luis/:lname" )
	.toResponse( "<h1>Hi Luis {lname}, how are {you}</h1>", 200, "What up dude!" );

// Inline Closure Responses
route( "/luis2/:lname" )
	.toResponse( function( event, rc, prc ){
		return "<h1>Hello from closure land: #arguments.rc.lname#</h1>";
	} );

// Views No Events
route( "contactus" )
	.as( "contactUs")
	.toView( "simpleView" );

// Named routes
route( pattern="/routeRunner/:id/:name", name="routeRunner" )
	.to( "main.returnTest" );

// Grouped Routing
group( { pattern="/runAWNsync", handler="utilities.AWNsync" }, function( options ){
	route( '/:user_id' )
		.withAction( { get = "runAWNsync", options = "returnOptions" } )
		.end();
} );

// RESTFul Actions
route( "/health_check" )
	.withAction( { get = "runCheck", options = "returnOptions" } )
	.to( "utilities.HealthCheck" );

RESTful URLs

ColdBox allows for easy creation of RESTful URLs via URL mappings and extension detection. Natively ColdBox can detect any extension when supplied to an URI resource:

http://api.coldbox.org/rest/user/luis.json
http://api.coldbox.org/rest/user/luis.xml
http://api.coldbox.org/rest/user/luis.pdf
http://api.coldbox.org/rest/user/luis.yml

It allows for the detection of such extensions, security around them and the ability to customize the extensions.

Ajax support

ColdBox supports all JavaScript frameworks that provide Ajax capabilities. It also provides an auto-marshalling function to render any object to the following formats natively: XML, WDDX, JSON, JSONP, TEXT, PDF, CUSTOM.

SOAP-Adobe Flex/Air support

ColdBox offers support for creating, monitoring and developing SOAP web services and Flex/Air remote components. It allows for having one development paradigm for multiple GUI interfaces.

References

  1. ^ "ColdBox Platform Versions". forgebox.io. Retrieved 2024-05-14.
  2. ^ "ColdBox MVC".