stringtranslate.com

Lenguaje de marcado ColdFusion

ColdFusion Markup Language , más conocido como CFML , es un lenguaje de programación para el desarrollo web que se ejecuta en la máquina virtual Java (JVM), el marco .NET y Google App Engine . Existen varias implementaciones de software comerciales y gratuitas y de código abierto de motores CFML, incluidos Adobe ColdFusion , Lucee , New Atlanta BlueDragon ( versiones Java y .NET), Railo , Open BlueDragon y otros motores de servidor CFML .

Sinopsis

En su forma más simple, como muchos otros lenguajes de programación web, CFML amplía 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 los componentes ColdFusion (CFC), la versión de CFML de los objetos , que permiten separar la lógica empresarial de la presentación.

CFML se puede escribir utilizando etiquetas o CFScript , que se parece a JavaScript ( ECMAScript ).

Las páginas de una aplicación CFML incluyen las etiquetas y funciones CFML del lado del servidor además de las etiquetas HTML. 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 básicas de CFML le impiden cumplir con los requisitos.

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 a través de servlets de 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

El software, que en un principio se denominó Cold Fusion, fue creado en 1995 por Allaire Corporation , que originalmente tenía su sede en Minnesota . Más tarde se trasladó a Cambridge (Massachusetts) y, finalmente, a Newton (Massachusetts), antes de ser adquirido por Macromedia en 2001. Allaire Cold Fusion pasó a llamarse Macromedia Cold Fusion. Con el lanzamiento de la versión 4, se eliminó el espacio en el nombre para convertirse en ColdFusion. Adobe adquirió Macromedia en 2005. A fecha de 2023 , sigue desarrollando activamente ColdFusion.

En 1998, Alan Williamson y su compañía escocesa, "n-ary", comenzaron a crear un motor de plantillas para Java para simplificar las tareas de programación más comunes. [5] Williamson usaba notación de llaves en lugar de etiquetas, pero cuando vio un ejemplo de CFML y cómo resolvía 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 en Java del lenguaje CFML. (ColdFusion se escribió en C y C++ hasta que se lanzó la versión 6.0, la primera versión basada en Java, en 2002). New Atlanta obtuvo la licencia de BlueDragon alrededor de 2001 y lo puso a disposición como un 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 CFML de Railo comenzó como un proyecto estudiantil en 2002 y se lanzó por primera vez como un proyecto comercial en 2005. [6] Railo anunció que estaban haciendo que el motor fuera 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 CFML [7] que sería responsable de guiar y revisar los cambios en el lenguaje CFML. Este esfuerzo se disolvió en 2010. El Grupo Google CFML Conventional Wisdom se creó como un foro para debates públicos y abiertos sobre las características del lenguaje y del motor; su uso ha disminuido desde 2011. [ cita requerida ]

En 2012 se creó la Fundación OpenCFML, cuya función es promover aplicaciones y plataformas CFML de código abierto .

El ex desarrollador principal de Railo, Michael Offner, lanzó Lucee , una bifurcación de Railo , en Londres el 29 de enero de 2015. Con el respaldo de los partidarios de la comunidad y los miembros de la Asociación Lucee, el objetivo del proyecto es proporcionar la funcionalidad de CFML utilizando menos recursos, dando un mejor rendimiento y llevando a CFML más allá de sus raíces y convirtiéndolo en una plataforma de programación web moderna y dinámica.

Sintaxis

Las etiquetas CFML tienen un formato similar a las etiquetas HTML. Se encuentran entre corchetes angulares (< y >) y generalmente tienen cero o más atributos con nombre , aunque algunas etiquetas (por ejemplo, cfset, cfif) contienen una expresión en lugar de atributos. Muchas etiquetas CFML tienen cuerpos; es decir, tienen etiquetas de inicio y fin con texto para procesar entre ellas. Por ejemplo:

<cfoutput>  # valor # ¡Bob! </cfoutput>

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 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 cerrar automáticamente las etiquetas como en el segundo ejemplo para (posiblemente) hacer que el código sea más legible.

<cfset  valor  =  "Hola" > <cfset  valor  =  "Hola"  / >

Aunque la etiqueta puede tener un cuerpo, incluir un cuerpo puede no ser necesario en algunos casos 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) se puede omitir y la etiqueta puede cerrarse automáticamente como en el siguiente ejemplo: [8]

< cfexecute  nombre = "C:\\winNT\\System32\\netstat.exe"  argumentos = "-e"  archivo de salida = "C:\\Temp\\out.txt"  tiempo de espera = "1"  />

Varias etiquetas ofrecen la posibilidad de comprobar 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 piratas informáticos y solicitudes web maliciosas como la inyección SQL .

Etiquetas incorporadas

Casi 100 etiquetas y muchas más funciones conforman el núcleo del lenguaje CFML. A continuación se enumeran las etiquetas CFML por su función o propósito. [9]

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 normales que están pensados ​​para ser invocados como etiquetas, aunque es posible tratar una plantilla como una etiqueta personalizada y una plantilla normal. Las etiquetas personalizadas se escriben en CFML y normalmente se invocan anteponiendo el nombre de archivo de la etiqueta personalizada con cf_ , aunque existen 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 ámbito de atributos y las variables para la página que realiza la llamada son accesibles a través del ámbito del llamador .

Por ejemplo, si escribe una etiqueta personalizada para realizar una suma , tomando dos atributos y sumándolos, la etiqueta sería un archivo addition.cfm que podría verse así:

<cfset  caller.addition  =  atributos.first  +  atributos.second  / > < 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 de esta manera:

< cf_addition  primero = "1"  segundo = "2" >

Las etiquetas CFX son etiquetas personalizadas que se desarrollan con Java o C++ y tienen el prefijo cfx_, al igual que cf_. Las etiquetas Java y C++ se agregan al entorno de ejecución CFML mediante el administrador del motor CFML o editando los archivos de configuración.

En algunos motores CFML, las etiquetas JSP también se pueden incluir en páginas CFML utilizando la etiqueta <cfimport>. [ cita requerida ]

Funciones

El lenguaje de marcado ColdFusion incluye un conjunto de funciones que se utilizan para realizar operaciones lógicas y aritméticas y manipular datos.

Componentes de ColdFusion (CFC)

Los CFC proporcionan algunas (no todas) de las características y funciones típicas que ofrecen 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.
<cfcomponent>: define un CFC
<cffunction>: define las funciones (métodos) dentro de un CFC
<cfargument>: define los argumentos (parámetros) que acepta una función
<cfreturn>: Devuelve un valor o resultado de una función

Los CFC son CFML simples. Dentro de un CFC se puede utilizar cualquier etiqueta, función, etiqueta personalizada, otros componentes, etc. de CFML.

Los CFC se pueden utilizar de varias maneras. Si simplemente se necesita invocar un método contenido en un CFC, la etiqueta <cfinvoke> creará una instancia del CFC, invocará el método deseado y luego destruirá la instancia del CFC. <cfinvoke> toma el nombre del componente (menos la extensión .cfc) y el método a ejecutar. Para acceder a los datos devueltos, el atributo RETURNVARIABLE proporciona el nombre de una variable que contendrá lo que devuelva la función. Los CFC se crean utilizando cuatro etiquetas, se guardan como archivos .CFC y se invocan utilizando la etiqueta <cfinvoke>. [28]

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.

<!--- temperatura.cfc ---> <cfcomponent>  <cffunction  nombre = "FtoC"  acceso = "público"  tipo de retorno = "numérico" >  <cfargumento  nombre = "fahrenheit"  requerido = "sí"  tipo = "numérico"  / >  <cfset  respuesta =  ( fahrenheit  -  32 ) * 100 / 180  / >  <cfreturn  respuesta  / >  </cffunction> </cfcomponent> <!--- prueba.cfm ---> <cfset  fGrados  =  212  / > <cfinvoke  componente = "temperatura"  método = "FtoC"  variable de retorno = "resultado" >  < cfinvokeargumento  nombre = "fahrenheit"  valor = "#fGrados#"  /> </cfinvoke> <cfoutput> # fGrados # ° F = # resultado # ° C </cfoutput>  < br  />

Los CFC también se pueden instanciar como objetos. Suponiendo que existe un archivo CFC llamado Person.cfc, una instancia de este CFC se instanciaría de la siguiente manera:

<cfset  persona  =  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 forma habitual y el atributo access="remote" añadido a cualquier función dentro del CFC hará que esa función esté disponible para ser invocada como un servicio web basado en SOAP . El motor CFML genera automáticamente un WSDL y crea todos los stubs necesarios para que el servicio web funcione.

Referencias

  1. ^ 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.
  2. ^ Manual de Open BlueDragon. Openbd.org. Consultado el 17 de septiembre de 2013.
  3. ^ Smith, Michael ¿Qué es ColdFusion? fusionauthority.com
  4. ^ Etiquetas Archivado el 24 de marzo de 2008 en Wayback Machine.
  5. ^ Serie de entrevistas del Comité Directivo de Open BlueDragon: Alan Williamson. alan.blog-city.com
  6. ^ Acerca de Railo Archivado el 30 de junio de 2011 en Wayback Machine . Getrailo.org. Consultado el 17 de septiembre de 2013.
  7. ^ http://corfield.org/entry/CFML_Advisory_Committee Archivado el 7 de enero de 2009 en Wayback Machine. Comité Asesor CFML: la visión de un arquitecto. Corfield.org. Recuperado el 21 de julio de 2013.
  8. ^ Sintaxis de etiquetas Archivado el 27 de mayo de 2008 en Wayback Machine .
  9. ^ Etiquetas por función Archivado el 9 de mayo de 2008 en Wayback Machine . (PDF) Consultado el 17 de septiembre de 2013.
  10. ^ Funciones de matriz Archivado el 10 de diciembre de 2008 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  11. ^ Funciones de conversión Archivado el 8 de diciembre de 2008 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  12. ^ Funciones de fecha y hora Archivado el 2 de diciembre de 2008 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  13. ^ Funciones de decisión Archivado el 1 de febrero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  14. ^ Funciones de visualización y formato Archivado el 20 de diciembre de 2008 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  15. ^ Funciones de evaluación dinámica Archivado el 7 de diciembre de 2008 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  16. ^ Extensibilidad Archivado el 14 de febrero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  17. ^ Funciones de imagen Archivado el 31 de enero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  18. ^ Funciones internacionales Archivado el 8 de febrero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  19. ^ Funciones de lista Archivado el 10 de diciembre de 2008 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  20. ^ Funciones matemáticas Archivado el 7 de diciembre de 2008 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  21. ^ Otras funciones Archivado el 30 de enero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  22. ^ Funciones de consulta Archivado el 21 de febrero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  23. ^ Funciones de seguridad Archivado el 5 de diciembre de 2008 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  24. ^ Funciones de cadena Archivado el 29 de enero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  25. ^ Funciones de estructura Archivado el 14 de febrero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  26. ^ Funciones del sistema Archivado el 1 de febrero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  27. ^ Funciones XML Archivado el 20 de febrero de 2009 en Wayback Machine . Livedocs.adobe.com. Consultado el 17 de septiembre de 2013.
  28. ^ Forta, Ben Uso de componentes ColdFusion. adobe.com

Enlaces externos