Adobe ColdFusion — это коммерческая вычислительная платформа для быстрой разработки веб-приложений, созданная Дж. Дж. Аллером в 1995 году. [3] ( Язык программирования , используемый с этой платформой, также обычно называется ColdFusion, хотя более точно он известен как CFML .) Первоначально ColdFusion был разработан для упростить подключение простых HTML- страниц к базе данных . К версии 2 (1996 г.) она стала полноценной платформой, включающей в себя IDE в дополнение к полноценному языку сценариев .
Одной из отличительных особенностей ColdFusion является связанный с ним язык сценариев ColdFusion Markup Language (CFML). CFML сравним с компонентами сценариев ASP , JSP и PHP по назначению и функциям, но синтаксис его тегов больше похож на HTML , а синтаксис сценариев — на JavaScript . ColdFusion часто используется как синоним CFML , но помимо ColdFusion существуют дополнительные серверы приложений CFML, и ColdFusion поддерживает языки программирования, отличные от CFML, такие как серверный Actionscript и встроенные сценарии, которые могут быть написаны на языке, подобном JavaScript , известном как CFScript .
Первоначально продукт компании Allaire и выпущенный 2 июля 1995 года, ColdFusion был разработан братьями Джозефом Дж. Аллером и Джереми Аллером . В 2001 году Allaire была приобретена компанией Macromedia , которая, в свою очередь, была приобретена Adobe Systems Inc в 2005 году.
ColdFusion чаще всего используется для веб- сайтов или интрасетей , управляемых данными , но также может использоваться для создания удаленных служб, таких как службы REST , WebSockets , веб-службы SOAP или удаленное взаимодействие Flash . Он особенно хорошо подходит в качестве серверной технологии для ajax на стороне клиента .
ColdFusion также может обрабатывать асинхронные события, такие как SMS и обмен мгновенными сообщениями, через интерфейс шлюза, доступный в ColdFusion MX 7 Enterprise Edition.
ColdFusion предоставляет ряд дополнительных функций «из коробки». Основные особенности включают в себя:
<CFINVOKE WEBSERVICE="http://host/tempconf.cfc?wsdl" METHOD="Celsius2Fahrenheit" TEMP="#tempc#" RETURNVARIABLE="tempf">
Другие реализации CFML предлагают аналогичные или расширенные функциональные возможности, например, работу в среде .NET или манипулирование изображениями.
Движок был написан на C и имел, среди прочего, встроенный язык сценариев (CFScript), подключаемые модули, написанные на Java, и синтаксис, очень похожий на HTML. Эквивалент элемента HTML, тег ColdFusion начинается с букв «CF», за которыми следует имя, указывающее на то, как этот тег интерпретируется в HTML. Например, <cfoutput>, чтобы начать вывод переменных или другого содержимого.
В дополнение к CFScript и плагинам (как описано) CFStudio предоставила платформу дизайна с дисплеем WYSIWYG . Помимо ColdFusion, CFStudio также поддерживает синтаксис других языков, популярных для серверного программирования, таких как Perl. Помимо того, что серверные функции легко доступны непрограммистам, (в частности, версия 4.0 и последующие версии) они легко интегрируются с веб-сервером Apache и службами IIS .
Все версии ColdFusion до 6.0 были написаны с использованием Microsoft Visual C++ . Это означало, что ColdFusion в основном ограничивался работой в Microsoft Windows , хотя Аллер успешно портировал ColdFusion на Sun Solaris , начиная с версии 3.1.
Компания Allaire была продана Macromedia , затем Macromedia была продана Adobe . Более ранние версии были не такими надежными, как версии, доступные начиная с версии 4.0. [ факт или мнение? ]
С выпуском ColdFusion MX 6.0 движок был переписан на Java и поддерживал собственную среду выполнения, которую можно было легко заменить с помощью параметров конфигурации средой выполнения от Sun. Версия 6.1 включала возможность кодирования и отладки Macromedia Flash .
Версия 3, выпущенная в июне 1997 года, содержала специальные теги cfsearch/cfindex/cfcollection, основанные на поисковой системе Verity, области действия сервера и кодировке шаблона (называемой тогда «шифрованием»). Версия 3.1, выпущенная в январе 1998 года, добавила поддержку RDS, а также порт на операционную систему Sun Solaris , а студия ColdFusion получила предварительный просмотр страниц в реальном времени и проверку синтаксиса HTML.
В версии 4, выпущенной в ноябре 1998 года, название было изменено с «Холодный синтез» на «Холодный синтез» — возможно, чтобы отличить ее от теории холодного синтеза . В выпуске также добавлена первоначальная реализация cfscript, поддержка блокировки (cflock), транзакций (cftransaction), иерархической обработки исключений (cftry/cfcatch), безопасности песочницы, а также множество новых тегов и функций, включая cfstoredproc, cfcache, cfswitch, и более.
Версия 4.5, выпущенная в ноябре 1999 года, расширила возможности доступа к внешним системным ресурсам, включая COM и CORBA, и добавила начальную поддержку интеграции Java (включая EJB, Pojo, сервлеты и Java CFX). ИТ-специалисты также добавили функцию getmetricdata (для доступа к информации о производительности), дополнительную информацию о производительности в выходных данных отладки страницы, улучшенные функции преобразования строк и дополнительное удаление пробелов.
Версия 5 была выпущена в июне 2001 года и в нее были добавлены расширенная поддержка запросов, новые функции отчетов и диаграмм, определяемые пользователем функции и улучшенные инструменты администрирования. Это был последний выпуск, созданный для конкретной платформы, и первый выпуск Macromedia после приобретения Allaire Corporation , о котором было объявлено 16 января 2001 года.
До 2000 года Эдвин Смит, архитектор Allaire в JRun, а затем в Flash Player , Том Харвуд и Клемент Вонг инициировали проект под кодовым названием «Neo». [6] Позже этот проект был представлен как сервер ColdFusion, полностью переписанный с использованием Java . Это упростило переносимость и обеспечило уровень безопасности на сервере, поскольку он работал внутри среды выполнения Java.
В июне 2002 года Macromedia выпустила продукт версии 6.0 под немного другим названием ColdFusion MX, что позволило ассоциировать продукт как с брендом Macromedia, так и с его оригинальным брендом. ColdFusion MX был полностью перестроен с нуля и базировался на платформе Java EE . ColdFusion MX также был разработан для хорошей интеграции с Macromedia Flash с помощью Flash Remoting.
С выпуском ColdFusion MX был выпущен API языка CFML с интерфейсом ООП .
С выпуском ColdFusion 7.0 7 февраля 2005 г. в соглашение об именах были внесены поправки, в результате чего название продукта стало «Macromedia ColdFusion MX 7» (кодовое имя CFMX7 было «Blackstone»). В CFMX 7 добавлены веб-формы на основе Flash и XForms , а также построитель отчетов, выводящий данные в Adobe PDF , а также FlashPaper , RTF и Excel . Вывод Adobe PDF также доступен в виде оболочки для любой HTML-страницы, преобразуя эту страницу в качественный документ для печати. В корпоративную версию также добавлены шлюзы . Они обеспечивают взаимодействие со службами запросов, отличными от HTTP, такими как службы обмена мгновенными сообщениями, SMS, наблюдатели за каталогами, а также асинхронное выполнение. В этой версии поддержка XML была расширена и теперь включает встроенную проверку схемы.
В ColdFusion MX 7.0.1 (кодовое имя «Merrimack») добавлена поддержка Mac OS X , улучшения форм Flash, поддержка RTF для CFReport, новая функция CFCPRoxy для интеграции Java/CFC и многое другое. ColdFusion MX 7.0.2 (под кодовым названием «Mystic») включал расширенные функции для работы с Adobe Flex 2, а также дополнительные улучшения для построителя отчетов CF.
30 июля 2007 года Adobe Systems выпустила ColdFusion 8 , исключив из названия «MX». [7] Во время бета-тестирования использовалось кодовое имя «Скорпион» (восьмой знак зодиака и восьмая версия ColdFusion как коммерческого продукта). В процессе бета-тестирования приняли участие более 14 000 разработчиков по всему миру — гораздо больше тестировщиков, чем первоначально ожидалось 5 000 систем Adobe . Команда разработчиков ColdFusion состояла из разработчиков из Ньютона/Бостона, штат Массачусетс, и из офшорного Бангалора, Индия.
Некоторые из новых функций — это тег CFPDFFORM, который обеспечивает интеграцию с формами Adobe Acrobat , некоторые функции манипулирования изображениями, интеграцию с Microsoft .NET и тег CFPRESENTATION, который позволяет создавать динамические презентации с помощью Adobe Acrobat Connect , веб-интерфейса для совместной работы. решение, ранее известное как Macromedia Breeze . Кроме того, ColdFusion Administrator для версии Enterprise поставляется со встроенным мониторингом сервера. ColdFusion 8 доступен в нескольких операционных системах , включая Linux , Mac OS X и Windows Server 2003 .
Другими дополнениями к ColdFusion 8 являются встроенные виджеты Ajax , манипулирование файловыми архивами (CFZIP), интеграция с сервером Microsoft Exchange (CFEXCHANGE), манипулирование изображениями, включая автоматическую генерацию CAPTCHA (CFIMAGE), многопоточность, настройки для каждого приложения, каналы Atom и RSS . , улучшения отчетности, более надежные библиотеки шифрования, улучшения массивов и структур, улучшенное взаимодействие с базами данных, значительные улучшения производительности, возможности манипулирования PDF-файлами и их слияния (CFPDF), интерактивная отладка, встроенная поддержка баз данных с помощью Apache Derby и более совместимый с ECMAScript CFSCRIPT.
Для разработки приложений ColdFusion доступно несколько инструментов: в первую очередь Adobe Dreamweaver CS4, Macromedia HomeSite 5.x, CFEclipse, Eclipse и другие. Для этих приложений доступны «программы обновления тегов», позволяющие обновить поддержку новых функций ColdFusion 8.
ColdFusion 9 (под кодовым названием: Centaur ) был выпущен 5 октября 2009 года. Новые функции CF9 включают:
ColdFusion 10 (под кодовым названием: Zeus) был выпущен 15 мая 2012 г. Новые или улучшенные функции, доступные во всех выпусках (Standard, Enterprise и Developer), включают (но не ограничиваются):
Дополнительные новые или улучшенные функции в версиях ColdFusion Enterprise или Developer включают (но не ограничиваются):
Приведенные выше списки были получены со страниц веб-сайта Adobe, описывающих «новые функции», которые указаны первыми в ссылках в следующем списке.
Первоначально CF10 назывался под кодовым названием Zeus после того, как Adobe впервые подтвердила его появление на Adobe MAX 2010 и в течение большей части периода его предварительного выпуска. Его также часто называли «ColdFusion next» и «ColdFusion X» в блогах, в Твиттере и т. д., прежде чем Adobe наконец подтвердила, что это будет «ColdFusion 10». Большую часть 2010 года менеджер по продукту ColdFusion Адам Леман путешествовал по США, устраивая бесчисленные встречи с клиентами, разработчиками и группами пользователей, чтобы сформулировать генеральный план следующего набора функций. В сентябре 2010 года он представил планы Adobe, где они получили полную поддержку и одобрение высшего руководства. [8]
Первая публичная бета-версия ColdFusion 10 была выпущена через Adobe Labs 17 февраля 2012 года.
ColdFusion 11 (кодовое название: Splendor) был выпущен 29 апреля 2014 года.
Новые или улучшенные функции, доступные во всех редакциях (Standard, Enterprise и Developer), включают:
ColdFusion 11 также удалил многие функции, которые ранее считались просто «устаревшими» или больше не поддерживались в более ранних выпусках. Например, тег CFLOG долгое время предлагал устаревшие атрибуты даты и времени (и избыточные, поскольку дата и время всегда регистрируются). Начиная с CF11, их использование не приводило к сбою тега CFLOG.
Adobe ColdFusion (выпуск 2016 г.) под кодовым названием: Raijin (также известный как ColdFusion 2016) был выпущен 16 февраля 2016 г.
Новые или улучшенные функции, доступные во всех редакциях (Standard, Enterprise и Developer), включают:
Adobe ColdFusion (выпуск 2018 г.), известный под общим названием ColdFusion 2018, был выпущен 12 июля 2018 г. [9] Во время предварительной версии ColdFusion 2018 носил кодовое название Aether. [10]
По состоянию на март 2023 года Adobe выпустила 16 обновлений [11] для ColdFusion 2018.
Новые или улучшенные функции, доступные во всех редакциях (Standard, Enterprise и Developer), включают: [12]
Adobe ColdFusion (выпуск 2021 г.) был выпущен 11 ноября 2020 г. Во время предварительной версии ColdFusion 2021 имел кодовое название Project Stratus.
Новые или улучшенные функции, доступные во всех редакциях (Standard, Enterprise и Developer), включают:
Adobe выпустила ColdFusion 2023 17 мая 2023 года.
Доступны следующие новые функции: [13]
В сентябре 2017 года Adobe объявила о планах, предусматривающих выпуск выпусков в 2018 и 2020 годах. [14] Среди ключевых функций, ожидаемых в выпуске 2016 года, были новый монитор производительности, улучшения асинхронного программирования, обновленная поддержка REST и улучшения API-менеджера, а также поддержка CF2016, запланированная на 2024 год. Что касается выпуска 2020 года, ожидаемыми на тот момент (в 2017 году) функциями были настраиваемость (модульность) сервисов приложений CF, обновленные сценарии и объектно-ориентированная поддержка, а также дальнейшие улучшения API-менеджера. .
ColdFusion может создавать PDF- документы с использованием стандартного HTML (т.е. для создания документов для печати не требуется никакого дополнительного кодирования). Авторы CFML помещают HTML и CSS в пару тегов cfdocument (или в теги cfhtmltopdf, появившиеся в ColdFusion 11). Сгенерированный документ затем можно либо сохранить на диск, либо отправить в браузер клиента. В ColdFusion 8 также появился тег cfpdf, позволяющий контролировать PDF-документы, включая PDF-формы, и объединять PDF-файлы. Однако эти теги не используют механизм Adobe PDF, но cfdocument использует комбинацию коммерческой библиотеки JPedal Java PDF и бесплатной библиотеки Java с открытым исходным кодом iText , а cfhtmltopdf использует встроенную реализацию WebKit . [15]
ColdFusion изначально не был объектно-ориентированным языком программирования, таким как PHP версии 3 и ниже. ColdFusion попадает в категорию объектно-ориентированных языков, не поддерживающих множественное наследование (наряду с Java, Smalltalk и т. д.). [16] В версии MX (6+) компания ColdFusion представила базовую объектно-ориентированную функциональность с помощью языковой конструкции компонента , которая напоминает классы в объектно-ориентированных языках. Каждый компонент может содержать любое количество свойств и методов. Один компонент может также расширять другой ( Наследование ). Компоненты поддерживают только одиночное наследование. В последующих выпусках был улучшен набор функций обработки объектов и улучшена производительность. С выпуском ColdFusion 8 поддерживаются интерфейсы в стиле Java. Компоненты ColdFusion используют расширение файла cfc , чтобы отличать их от шаблонов ColdFusion (.cfm).
Методы компонентов могут быть доступны в виде веб-сервисов без дополнительного кодирования и настройки. Все, что требуется, — это объявить доступ к методу «удаленным». ColdFusion автоматически генерирует WSDL по URL-адресу компонента следующим образом: http://path/to/comComponents/Component.cfc?wsdl. Помимо SOAP, услуги предлагаются в двоичном формате Flash Remoting.
Методы, объявленные удаленными, также можно вызывать с помощью HTTP-запроса GET или POST. Рассмотрим запрос GET, как показано.
http://путь/к/компонентам/Component.cfc?method=search&query=your+query&mode=strict
Это вызовет функцию поиска компонента, передав в качестве аргументов «ваш запрос» и «строгий».
Этот тип вызова хорошо подходит для приложений с поддержкой Ajax . В ColdFusion 8 появилась возможность сериализовать структуры данных ColdFusion в JSON для использования клиентом.
Сервер ColdFusion автоматически сгенерирует документацию для компонента, если вы перейдете по его URL-адресу и вставите соответствующий код в объявления компонента. Это приложение самоанализа компонентов, доступное разработчикам компонентов ColdFusion. Для доступа к документации компонента требуется пароль. Разработчик может просмотреть документацию для всех компонентов, известных серверу ColdFusion, перейдя по URL-адресу ColdFusion. Этот интерфейс напоминает HTML-документацию Javadoc для классов Java.
ColdFusion предоставляет несколько способов реализации пользовательских тегов языка разметки , т. е. тех, которые не включены в основной язык ColdFusion. Они особенно полезны для предоставления знакомого интерфейса веб-дизайнерам и авторам контента, знакомым с HTML, но не императивным программированием .
Традиционный и наиболее распространенный способ — использование CFML. Стандартную страницу CFML можно интерпретировать как тег, имя которого соответствует имени файла с префиксом «cf_». Например, файл IMAP.cfm можно использовать в качестве тега «cf_imap». Атрибуты, используемые в теге, доступны в области ATTRIBUTES на странице реализации тега. Страницы CFML доступны в том же каталоге, что и вызывающая страница, через специальный каталог в веб-приложении ColdFusion или через тег CFIMPORT на вызывающей странице. Последний метод не обязательно требует префикса «cf_» для имени тега.
Второй путь — разработка тегов CFX с использованием Java или C++. Теги CFX имеют префикс «cfx_», например «cfx_imap». Теги добавляются в среду выполнения ColdFusion с помощью администратора ColdFusion, где файлы JAR или DLL регистрируются как пользовательские теги.
Наконец, ColdFusion поддерживает библиотеки тегов JSP из спецификации языка JSP 2.0. Теги JSP включаются в страницы CFML с помощью тега CFIMPORT.
Стандартная установка ColdFusion позволяет развертывать ColdFusion в виде файла WAR или файла EAR для развертывания на автономных серверах приложений, таких как Macromedia JRun и IBM WebSphere . ColdFusion также можно развернуть в контейнерах сервлетов, таких как Apache Tomcat и Mortbay Jetty , но поскольку эти платформы официально не поддерживают ColdFusion, многие из его функций остаются недоступными. Начиная с ColdFusion 10, Macromedia JRun был заменен на Apache Tomcat .
Поскольку ColdFusion — это приложение Java EE, код ColdFusion можно смешивать с классами Java для создания различных приложений и использования существующих библиотек Java. ColdFusion имеет доступ ко всем базовым классам Java, поддерживает библиотеки пользовательских тегов JSP и может получать доступ к функциям JSP после получения контекста страницы JSP ( GetPageContext() ).
До ColdFusion 7.0.1 компоненты ColdFusion можно было использовать только в Java или .NET, объявив их как веб-сервисы. Однако, начиная с ColdFusion MX 7.0.1, компоненты ColdFusion теперь можно использовать непосредственно в классах Java с помощью класса CFCProxy. [17]
В последнее время наблюдается большой интерес к разработке Java с использованием альтернативных языков, таких как Jython , Groovy и JRuby . ColdFusion была одной из первых платформ сценариев, поддерживающих этот стиль разработки Java.
ColdFusion 8 изначально поддерживает .NET в синтаксисе CFML. Разработчики ColdFusion могут просто вызывать любую сборку .NET без необходимости перекомпилировать или каким-либо образом изменять сборки. Типы данных автоматически преобразуются между ColdFusion и .NET (пример: .NET DataTable → ColdFusion Query).
ColdFusion 8 — уникальная функция для поставщика Java EE. Она предлагает возможность удаленного доступа к сборкам .NET через прокси-сервер (без использования .NET Remoting ). Это позволяет пользователям ColdFusion использовать .NET без необходимости установки в операционную систему Windows.
Аббревиатура языка разметки ColdFusion — CFML . Когда шаблоны ColdFusion сохраняются на диск, им традиционно присваивается расширение .cfm или .cfml. Расширение .cfc используется для компонентов ColdFusion. Исходным расширением было DBM или DBML, что означало язык разметки баз данных. Говоря о ColdFusion, большинство пользователей используют аббревиатуру CF, которая используется для обозначения многочисленных ресурсов ColdFusion, таких как группы пользователей (CFUG) и сайты.
CFMX — это общее сокращение для версий ColdFusion 6 и 7 (также известных как ColdFusion MX).
ColdFusion возникла как запатентованная технология, основанная на отраслевых стандартах веб-технологий. Однако она становится менее закрытой технологией благодаря наличию конкурирующих продуктов. К таким альтернативным продуктам относятся:
Они сняты с производства или отключены:
Можно возразить, что ColdFusion даже менее привязан к платформе, чем сырой Java EE или .NET, просто потому, что ColdFusion будет работать поверх сервера приложений .NET (Новая Атланта) или поверх любого контейнера сервлетов или приложения Java EE. сервер ( JRun , WebSphere , JBoss , Geronimo , Tomcat , Resin Server , Jetty (веб-сервер) и т. д.). Теоретически приложение ColdFusion можно без изменений переместить с сервера приложений Java EE на сервер приложений .NET.
В марте 2013 года известная проблема, затронувшая ColdFusion 8, 9 и 10, сделала Национальную базу данных уязвимостей открытой для атак. [18] Уязвимость была обнаружена, и в январе компания Adobe выпустила патч для CF9 и CF10. [19]
В апреле 2013 года компания Linode обвинила уязвимость ColdFusion во вторжении на веб-сайт панели управления Linode Manager. [20] Неделей ранее компания Adobe выпустила бюллетень по безопасности и исправление для этой проблемы. [21]
В мае 2013 года Adobe обнаружила еще одну критическую уязвимость, которая, как сообщается, уже используется в реальных условиях и нацелена на все последние версии ColdFusion на любых серверах, где веб-администратор и API не заблокированы. Уязвимость позволяет неавторизованным пользователям загружать вредоносные скрипты и потенциально получить полный контроль над сервером. [22] Бюллетень по безопасности и исправление для этой проблемы были выпущены Adobe 6 дней спустя. [23]
В апреле 2015 года Adobe устранила уязвимость межсайтового скриптинга (XSS) [24] в Adobe ColdFusion 10 до обновления 16 и в ColdFusion 11 до обновления 5, которая позволяла удаленным злоумышленникам внедрять произвольный веб-скрипт или HTML; [25] однако его могут использовать только пользователи, прошедшие аутентификацию через панель администрирования.[26]
В сентябре 2019 года Adobe исправила две уязвимости внедрения команд (CVE-2019-8073), которые позволяли использовать произвольный код и обход переулка (CVE-2019-8074).