Введение
Платформа для быстрой разработки веб-приложений, серверная платформа Adobe.
the Adobe server platform
Adobe ColdFusion — это коммерческая вычислительная платформа для быстрой разработки веб-приложений, созданная J. J. Allaire в 1995 году. (Язык программирования, используемый с этой платформой, также часто называют ColdFusion, хотя более точно его называют CFML.) Изначально ColdFusion был разработан для упрощения подключения простых HTML-страниц к базе данных. К версии 2 (1996) он превратился в полноценную платформу, включающую в себя интегрированную среду разработки (IDE) и полноценный язык сценариев.
Обзор
Одной из отличительных особенностей ColdFusion является связанный с ним язык сценариев, ColdFusion Markup Language (CFML). CFML по назначению и функциям сопоставим со скриптовыми компонентами ASP, JSP и PHP, но его синтаксис тегов больше напоминает HTML, а синтаксис скриптов – JavaScript. ColdFusion часто используется как синоним CFML, однако существуют и другие серверы приложений CFML, помимо ColdFusion, а ColdFusion поддерживает языки программирования, отличные от CFML, такие как ActionScript на стороне сервера и встроенные скрипты, написанные на языке, подобном JavaScript, известном как CFScript. Изначально разработанный братьями Джозефом Дж. Аллайром и Джереми Аллайром и выпущенный 2 июля 1995 года как продукт компании Allaire, ColdFusion в 2001 году был приобретен Macromedia, которая, в свою очередь, в 2005 году была приобретена Adobe Systems Inc. ColdFusion чаще всего используется для создания веб-сайтов или интранет-систем, работающих с данными, но также может применяться для генерации удаленных сервисов, таких как REST-сервисы, WebSockets, веб-сервисы SOAP или Flash Remoting. Он особенно хорошо подходит в качестве серверной технологии для клиентской части Ajax. ColdFusion также способен обрабатывать асинхронные события, такие как SMS и мгновенные сообщения, через свой шлюзовой интерфейс, доступный в ColdFusion MX 7 Enterprise Edition.
Другие особенности
Все версии ColdFusion до 6.0 были написаны на Microsoft Visual C++. Это означало, что ColdFusion в основном был ограничен работой в операционной системе Microsoft Windows, хотя компании Allaire удалось портировать ColdFusion на Sun Solaris, начиная с версии 3.1. Компания Allaire была продана Macromedia, а затем Macromedia — Adobe. Более ранние версии были менее надежными, чем версии, начиная с 4.0. С выпуском ColdFusion MX 6.0 движок был переписан на Java и поддерживал собственную среду выполнения, которую можно было легко заменить через параметры конфигурации на среду выполнения от Sun. Версия 6.1 включала возможность разработки и отладки Macromedia Flash.
Холодный синтез 3
Версия 3, выпущенная в июне 1997 года, представила пользовательские теги, cfsearch/cfindex/cfcollection, основанные на поисковой системе Verity, область видимости сервера и кодировку шаблонов (тогда называемую "шифрованием"). Версия 3.1, выпущенная в январе 1998 года, добавила поддержку RDS, а также портирование на операционную систему Sun Solaris, при этом ColdFusion Studio получила функцию предварительного просмотра страниц в реальном времени и средство проверки синтаксиса HTML.
Холодный синтез 4
Выпущенная в ноябре 1998 года версия 4 ознаменовала изменение названия с "Cold Fusion" на "ColdFusion", вероятно, чтобы отличить продукт от теории холодного ядерного синтеза. В этом релизе также была впервые реализована поддержка cfscript, блокировок (cflock), транзакций (cftransaction), иерархической обработки исключений (cftry/cfcatch), безопасности в изолированной среде (песочнице), а также множество новых тегов и функций, включая cfstoredproc, cfcache, cfswitch и другие.
Холодное плавление 4.5
Версия 4.5, выпущенная в ноябре 1999 года, расширила возможности доступа к внешним системным ресурсам, включая COM и CORBA, и добавила первоначальную поддержку интеграции с Java (включая EJB, Pojo, сервлеты и Java CFX). Также была добавлена функция getmetricdata (для доступа к информации о производительности), дополнительная информация о производительности в результатах отладки страницы, улучшенные функции преобразования строк и опциональное удаление пробелов.
Холодный синтез 5
Версия 5 была выпущена в июне 2001 года и включала в себя расширенную поддержку запросов, новые возможности для создания отчетов и диаграмм, пользовательские функции и улучшенные инструменты администрирования. Это была последняя версия, разработанная с использованием устаревшего кода для конкретной платформы, и первый релиз от Macromedia после приобретения Allaire Corporation, о котором было объявлено 16 января 2001 года.
ColdFusion MX 6 (Стиль сжигания)
До 2000 года Эдвин Смит, архитектор Allaire в JRun, а затем Flash Player, Том Харвуд и Клемент Вонг начали проект под кодовым названием "Neo". Позже стало известно, что этот проект представлял собой сервер 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 MX 7 (Стиль сжатия)
С выпуском ColdFusion 7.0 7 февраля 2005 года, схема именования была изменена, в результате чего название продукта стало "Macromedia ColdFusion MX 7" (кодовое имя CFMX7 – "Blackstone"). CFMX 7 добавил веб-формы на основе Flash и XForms, а также конструктор отчетов, который мог выводить данные в форматы Adobe PDF, FlashPaper, RTF и Excel. Возможность вывода в Adobe PDF также предоставлялась как оболочка для любой HTML-страницы, преобразуя её в качественный документ для печати. В корпоративной версии также были добавлены шлюзы (Gateways), обеспечивающие взаимодействие с сервисами, не использующими HTTP-запросы, такими как IM-сервисы, SMS, Directory Watchers и асинхронное выполнение. Поддержка 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 Report Builder.
Adobe ColdFusion 8 (всего один экземпляр)
30 июля 2007 года компания Adobe Systems выпустила ColdFusion 8, исключив "MX" из названия. Во время бета-тестирования кодовым именем проекта был "Скорпион" (восьмой знак зодиака и восьмая итерация ColdFusion как коммерческого продукта). В бета-тестировании приняли участие более 14 000 разработчиков по всему миру, что значительно превысило первоначальные ожидания Adobe Systems в 5 000 участников. Команда разработки ColdFusion состояла из разработчиков, базировавшихся в Ньютоне/Бостоне (штат Массачусетс) и в Бангалоре (Индия). Среди новых функций – тег CFPDFFORM, обеспечивающий интеграцию с формами Adobe Acrobat, функции обработки изображений, интеграция с Microsoft .NET и тег CFPRESENTATION, позволяющий создавать динамические презентации с использованием Adobe Acrobat Connect – решения для веб-сотрудничества, ранее известного как Macromedia Breeze. Кроме того, администратор ColdFusion для корпоративной версии (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 и более полное соответствие CFSCRIPT стандарту ECMAScript. Для разработки приложений ColdFusion доступны различные инструменты, в первую очередь Adobe Dreamweaver CS4, Macromedia HomeSite 5.x, CFEclipse, Eclipse и другие. Для этих приложений доступны "обновления тегов", позволяющие добавить поддержку новых функций ColdFusion 8.
Adobe ColdFusion 9 (англ.) (англ.) (полностью переведен)
ColdFusion 9 (кодовое название: Centaur) был выпущен 5 октября 2009 года. Новые возможности CF9 включают:
Возможность написания компонентов ColdFusion (CFC) целиком на CFScript. Явная локальная область видимости, не требующая объявления локальных переменных в начале функции. Неявные геттеры/сеттеры для CFC. Неявные конструкторы через метод с именем "init" или метод с тем же именем, что и CFC. Новый тег CFFinally для обработки исключений и тег CFContinue для управления потоком выполнения. Объектно-реляционное отображение (ORM) и интеграция с базами данных через Hibernate (Java). Файл server.cfc с методами onServerStart и onServerEnd. Улучшенная интеграция с Adobe Flex и Adobe AIR. Интеграция с ключевыми продуктами Microsoft, включая Word, Excel, SharePoint, Exchange и PowerPoint. Управление памятью или виртуальная файловая система: возможность работы с содержимым в памяти вместо использования жесткого диска. Предоставление в качестве сервисов: возможность безопасного внешнего доступа к функциям сервера.
Ability to code ColdFusion Components (CFCs) entirely in CFScript. An explicit "local" scope that does not require local variables to be declared at the top of the function. Implicit getters/setters for CFC. Implicit constructors via method called "init" or method with same name as CFC. New CFFinally tag for Exception handling syntax and CFContinue tag for Control flow. Object relational mapping (ORM) Database integration through Hibernate (Java). Server. cfc file with onServerStart and onServerEnd methods. Tighter integration with Adobe Flex and Adobe AIR. Integration with key Microsoft products including Word, Excel, SharePoint, Exchange, and PowerPoint. In Memory Management or Virtual File System: an ability to treat content in memory as opposed to using the HDD. Exposed as Services an ability to access, securely, functions of the server externally.
Дорожная карта развития
В сентябре 2017 года Adobe представила дорожную карту с планируемыми релизами в 2018 и 2020 годах. К ключевым функциям, ожидаемым в релизе 2016 года, относились новый монитор производительности, улучшения асинхронного программирования, переработанная поддержка REST, усовершенствования API Manager, а также поддержка CF2016 с перспективой до 2024 года. Что касается релиза 2020 года, то в то время (в 2017 году) ожидались возможности конфигурирования (модульности) сервисов приложений CF, переработанная поддержка скриптов и объектно-ориентированного программирования, а также дальнейшие усовершенствования API Manager.
Создание PDF-файлов
ColdFusion может генерировать PDF-документы, используя стандартный HTML (то есть для создания документов для печати не требуется дополнительного программирования). Разработчики CFML помещают HTML и CSS между парными тегами `cfdocument` (или, начиная с ColdFusion 11, тегами `cfhtmltopdf`). Сгенерированный документ можно сохранить на диск или отправить в браузер клиента. В ColdFusion 8 также был представлен тег `cfpdf`, позволяющий управлять PDF-документами, включая PDF-формы, и объединять PDF-файлы. Однако эти теги не используют движок Adobe PDF; `cfdocument` использует комбинацию коммерческой Java-библиотеки JPedal PDF и бесплатной библиотеки Java iText с открытым исходным кодом, а `cfhtmltopdf` использует встроенную реализацию WebKit.
Компоненты холодной синтезации (объекты)
ColdFusion изначально не был объектно-ориентированным языком программирования, как PHP версий 3 и ниже. ColdFusion относится к категории объектно-ориентированных языков, которые не поддерживают множественное наследование (наряду с Java, Smalltalk и другими). С выпуском MX (версия 6 и выше) в ColdFusion была внедрена базовая объектно-ориентированная функциональность с помощью конструкции языка "компоненты", которая напоминает классы в объектно-ориентированных языках. Каждый компонент может содержать любое количество свойств и методов. Один компонент также может наследовать от другого (наследование). Компоненты поддерживают только одиночное наследование. Функциональность работы с объектами и повышение производительности были улучшены в последующих версиях. С выпуском ColdFusion 8 поддерживаются интерфейсы в стиле Java. Компоненты ColdFusion используют расширение .cfc для отличия от шаблонов ColdFusion (.cfm).
Удаление
Компонентные методы могут быть доступны как веб-сервисы без дополнительного кодирования и настройки. Все, что требуется – это объявить доступ к методу как "удаленный". ColdFusion автоматически генерирует WSDL по URL-адресу компонента следующим образом: http://path/to/components/Component.cfc?wsdl. Помимо SOAP, сервисы предлагаются в бинарном формате Flash Remoting. Методы, объявленные как удаленные, также могут быть вызваны через HTTP GET или POST запрос. Рассмотрим пример GET-запроса: http://path/to/components/Component.cfc?method=search&query=your+query&mode=strict
Этот запрос вызовет функцию поиска компонента, передавая "your query" и "strict" в качестве аргументов. Этот тип вызова хорошо подходит для приложений, использующих Ajax. ColdFusion 8 представила возможность сериализации структур данных ColdFusion в JSON для использования на стороне клиента. Сервер ColdFusion автоматически генерирует документацию для компонента, если перейти по его URL и добавить соответствующий код в объявления компонента. Это пример интроспекции компонентов, доступной разработчикам компонентов ColdFusion. Доступ к документации компонента требует пароль. Разработчик может просмотреть документацию для всех компонентов, известных серверу ColdFusion, перейдя по URL-адресу ColdFusion. Этот интерфейс напоминает HTML-документацию Javadoc для классов Java.
This will invoke the component's search function, passing "your query" and "strict" as arguments. This type of invocation is well suited for Ajax enabled applications. ColdFusion 8 introduced the ability to serialize ColdFusion data structures to JSON for consumption on the client. The ColdFusion server will automatically generate documentation for a component if you navigate to its URL and insert the appropriate code within the component's declarations. This is an application of component introspection, available to developers of ColdFusion components. Access to a component's documentation requires a password. A developer can view the documentation for all components known to the ColdFusion server by navigating to the ColdFusion URL. This interface resembles the Javadoc HTML documentation for Java classes.
Настраиваемые теги
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 и Java
Стандартная установка 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. В последнее время наблюдается повышенный интерес к Java-разработке с использованием альтернативных языков, таких как Jython, Groovy и JRuby. ColdFusion была одной из первых платформ для скриптов, предоставивших возможность использовать такой подход к Java-разработке.
ColdFusion и .NET
ColdFusion 8 обеспечивает нативную поддержку .NET в синтаксисе CFML. Разработчики ColdFusion могут напрямую вызывать любые .NET-сборки без необходимости их перекомпиляции или изменения. Типы данных автоматически преобразуются между ColdFusion и .NET (например, .NET DataTable → ColdFusion Query). Уникальная для поставщика Java EE возможность, ColdFusion 8 предоставляет доступ к .NET-сборкам удаленно через прокси (без использования .NET Remoting). Это позволяет пользователям ColdFusion использовать .NET, не требуя установки операционной системы Windows.
Акроним
Сокращенное название языка разметки ColdFusion – CFML. При сохранении шаблонов ColdFusion на диск им традиционно присваиваются расширения cfm или cfml. Расширение cfc используется для компонентов ColdFusion. Изначальным расширением были DBM или DBML, что расшифровывалось как Database Markup Language. Когда говорят о ColdFusion, большинство пользователей используют аббревиатуру CF, которая применяется ко множеству ресурсов ColdFusion, таких как пользовательские группы (CFUG) и веб-сайты. CFMX – общепринятое сокращение для версий 6 и 7 ColdFusion (также известных как ColdFusion MX).