ColdBox es un marco de aplicación web modular gratuito , de código abierto , basado en convenciones y diseñado para crear aplicaciones empresariales con ColdFusion ( CFML) utilizando un enfoque MVC jerárquico .
Autor (es) original (es) | Ortus Solutions, Corp |
---|---|
Versión inicial | 15 de junio de 2006 |
Lanzamiento estable | 6.4.0 [1] / 2021-04-20 [±] |
Repositorio | Repositorio ColdBox |
Escrito en | CFML , Java |
Tipo | Marco de aplicación web |
Licencia | Licencia de Apache v2 |
Sitio web | ColdBox.org |
ColdBox fue creado por Luis F. Majano y se abrió por primera vez en junio de 2006 [2] .
ColdBox utiliza la convención sobre la configuración y tiene como objetivo la simplicidad y el desarrollo rápido. Hace uso de modelo-vista-controlador , inyección de dependencia , pruebas unitarias , patrones arquitectónicos de programación orientada a aspectos . ColdBox permite el desarrollo de módulos independientes que se pueden compartir entre aplicaciones. ColdBox es un marco CFML activo y muy documentado. [3]
El código fuente de ColdBox y sus bibliotecas complementarias están alojados en GitHub y tienen licencia según los términos de la licencia Apache v2 .
Historia
- ColdBox fue desarrollado por Luis Majano y de código abierto por primera vez en 2006.
- ColdBox se convirtió en un proyecto profesional de código abierto en 2008, cuando la empresa matriz Ortus Solutions, Corp. ofreció servicios profesionales.
- En 2011, introdujo el controlador de vista de modelo jerárquico como su patrón de diseño de base central.
- En 2020 introdujo una estrecha integración con la API CompletableFuture de Java para admitir Futures and Promises y programación asincrónica / paralela .
- La última versión es la 6.4.0 (20 de abril de 2021) [4]
Plataformas
ColdBox es compatible con Lucee (un popular motor CFML de código abierto) y los servidores de aplicaciones ColdFusion de Adobe .
Ha admitido complementos IDE para Visual Studio Code , Sublime Text , Eclipse IDE y Adobe ColdFusion Builder .
Uso
A continuación se muestra una lista de algunos usuarios notables de la plataforma Coldbox. [5]
Descripción general
Atributos de alto nivel de ColdBox:
- Un marco web HMVC para la plataforma ColdFusion .
- Plataforma de desarrollo modular para proporcionar patrones arquitectónicos HMVC
- Convenciones sobre configuraciones (sin XML)
- Se integra con Hibernate ColdFusion ORM
- Ofrece un marco coherente con el objetivo de reducir la confusión y ser fácil de aprender.
- Capas de abstracción de persistencia (almacenamiento en caché)
- Biblioteca de registro incorporada
- Inyección de dependencia incorporada y capacidades AOP
- Idiomas específicos del dominio interno para definir el almacenamiento en caché, DI / AOP, registro y simulacro
- Capacidad para realizar pruebas unitarias y de integración
- Soporte Ajax que es fácil de ampliar y personalizar.
- Soporte de servicios web RESTful y SOAP [6]
- Integración y supervisión de Adobe Flex / Air
- Proporciona capacidades de entorno de desarrollo múltiple
- Documentación prolífica
- Se integra de forma nativa con la API CompletableFuture de Java para respaldar futuros y promesas.
Marcos internos
La plataforma ColdBox consta de tres marcos independientes:
- LogBox - Biblioteca de registro
- WireBox - Inyección de dependencias y biblioteca AOP
- CacheBox : motor de almacenamiento en caché y agregador
- ColdBox MVC - marco web basado en convenciones MVC
Controladores
ColdBox es un marco basado en convenciones que está programado en CFML, a diferencia de otros marcos CFML MVC que utilizan lógica declarativa XML para sus controladores.
A continuación se muestra un ejemplo de un controlador:
componente {// Utilice la inyección de dependencia para servicios virtuales basados en hibernación nombre de propiedad = "userService" inject = "entityservice: Usuario" ;/ *** Devuelve HTML inmediato* /function sayHello ( evento ) { devolver "hola" ;}/ *** Devuelve JSON inmediato desde el recuerdo de un objeto ORM* /function sayHello ( evento ) { return userService . obtener ( rc . id ). getMemento ();}/ *** Devolver contenido en múltiples formatos* / lista de funciones ( evento ) {prc . datos = userService . lista (); // renderizar todos los usuarios en formato jsonevento . renderData ( datos = prc . datos , formatos = "json, xml, pdf, html" );}}
Asignaciones de URL
ColdBox admite mapeos de URL y enrutamiento estilo Rails pero adaptado para ColdFusion. También admite la creación de enrutamiento RESTful:
// Recursos recurso ( "fotos" );// Recursos anidadosrecursos (recurso = "agentes" ,patrón = "/ sitios /: id / agentes");// redireccionamientosruta ( "/ oldRoute" ). toRedirect ( "/ main / redirectTest" );// Enrutamiento directoruta ( "/ render /: formato" ). to ( "actionRendering.index" );// Con Regexroute ( "post /: postID-regex: ([a-zA-Z] +?) /: userID-alpha / regex: (xml | json)" ). a ( "ehGeneral.dumpRC" );// enrutamiento del subdominioruta ( "/" ). withDomain ( ": username.forgebox.dev" ). to ( "subdominio.show" );// Respuestas + Condicionesruta ( "/ ff" ). withCondition ( function () {return ( findnocase ( "Firefox" , cgi . HTTP_USER_AGENT ) ? verdadero : falso );} ). toResponse ( "Hola FireFox" );ruta ( "/ luis /: lname" ). toResponse ( "" , 200 , "¿Qué tal amigo?" );// Respuestas de cierre en línearuta ( "/ luis2 /: lname" ). toResponse ( función ( evento , rc , prc ) {return "" ;} );// Vistas sin eventosruta ( "contactus" ). como ( "contactUs" ). toView ( "simpleView" );// Rutas nombradasruta ( patrón = "/ routeRunner /: id /: name" , name = "routeRunner" ). to ( "main.returnTest" );// Enrutamiento agrupadogrupo ( { patrón = "/ runAWNsync" , handler = "utilities.AWNsync" }, función ( opciones ) {ruta ( ' / : user_id ' ). withAction ( { get = "runAWNsync" , options = "returnOptions" } ). fin ();} );// Acciones RESTFulruta ( "/ health_check" ). withAction ( { get = "runCheck" , options = "returnOptions" } ). to ( "utilities.HealthCheck" );
URL RESTful
ColdBox permite la creación sencilla de URL RESTful mediante asignaciones de URL y detección de extensiones. De forma nativa, ColdBox puede detectar cualquier extensión cuando se suministra a un recurso URI:
http://api.coldbox.org/rest/user/luis.jsonhttp://api.coldbox.org/rest/user/luis.xmlhttp://api.coldbox.org/rest/user/luis.pdfhttp://api.coldbox.org/rest/user/luis.yml
Permite la detección de dichas extensiones, la seguridad a su alrededor y la capacidad de personalizar las extensiones.
Soporte Ajax
ColdBox es compatible con todos los marcos de JavaScript que proporcionan capacidades Ajax. También proporciona una función de clasificación automática para representar cualquier objeto en los siguientes formatos de forma nativa: XML, WDDX, JSON, JSONP, TEXT, PDF, CUSTOM.
Soporte SOAP-Adobe Flex / Air
ColdBox ofrece soporte para crear, monitorear y desarrollar servicios web SOAP y componentes remotos Flex / Air. Permite tener un paradigma de desarrollo para múltiples interfaces GUI.
Enlaces de documentación
- ColdBox MVC
- Inyección de dependencia WireBox
- CacheBox
- LogBox
enlaces externos
- Sitio oficial
- Repositorio de código de GitHub
- API en línea
- ForgeBox: uso compartido de código basado en la comunidad
- Grupo de ayuda de Google
Referencias
- ^ "Versiones de la plataforma ColdBox" . forgebox.io . Consultado el 20 de abril de 2021 .
- ^ "Presentación de ColdBox. Un marco de Coldfusion de código abierto" . www.luismajano.com . Consultado el 10 de junio de 2021 .
- ^ Marco ColdFusion MVC
- ^ "Lanzamiento de ColdBox 6.4.0 - Bienvenido a la tierra de las tareas programadas" . www.ortussolutions.com . Consultado el 10 de junio de 2021 .
- ^ http://www.ortussolutions.com/products/coldbox#overview
- ^ ¿Cómo se construye un servicio RESTful en ColdFusion?