ColdFusion Markup Language , más conocido como CFML , es un lenguaje de secuencias de comandos para el desarrollo web que se ejecuta en JVM , .NET Framework y Google App Engine . Se encuentran disponibles múltiples implementaciones comerciales y de código abierto de motores CFML, incluidos Adobe ColdFusion , Lucee , New Atlanta BlueDragon (que ofrece una versión basada tanto en Java como en .NET), Railo y Open BlueDragon , así como otros motores de servidor CFML. .
Paradigma | imperativo , orientado a objetos |
---|---|
Diseñada por | Jeremy Allaire |
Desarrollador | Adobe Systems ( ColdFusion ), Lucee Association ( Lucee ), New Atlanta y aw2.0 ( openBD ), The Railo Company ( Railo ) |
Apareció por primera vez | 1995 |
Lenguaje de implementación | Java |
SO | Multiplataforma |
Licencia | Depende de la implementación. Los motores patentados , con licencia LGPL y GPL están disponibles. |
Extensiones de nombre de archivo | .cfm, .cfc |
Sitio web | www |
Implementaciones importantes | |
Adobe ColdFusion , Lucee , Railo , BlueDragon , abierto BlueDragon | |
Influenciado | |
Lucee |
Sinopsis
En su forma más simple, como muchos otros lenguajes de secuencias de comandos web, CFML aumenta los archivos HTML estándar con comandos de base de datos , operadores condicionales , funciones de formato de alto nivel y otros elementos para producir aplicaciones web . [1] [2] CFML también incluye muchas otras construcciones, incluidos ColdFusion Components (CFC), la versión de objetos de CFML , que permite separar la lógica empresarial de la presentación.
CFML se puede escribir utilizando etiquetas o CFScript , que se parece a JavaScript ( secuencia de comandos ECMA ).
Las páginas en una aplicación CFML incluyen las etiquetas y funciones CFML del lado del servidor además de las etiquetas HTML, y las aplicaciones CFML modernas también tienden a tener CFC a los que acceden las páginas CFML para ejecutar la lógica empresarial. Cuando un navegador web solicita una página en una aplicación ColdFusion, el servidor de aplicaciones ColdFusion la procesa automáticamente . [3]
CFML también se puede utilizar para generar otros lenguajes, además de HTML, como XML , JavaScript , CSS , etc.
A pesar del nombre, CFML no es un lenguaje de marcado. Tampoco es SGML , ya que ciertas características centrales de CFML impiden que cumpla.
El motor CFML está configurado de tal manera que ciertas extensiones de archivo en el servidor (.cfm, .cfc) se transfieren al motor CFML para su procesamiento. En el caso de los motores basados en Java, esto se logra mediante servlets Java . El motor CFML solo procesa etiquetas y funciones CFML; devuelve texto fuera de las etiquetas y funciones CFML al servidor web sin cambios. [4]
Historia
Denominado Cold Fusion al principio, el software fue creado en 1995 por Allaire Corporation , originalmente ubicada en Minnesota . Más tarde se trasladó a Cambridge, Massachusetts y finalmente a Newton, Massachusetts antes de ser adquirida por Macromedia en 2001. Allaire Cold Fusion se convirtió así en Macromedia Cold Fusion. En el lanzamiento de la versión 4, el espacio en el nombre se eliminó para convertirse en ColdFusion. Adobe adquirió Macromedia en 2005 y todavía está desarrollando activamente ColdFusion.
En 1998, Alan Williamson y su empresa escocesa, "n-ary", comenzaron a crear un motor de plantillas para Java para simplificar las tareas de programación comunes. [5] Williamson estaba usando la notación de llaves en lugar de etiquetas, pero cuando vio un ejemplo de CFML y cómo estaba resolviendo problemas similares (aunque no en Java) usando una sintaxis de etiquetas, comenzó a desarrollar lo que eventualmente se convertiría en BlueDragon, que fue la primera implementación Java del lenguaje CFML. (ColdFusion se escribió en C y C ++ hasta que la versión 6.0, la primera versión de ColdFusion basada en Java, se lanzó en 2002). New Atlanta obtuvo la licencia de BlueDragon alrededor de 2001 y lo puso a disposición como producto comercial, creando finalmente una implementación .NET de CFML . Open BlueDragon es una bifurcación del producto comercial BlueDragon y se lanzó por primera vez en 2008.
El motor Railo CFML comenzó como un proyecto de estudiantes en 2002 y se lanzó por primera vez como un proyecto comercial en 2005. [6] Railo anunció que estaban haciendo el motor de código abierto en 2008, y la primera versión de código abierto se lanzó en 2009.
El 18 de junio de 2009, Adobe anunció en la conferencia CFUnited que había formado un Comité Asesor de CFML [7] que sería responsable de orientar y revisar los cambios en el lenguaje CFML. Este esfuerzo se disolvió en 2010. El Grupo de Google CFML Conventional Wisdom se creó como un foro para debates públicos abiertos sobre el lenguaje y las características del motor; su uso ha disminuido desde 2011. [ cita requerida ]
En 2012, se lanzó la Fundación OpenCFML. Su función es impulsar aplicaciones y plataformas CFML de código abierto .
El ex desarrollador líder de Railo , Michael Offner, lanzó Lucee , una bifurcación de Railo , en Londres el 29 de enero de 2015. Respaldado por seguidores de la comunidad y miembros de la Asociación Lucee, el objetivo del proyecto es proporcionar la funcionalidad de CFML utilizando menos recursos. dando un mejor rendimiento y para mover CFML más allá de sus raíces y en una plataforma de programación web moderna y dinámica.
Sintaxis
Las etiquetas CFML tienen un formato similar a las etiquetas HTML. Están encerrados entre corchetes angulares (
# valor # Bob!
Otras etiquetas, como cfset y cfftp, nunca tienen cuerpo; toda la información requerida va entre el carácter inicial (<) y el carácter final (>) en forma de atributos de etiqueta (pares de nombre / valor), como en el ejemplo siguiente. Si es legal que las etiquetas no tengan cuerpo, es sintácticamente aceptable dejarlas sin cerrar como en el primer ejemplo, aunque muchos desarrolladores de CFML eligen autocerrar etiquetas como en el segundo ejemplo para (posiblemente) hacer que el código sea más legible. .
value = "Hola" > value = "Hola" / >
Incluso si la etiqueta puede tener un cuerpo, es posible que en algunos casos no sea necesario incluir un cuerpo porque los atributos especifican toda la información requerida. En estos casos, como en el segundo ejemplo anterior, la etiqueta final (y por lo tanto, el cuerpo de la etiqueta) puede omitirse y la etiqueta puede cerrarse automáticamente como en el siguiente ejemplo: [8]
< cfexecute name = "C: \\ winNT \\ System32 \\ netstat.exe" argumentos = "-e" outputfile = "C: \\ Temp \\ out.txt" timeout = "1" />
Varias etiquetas ofrecen la capacidad de verificar el tipo de los parámetros de entrada (por ejemplo, cffunction, cfparam, cfqueryparam) si el programador declara su tipo específicamente. Esta funcionalidad se utiliza con cfqueryparam para proteger las aplicaciones web y las bases de datos de los piratas informáticos y las solicitudes web maliciosas, como la inyección de SQL .
Etiquetas integradas
Casi 100 etiquetas y muchas más funciones constituyen el corazón del lenguaje CFML. A continuación, se enumeran las etiquetas CFML por su función o propósito. [9]
- Marco de aplicación
- Comunicaciones
- Control
- Control de flujo
- Manipulación de bases de datos
- Manejo de excepciones
- Salida de datos
- Depuración
- Gestión de pantalla
- Extensibilidad
- Gestión de archivos
- formulario
- Protocolo de Internet
- Procesamiento de páginas
- Seguridad
- Manipulación variable
- Otras etiquetas (cfimage, cfregistry, etc.)
Etiquetas personalizadas
CFML permite extensiones de lenguaje en forma de etiquetas personalizadas, que son etiquetas creadas por el desarrollador que no forman parte del lenguaje CFML en sí. Las etiquetas personalizadas son archivos CFML regulares que están destinados a ser invocados como etiquetas, aunque es posible tratar una plantilla como una etiqueta personalizada y como una plantilla regular. Las etiquetas personalizadas se escriben en CFML y normalmente se invocan anteponiendo el nombre de archivo de la etiqueta personalizada con cf_ , aunque hay otras formas de invocar etiquetas personalizadas.
Si se invoca una plantilla como una etiqueta personalizada, los atributos utilizados para invocar esa etiqueta están disponibles dentro de la etiqueta en un alcance de atributos y las variables para la página de llamada son accesibles a través del alcance de la persona que llama .
Por ejemplo, si escribe una etiqueta personalizada para realizar una suma , tomando dos atributos y sumándolos juntos, la etiqueta sería un archivo added.cfm que podría verse así:
caller.addition = atributos.first + atributos.segundo / > < cfexit method = "exitTag" />
Suponiendo que la etiqueta está en el mismo directorio que el archivo (o en un directorio de etiquetas personalizadas predefinido), se puede invocar así:
< cf_addition first = "1" second = "2" >
Las etiquetas CFX son etiquetas personalizadas que se desarrollan utilizando Java o C ++ , y tienen el prefijo cfx_ al igual que cf_. Las etiquetas Java y C ++ se agregan al entorno de ejecución de CFML utilizando el administrador del motor CFML o editando archivos de configuración.
En algunos motores CFML, las etiquetas JSP también se pueden incluir en las páginas CFML utilizando la etiqueta
Funciones
ColdFusion Markup Language incluye un conjunto de funciones que se utilizan para realizar operaciones lógicas y aritméticas y manipular datos.
función | referencia | código |
---|---|---|
Formación | [10] | (ArraySort, ArrayAppend, ArrayDeleteAt ...) |
Conversión | [11] | (URLEncodedFormat, ToString ...) |
Fecha y hora | [12] | (LsTimeFormat, DateAdd, DateDiff ...) |
Decisión | [13] | (IsDefined, IIF ...) |
Visualización y formateo | [14] | (CJustify, NumberFormat ...) |
Evaluación dinámica | [15] | (DE, Evaluar ...) |
Extensibilidad | [dieciséis] | (CreateObject, ToScript ...) |
Imagen | [17] | (ImageRotate, ImageAddBorder ...) |
Funciones internacionales | [18] | (SetLocale, GetTimeZoneInfo ...) |
Lista | [19] | (FindOneOf, ListSetAt ...) |
Matemático | [20] | (Aleatorizar, Sqr ...) |
Otras funciones | [21] | (WriteOutput, GetBaseTemplatePath ...) |
Consulta | [22] | (QueryAddColumn, QuerySetCell ...) |
Seguridad | [23] | (Encriptar, Desencriptar ...) |
Cuerda | [24] | (Inverso, HTMLCodeFormat ...) |
Estructura | [25] | (StructKeyExists, StructDelete ...) |
Sistema | [26] | (GetTickCount, GetTempFile ...) |
XML | [27] | (XMLParse, GetSOAPResponse ...) |
Componentes ColdFusion (CFC)
Los CFC proporcionan algunas (no todas) de las características y funcionalidades típicas que proporcionan los lenguajes orientados a objetos (OOP). Para crear un CFC:
- Cree un archivo con una extensión .CFC (esto distingue a los CFC de las plantillas ColdFusion, que tienen una extensión .CFM).
- Utilice cuatro etiquetas para crear los componentes, definir sus funciones y argumentos y devolver un valor.
: define un CFC : define las funciones (métodos) dentro de un CFC : define los argumentos (parámetros) que acepta una función : devuelve un valor o resultado de una función
Los CFC son CFML simples. Dentro de un CFC se puede utilizar cualquier etiqueta CFML, función, etiqueta personalizada, otros componentes, etc.
Los CFC se pueden utilizar de diversas formas. Si un método contenido en un CFC simplemente necesita ser invocado, la etiqueta
En el siguiente ejemplo, el componente temperature.cfc tiene un método FtoC que convierte la temperatura de Fahrenheit a Celsius. La plantilla test.cfm invoca el método y convierte 212 grados Fahrenheit y genera el resultado.
name = "FtoC" access = "public" returnntype = " numeric " > name = "fahrenheit" required = "yes" type = "numeric" / > respuesta = ( Fahrenheit - 32 ) * 100 / 180 / > respuesta / > <--- test.cfm --->! fDegrees = 212 / > < cfinvoke component = "temperature" method = "FtoC" returnvariable = "result" > < cfinvokeargument name = "fahrenheit" value = "# fDegrees #" /> # fDegrees # & deg; F = # resultado # & deg; C < br />
Los CFC también se pueden instanciar como objetos. Suponiendo un archivo CFC llamado Person.cfc, se crearía una instancia de este CFC de la siguiente manera:
person = CreateObject ( "componente" , "Persona" ) / >
Los CFC también forman la base de la capacidad de crear servicios web en CFML. Un CFC se crea de la manera habitual, y el atributo acceso = "remoto" agregado a cualquier función dentro del CFC hará que esa función esté disponible para ser llamada como un servicio web basado en SOAP . El motor CFML genera automáticamente un WSDL y crea todos los stubs necesarios para que funcione el servicio web.
Referencias
- ^ Adobe ColdFusion 8 - Acerca de las aplicaciones de Internet y los servidores de aplicaciones web. Archivado el 13 de mayo de 2012 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Abra el manual de BlueDragon . Openbd.org. Consultado el 17 de septiembre de 2013.
- ^ Smith, Michael ¿Qué es ColdFusion? fusionauthority.com
- ^ Etiquetas archivadas el 24 de marzo de 2008 en la Wayback Machine.
- ^ Abra la serie de entrevistas del Comité de dirección de BlueDragon - Alan Williamson . alan.blog-city.com
- ^ Acerca de Railo Archivado el 30 de junio de 2011 en la Wayback Machine . Getrailo.org. Consultado el 17 de septiembre de 2013.
- ^ http://corfield.org/entry/CFML_Advisory_Com Committee Archivado el 7 de enero de 2009 en elComité Asesor de Wayback Machine CFML: la opinión de un arquitecto. Corfield.org. Consultado el 21 de julio de 2013.
- ↑ Tag syntax Archivado el 27 de mayo de 2008 en Wayback Machine.
- ^ Etiquetas por función Archivado el 9 de mayo de 2008 en la Wayback Machine . (PDF). Consultado el 17 de septiembre de 2013.
- ^ Funciones de matriz Archivado el 10 de diciembre de 2008 en la Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones de conversión Archivado 2008-12-08 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones de fecha y hora Archivado 2008-12-02 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones de decisión. Archivado el 1 de febrero de 2009 en la Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones de visualización y formato. Archivado el 20 de diciembre de 2008 en la Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones de evaluación dinámica. Archivado el 7 de diciembre de 2008 en la Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Extensibilidad Archivado el 14 de febrero de 2009 en la Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones de imagen Archivado el 31 de enero de 2009 en la Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones internacionales Archivado el 8 de febrero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones de lista Archivado 2008-12-10 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones matemáticas Archivado el 7 de diciembre de 2008 en la Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Otras funciones Archivado el 30 de enero de 2009 en la Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones de consulta Archivado el 21 de febrero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones de seguridad Archivado 2008-12-05 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones de cadena Archivado el 29 de enero de 2009 en la Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones de estructura Archivado el 14 de febrero de 2009 en la Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones del sistema Archivado 2009-02-01 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Funciones XML Archivado 2009-02-20 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
- ^ Forta, Ben con componentes ColdFusion . adobe.com
enlaces externos
- Documentación CFML mantenida por la comunidad.
- CFML en 100 minutos: introducción a los conceptos básicos del lenguaje CFML.
- Un programa de capacitación impulsado por la comunidad que enseña los conceptos básicos de CFML.
- Equipo CFML Slack
- CFQuickDocs: referencia de funciones y etiquetas de ColdFusion.
- Lucee
- Abrir BlueDragon
- Dragón azul
- Railo
- Grupo de Google de sabiduría convencional CFML
- Comité Asesor de CFML (este comité ya no funciona)