ColdBox Platform: Difference between revisions
m Bot: link syntax |
m v2.05b - Bot T20 CW#61 - Fix errors for CW project (Reference before punctuation) |
||
(26 intermediate revisions by 16 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|Web application framework}} |
|||
{{Multiple issues| |
{{Multiple issues| |
||
{{Notability|date=June 2021}} |
{{Notability|Products|date=June 2021}} |
||
{{COI|date=June 2021}} |
{{COI|date=June 2021}} |
||
}} |
}} |
||
Line 26: | Line 28: | ||
'''ColdBox''' is a [[Free software|free]], [[open-source software|open-source]], conventions-based, modular [[web application framework]] intended for building [[Enterprise software|enterprise applications]] with [[ColdFusion Markup Language|ColdFusion]] ([[ColdFusion Markup Language|CFML]]) using a [[Hierarchical model–view–controller|Hierarchical MVC]] approach. |
'''ColdBox''' is a [[Free software|free]], [[open-source software|open-source]], conventions-based, modular [[web application framework]] intended for building [[Enterprise software|enterprise applications]] with [[ColdFusion Markup Language|ColdFusion]] ([[ColdFusion Markup Language|CFML]]) using a [[Hierarchical model–view–controller|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 with a scaffold on which to base their applications. As a result, they don’t have to reinvent the wheel on most concerns they have to consider when building web applications. The framework gives developers the proper tooling to do their job quickly, securely, modularly, and flexibly. |
|||
ColdBox was created by Luis F. Majano and first open sourced in June of 2006.<ref>{{Cite web|title=Introducing ColdBox. An open source Coldfusion Framework|url=https://www.luismajano.com/blog/introducing-coldbox-an-open-source-coldfusion-framework|access-date=2021-06-10|website=www.luismajano.com|language=en}}</ref> |
|||
The [[source code]] of ColdBox and its companion libraries are hosted on [[GitHub]] and licensed under the terms of the [[Apache License, Version 2.0|Apache License v2]].<ref>{{cite news |title=Fresh Ventures Webdesign & SEO |url=https://fresh-ventures.de/ |access-date=17 May 2024}}</ref> |
|||
ColdBox uses [[Convention over configuration]] and aims for simplicity, rapid development. It makes use of [[Model-view-controller]], [[Dependency injection]], [[Unit testing]], [[Aspect-oriented programming]] [[architectural pattern (computer science)|architectural patterns]]. ColdBox allows for development of stand-alone modules which can be shared across apps. ColdBox is an active and heavily documented CFML framework.<ref>[http://www.amcomtech.net/whitepapers/MVC%20Framework%20Analysis.pdf ColdFusion MVC Framework]</ref> |
|||
The [[source code]] of ColdBox and its companion libraries are hosted on [[GitHub]] and licensed under the terms of the [[Apache License, Version 2.0|Apache License v2]]. |
|||
== History == |
== 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|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|Hierarchical Model View Controller]] was set as its core foundation design pattern. In the last few years, it introduced tight integration to [[Java (programming language)|Java]]'s `CompletableFuture` API to support [[Futures and promises|Futures and Promises]] and [[Asynchrony (computer programming)|asynchronous]]/[[Parallel computing|parallel]] programming. |
|||
* ColdBox was developed by Luis Majano and open sourced for the first time in 2006. |
|||
* ColdBox became a [[Professional open-source|professional open source]] project in 2008, when professional services were offered by the parent company Ortus Solutions, Corp. |
|||
* In 2011 it introduced [[Hierarchical model–view–controller|Hierarchical Model View Controller]] as its core foundation design pattern. |
|||
* In 2020 it introduced tight integration to [[Java_(programming_language)|Java]]'s '''CompletableFuture''' API to support [[Futures_and_promises|Futures and Promises]] and [[Asynchrony_(computer_programming)|asynchronous]]/[[Parallel_computing|parallel]] programming. |
|||
* Latest release is version 6.4.0 (April 20, 2021)<ref>{{Cite web|title=ColdBox 6.4.0 Released - Welcome to the land of Scheduled Tasks|url=https://www.ortussolutions.com/blog/coldbox-640-released-welcome-to-the-land-of-scheduled-tasks|access-date=2021-06-10|website=www.ortussolutions.com|language=en}}</ref> |
|||
== Platforms == |
|||
ColdBox is supported on [[Lucee]] (A popular open source CFML engine) and [[Adobe_ColdFusion|Adobe's ColdFusion]] application servers. |
|||
It has supported IDE plugins for, [[Visual Studio Code]], [https://packagecontrol.io/packages/ColdBox%20Platform Sublime Text], Eclipse IDE, and [https://web.archive.org/web/20150710030416/http://www.coldbox.org/forgebox/view/ColdBox-Platform-Utilities Adobe ColdFusion Builder]. |
|||
== Usage == |
|||
Below is a list of some notable users of the Coldbox Platform.<ref>http://www.ortussolutions.com/products/coldbox#overview</ref> |
|||
* [[Adobe Systems|Adobe]] |
|||
* [[Esri]] |
|||
* [[FAA]] |
|||
* [[GE]] |
|||
* [[Kennedy Space Center]] |
|||
* [[NASA JPL]] |
|||
* [[Railo]] |
|||
* [[Lucee]] |
|||
* [[L'Oréal]] |
|||
* [[US Airforce]] |
|||
* [[US Navy]] |
|||
* [[Success Academy Charter Schools]] |
|||
* [[American Youth Soccer Organization]] |
|||
* [[Los Angeles County Museum of Art]] |
|||
== Overview == |
|||
High-level attributes of ColdBox: |
|||
* An [[Hierarchical model–view–controller|HMVC]] web framework for the [[ColdFusion]] platform. |
|||
* [[Modular programming|Modular development platform]] to provide [[Hierarchical model–view–controller|HMVC]] architectural patterns |
|||
* Conventions over configurations (No XML) |
|||
* Integrates with [[Hibernate (Java)|Hibernate]] ColdFusion ORM |
|||
* Offers a consistent framework aiming to reduce confusion and be easy to learn |
|||
* [[Persistence (computer science)|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 (programming)|Ajax]] support which is easy to extend and customize |
|||
* [[RESTful]] and [[SOAP]] web service support<ref>[http://cookbooks.adobe.com/post_How_do_you_build_a_RESTful_service_in_ColdFusion_u-17901.html How do you build a RESTful service in ColdFusion]</ref> |
|||
* 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. |
|||
=== Internal Frameworks === |
|||
The ColdBox Platform comprises three independent frameworks: |
|||
* '''[http://logBox.ortusbooks.com LogBox]''' - Logging Library |
|||
* '''[http://wireBox.ortusbooks.com WireBox]''' - Dependency Injection and AOP library |
|||
* '''[http://cacheBox.ortusbooks.com CacheBox]''' - Caching Engine and Aggregator |
|||
* '''[http://coldbox.ortusbooks.com ColdBox MVC]''' - MVC conventions based web framework |
|||
=== 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:<!-- nb: language is cfml/cfscript, but WP has no lang for those. --> |
|||
<syntaxhighlight lang="java" line="1"> |
|||
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" ); |
|||
} |
|||
} |
|||
</syntaxhighlight> |
|||
=== URL Mappings === |
|||
ColdBox supports URL mappings and routing Rails style but adapted for ColdFusion. It also supports the creation of RESTful routing: |
|||
<syntaxhighlight lang="java" line="1"> |
|||
// 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" ); |
|||
</syntaxhighlight> |
|||
=== 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: |
|||
<pre> |
|||
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 |
|||
</pre> |
|||
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. |
|||
== Documentation Links == |
|||
*[http://coldbox.ortusbooks.com ColdBox MVC] |
|||
*[http://wirebox.ortusbooks.com WireBox Dependency Injection] |
|||
*[http://cachebox.ortusbooks.com CacheBox] |
|||
*[http://logbox.ortusbooks.com LogBox] |
|||
==External links== |
==External links== |
||
*[http://www.ortussolutions.com/products/coldbox/ Official site] |
*[http://www.ortussolutions.com/products/coldbox/ Official site] |
||
*[https://github.com/coldbox GitHub code repository] |
|||
*[http://apidocs.ortussolutions.com Online API] |
|||
*[http://www.forgebox.io ForgeBox - community based code sharing] |
|||
*[https://groups.google.com/coldbox Help Google Group] |
|||
== References == |
== References == |
||
{{Reflist}} |
{{Reflist}}{{Application frameworks}} |
||
{{Application frameworks}} |
|||
{{CFML programming language}} |
{{CFML programming language}} |
||
Latest revision as of 07:54, 9 October 2024
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
Original author(s) | Ortus Solutions, Corp |
---|---|
Initial release | June 15, 2006 |
Stable release | |
Repository | ColdBox Repository |
Written in | CFML, Java |
Type | Web application framework |
License | Apache License v2 |
Website | ColdBox.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 with a scaffold on which to base their applications. As a result, they don’t have to reinvent the wheel on most concerns they have to consider when building web applications. The framework gives developers the proper tooling to do their job quickly, securely, modularly, and flexibly.
The source code of ColdBox and its companion libraries are hosted on GitHub and licensed under the terms of the Apache License v2.[2]
History
[edit]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.
External links
[edit]References
[edit]- ^ "ColdBox Platform Versions". forgebox.io. Retrieved 2024-05-14.
- ^ "Fresh Ventures Webdesign & SEO". Retrieved 17 May 2024.