Язык разметки ColdFusion - ColdFusion Markup Language

Язык разметки Cold Fusion (CFML)
Парадигмаимператив, объектно-ориентированный
РазработаноДжереми Аллер
РазработчикAdobe Systems (Холодный синтез ), Ассоциация Люси (Люси ), Нью-Атланта и aw2.0 (openBD ), Компания Railo (Railo )
Впервые появился1995; 25 лет назад (1995)
Язык реализацииЯва
Операционные системыКроссплатформенность
ЛицензияЗависит от реализации. Проприетарный, LGPL, и GPL - все двигатели лицензионные.
Расширения имени файла.cfm, .cfc
Интернет сайтwww.adobe.com/товары/холодный синтез
Основной реализации
Adobe ColdFusion, Люси, Railo, Синий дракон, Откройте BlueDragon
Под влиянием
Люси

Язык разметки ColdFusion, более известный как CFML, это язык сценариев для веб-разработки, которая работает на JVM, то .NET Framework, и Google App Engine. Несколько коммерческих и Открытый исходный код доступны реализации двигателей CFML, включая Adobe ColdFusion, Люси, Нью-Атланта Синий дракон (которые предлагают как версию на основе Java, так и версию на основе .NET), Railo, и Откройте BlueDragon а также другие серверные движки CFML.

Синопсис

В своей простейшей форме, как и многие другие языки веб-сценариев, CFML дополняет стандартные HTML файлы с база данных команды, условные операторы, высокоуровневое форматирование функции, и другие элементы для производства веб-приложения.[1][2] CFML также включает множество других конструкций, включая компоненты ColdFusion (CFC), версию CFML объекты, которые позволяют отделить бизнес-логику от представления.

CFML может быть написан с использованием тегов или CFScript, который напоминает JavaScript (Скрипт ECMA ).

Страницы в CFML заявление включить на стороне сервера Теги и функции CFML в дополнение к тегам HTML, и современные приложения CFML также обычно имеют CFC, к которым страницы CFML получают доступ для выполнения бизнес-логики. Когда веб-браузер запрашивает страницу в приложении ColdFusion, она автоматически предварительно обрабатывается ColdFusion сервер приложений.[3]

CFML также можно использовать для создания других языков, помимо HTML, таких как XML, JavaScript, CSS, и так далее.

Несмотря на название, CFML нет язык разметки. Это тоже не SGML, поскольку определенные основные функции CFML не позволяют ему соответствовать.

Механизм CFML настроен таким образом, что определенные расширения файлов на сервере (.cfm, .cfc) передаются механизму CFML для обработки. В случае движков на основе Java это достигается через Сервлеты Java. Механизм CFML обрабатывает только теги и функции CFML; он возвращает текст вне тегов CFML и функции на веб-сервер без изменений.[4]

История

Программное обеспечение, изначально названное Cold Fusion, было создано в 1995 г. Allaire Corporation, первоначально расположенный в Миннесота. Позже он переехал в Кембридж, штат Массачусетс, а затем, наконец, в Ньютон, штат Массачусетс, прежде чем был приобретен Macromedia в 2001 году. Таким образом, Allaire Cold Fusion превратилась в Macromedia Cold Fusion. При выпуске версии 4 пробел в имени был удален и стал ColdFusion. Adobe приобрела Macromedia в 2005 году и до сих пор активно развивает ColdFusion.

В 1998 году Алан Уильямсон и его шотландская компания n-ary начали создавать шаблонизатор для Java, чтобы упростить общие задачи программирования.[5] Уильямсон использовал фигурные скобки вместо тегов, но когда он увидел пример CFML и то, как он решает аналогичные проблемы (хотя и не на Java) с использованием синтаксиса тегов, он начал разрабатывать то, что в конечном итоге стало BlueDragon, которое было первым Реализация языка CFML на Java. (ColdFusion был написан на C и C ++ до версии 6.0 - первой версии ColdFusion на основе Java - был выпущен в 2002 году.) New Atlanta лицензировала BlueDragon примерно в 2001 году и сделала его доступным как коммерческий продукт, в конечном итоге создав .NET-реализацию CFML. . Open BlueDragon - это форк коммерческого продукта BlueDragon, впервые выпущенный в 2008 году.

Двигатель Railo CFML начался как студенческий проект в 2002 году и впервые был запущен как коммерческий проект в 2005 году.[6] Рейло объявил, что делают движок с открытым исходным кодом в 2008 году, а первая версия с открытым исходным кодом была выпущена в 2009 году.

18 июня 2009 г. Adobe объявил на конференции CFUnited, что сформировал Консультативный комитет CFML[7] он будет отвечать за руководство и анализ изменений в языке CFML. Эта работа была расформирована в 2010 году. Группа Google CFML Conventional Wisdom был создан как форум для открытых публичных обсуждений языка и функций движка; его использование сократилось с 2011 года.[нужна цитата ]

В 2012 году был запущен OpenCFML Foundation. Его функция - толкать Открытый исходный код Приложения и платформы CFML.

Запуск бывшего ведущего разработчика Railo Майкла Оффнера Люси, вилка Railo, в Лондоне 29 января 2015 года. Поддерживаемый сторонниками сообщества и членами Lucee Association, цель проекта - предоставить функциональные возможности CFML, используя меньше ресурсов, обеспечивая лучшую производительность, и вывести CFML за пределы его корней в современную и платформа динамического веб-программирования.

Синтаксис

Теги CFML имеют формат, аналогичный HTML-тегам. Они заключены в угловые скобки (<и>) и обычно имеют ноль или более имен атрибуты, хотя некоторые теги (например, cfset, cfif) содержат выражение, а не атрибуты. Многие теги CFML имеют тела; то есть у них есть начальный и конечный теги с текстом, который нужно обработать между ними. Например:

<cfoutput>   #ценить# Боб!</cfoutput>

Другие теги, такие как cfset и cfftp, никогда не имеют тела; вся необходимая информация проходит между начальным (<) символом и конечным (>) символом в виде атрибутов тега (пары имя / значение), как в примере ниже. Если допустимо, чтобы теги не имели тела, синтаксически допустимо оставить их незакрытыми, как в первом примере, хотя многие разработчики CFML предпочитают самозакрывать теги, как во втором примере, чтобы (возможно) сделать код более разборчивым. .

 ценить = "Привет"> ценить = "Привет" />

Даже если у тега может быть тело, в некоторых случаях его включение может не понадобиться, поскольку атрибуты определяют всю необходимую информацию. В этих случаях, как и во втором примере выше, конечный тег (и, следовательно, тело тега) может быть опущен, и тег может быть самозакрывающимся, как в следующем примере:[8]

<cfexecute имя="C:  WinNT  System32  netstat.exe" аргументы="-e" выходной файл="C:  Temp  out.txt" тайм-аут="1" />

Различные теги предлагают возможность проверки типов входных параметров (например, cffunction, cfparam, cfqueryparam), если программист конкретно объявляет их тип. Эта функция используется с cfqueryparam для безопасный веб-приложения и базы данных из хакеры и вредоносные веб-запросы, такие как SQL-инъекция.

Встроенные теги

Почти 100 тегов и многие другие функции составляют основу языка CFML. Ниже перечислены теги CFML по их функциям или назначению.[9]

Пользовательские теги

CFML допускает языковые расширения в виде настраиваемых тегов, которые представляют собой теги, созданные разработчиком и не являющиеся частью самого языка CFML. Пользовательские теги - это обычные файлы CFML, которые предназначены для вызова как теги, хотя можно обрабатывать шаблон как пользовательский тег и как обычный шаблон. Пользовательские теги написаны в CFML и обычно вызываются путем добавления к имени файла пользовательского тега префикса cf_, хотя есть и другие способы вызова пользовательских тегов.

Если шаблон вызывается как настраиваемый тег, атрибуты, используемые для вызова этого тега, доступны в теге в атрибуты область и переменные для вызывающей страницы доступны через звонящий объем.

Например, если вы пишете собственный тег для выполнения добавление Если взять два атрибута и сложить их вместе, тег будет файлом add.cfm, который может выглядеть так:

 caller.addition = attributes.first + attribute.second /><cfexit метод="exitTag" />

Предполагая, что тег находится в том же каталоге, что и файл (или в предварительно определенном каталоге customtags), его можно вызвать следующим образом:

<cf_addition первый="1" второй="2">

Теги CFX - это настраиваемые теги, разработанные с использованием Ява или же C ++, и имеют префикс cfx_, как и cf_. Теги Java и C ++ добавляются в среду выполнения CFML с помощью администратора механизма CFML или путем редактирования файлов конфигурации.

На некоторых двигателях CFML JSP Теги также могут быть включены в страницы CFML с помощью тега .[нужна цитата ]

Функции

Язык разметки ColdFusion включает набор функций, которые вы используете для выполнения логических и арифметических операций и манипулирования данными.

функцияссылкакод
Множество[10](ArraySort, ArrayAppend, ArrayDeleteAt ...)
Преобразование[11](URLEncodedFormat, ToString ...)
Дата и время[12](LsTimeFormat, DateAdd, DateDiff ...)
Решение[13](IsDefined, IIF ...)
Отображение и форматирование[14](CJustify, NumberFormat ...)
Динамическая оценка[15](DE, Оценить ...)
Расширяемость[16](CreateObject, ToScript ...)
Изображение[17](ImageRotate, ImageAddBorder ...)
Международные функции[18](SetLocale, GetTimeZoneInfo ...)
Список[19](FindOneOf, ListSetAt ...)
Математический[20](Рандомизировать, Sqr ...)
Прочие функции[21](WriteOutput, GetBaseTemplatePath ...)
Запрос[22](QueryAddColumn, QuerySetCell ...)
Безопасность[23](Зашифровать, расшифровать ...)
Нить[24](Обратный, HTMLCodeFormat ...)
Структура[25](StructKeyExists, StructDelete ...)
Система[26](GetTickCount, GetTempFile ...)
XML[27](XMLParse, GetSOAPResponse ...)

Компоненты ColdFusion (CFC)

CFC предоставляют некоторые (не все) типичные функции и возможности, предоставляемые объектно-ориентированный (ООП) языков.Чтобы создать CFC:

Создайте файл с расширением .CFC (это отличает CFC от шаблонов ColdFusion, которые имеют расширение .CFM).
Используйте четыре тега для создания компонентов, определения их функций и аргументы, и вернуть значение.
: определяет CFC
: определяет функции (методы) в CFC
: определяет аргументы (параметры), которые принимает функция
: возвращает значение или результат функции

CFC - это простой CFML. В CFC можно использовать любой тег CFML, функцию, настраиваемый тег, другие компоненты и т. Д.

ХФУ можно использовать по-разному. Если метод, содержащийся в CFC, просто необходимо вызвать, тег создаст экземпляр CFC, вызовет желаемый метод и затем уничтожит экземпляр CFC. принимает имя компонента (без расширения .cfc) и метод для выполнения. Для доступа к любым возвращаемым данным атрибут RETURNVARIABLE предоставляет имя переменной, которая содержит все, что возвращает функция. CFC создаются с использованием четырех тегов, сохраняются как файлы .CFC и вызываются с помощью тега .[28]

В приведенном ниже примере компонент temperature.cfc имеет метод FtoC, который преобразует температуру из Фаренгейта в Цельсия. Шаблон test.cfm вызывает метод, преобразует 212 градусов по Фаренгейту и выводит результат.

<!--- temperature.cfc ---><cfcomponent>   имя=«FtoC» доступ="общественный" ответ="числовой">     имя="Фаренгейт" требуется="да" тип="числовой" />     отвечать= (Фаренгейт - 32)*100/180 />     отвечать />  </cffunction></cfcomponent><!--- test.cfm ---> fDegrees = 212 /> компонент="температура" метод=«FtoC» returnvariable="результат">  <cfinvokeargument имя="Фаренгейт" ценить="# fDegrees #" /></cfinvoke><cfoutput>#fDegrees#& deg;F = #результат#& deg;C</cfoutput> <br />

CFC также могут быть созданы как объекты. Предполагая, что файл CFC называется Person.cfc, экземпляр этого CFC будет создан следующим образом:

 человек = CreateObject("компонент", "Человек") />

CFC также составляют основу способности создавать веб-сервисы в CFML. CFC создается обычным способом, и атрибут access = "remote", добавленный к любой функции в CFC, сделает эту функцию доступной для вызова как МЫЛО веб-сервис на базе. Механизм CFML автоматически генерирует WSDL и создает все необходимые заглушки для работы веб-службы.

Рекомендации

  1. ^ Adobe ColdFusion 8 - Об Интернет-приложениях и серверах веб-приложений В архиве 2012-05-13 в Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  2. ^ Открыть руководство BlueDragon. Openbd.org. Проверено 17 сентября 2013.
  3. ^ Смит, Майкл Что такое ColdFusion? fusionauthority.com
  4. ^ Теги В архиве 24 марта 2008 г. Wayback Machine
  5. ^ Серия интервью с Руководящим комитетом Open BlueDragon - Алан Уильямсон. alan.blog-city.com
  6. ^ О Railo В архиве 2011-06-30 на Wayback Machine. Getrailo.org. Проверено 17 сентября 2013.
  7. ^ http://corfield.org/entry/CFML_Advisory_Committee В архиве 2009-01-07 на Wayback Machine Консультативный комитет CFML - взгляд архитектора. Corfield.org. Проверено 21 июля 2013.
  8. ^ Синтаксис тега В архиве 27 мая 2008 г. Wayback Machine
  9. ^ Теги по функциям В архиве 2008-05-09 на Wayback Machine. (PDF). Проверено 17 сентября 2013.
  10. ^ Функции массива В архиве 2008-12-10 на Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  11. ^ Функции преобразования В архиве 2008-12-08 на Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  12. ^ Функции даты и времени В архиве 2008-12-02 в Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  13. ^ Функции принятия решений В архиве 2009-02-01 в Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  14. ^ Функции отображения и форматирования В архиве 2008-12-20 на Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  15. ^ Функции динамической оценки В архиве 2007-12-07 на Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  16. ^ Расширяемость В архиве 2009-02-14 в Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  17. ^ Функции изображения В архиве 2009-01-31 на Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  18. ^ Международные функции В архиве 2009-02-08 в Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  19. ^ Список функций В архиве 2008-12-10 на Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  20. ^ Математические функции В архиве 2007-12-07 на Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  21. ^ Прочие функции В архиве 2009-01-30 на Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  22. ^ Функции запроса В архиве 2009-02-21 в Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  23. ^ Функции безопасности В архиве 2008-12-05 на Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  24. ^ Строковые функции В архиве 2009-01-29 в Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  25. ^ Структурные функции В архиве 2009-02-14 в Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  26. ^ Системные функции В архиве 2009-02-01 в Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  27. ^ XML функции В архиве 2009-02-20 в Wayback Machine. Livedocs.adobe.com. Проверено 17 сентября 2013.
  28. ^ Forta, Бен Использование компонентов ColdFusion. adobe.com

внешняя ссылка