Категорія: Frameworks
Современные фреймворки для качественной разработки на Adobe Coldfusion
(Доклад на встрече .NET User Group Sevastopol 29 июля 2011г., офис компании Softserve, Севастополь)

Фреймворк - это кусок кода, который используется повторно для создания проектов на его основе. Это своеобразны шаблон проектов. Фреймворк призван ограничивать фантазию разработчика, ставить определенные рамки, но взамен фреймворк предлагает хорошие, проверенные архитектурные решения. Следуя вдоль линий, намеченных фреймворком, разработчик в результате получит предсказуемый результат и качественный "робастный" код.
Прежде чем рассказать о фреймворках для Coldfusion, напомним, что представляет из себя этот продукт. Adobe Coldfusion - это сервер приложений, написанный по спецификации JEE, и реализующий язык Coldfusion Markup Language (CFML). CFML - интерпретируемый язык, с помощью которого можно создать веб-сайты любой сложности. Кроме веб-сайтов для Интернета, с помощью Coldfusion легко создавать сайты для корпоративных сетей (Интранетов), благодаря хорошей интеграции с корпоративными серверами, работе с разными форматами данных и протоколов.
Coldfusion появился в 1995 году и обрел популярность во времена "бума дот-комов". В то время сайты делались вебмастерами на HTML, без привлечения скриптовых языков, а единственной опцией было использование Perl. Последний нельзя считать легким для изучения и применения вебмастером - человеком с преимущественно дизайнерским набором навыков. Ответом на это было сделать простой теговый язык наподобие HTML, для быстрого освоения и разработки сайтов. После краха доткомов, Coldfusion несколько растерял популярность на волне популярности ASP и PHP, но выжил благодаря хорошей адаптации в корпоративной среде и в государственном аппарате США. Сейчас происходит второе рождение Coldfusion, и ему есть что предложить миру.
Скорость и легкость разработки на CFML имеет свои обратные стороны. Зачастую, код писался слишком быстро, чтобы выйти на рынок быстрее конкурентов. Качество было забыто, и зачастую код писался непрофессиональными программистами, что не могло отразиться на качестве. Отсутствие общей архитектуры проекта и организации кода, привело к появлению "спагетти"-кода (длинные куски кода, связанные с другими кусками в неразрешимые клубки), в котором сложно разбираться, исправлять ошибки и расширять функциональность. Выделим основные проблемы неструктурированного кода:
- отсутствие общей для проекта структуры кода
- низкая связность кода (low cohesion) - бизнес-логика "размазана" по разным участкам кода в проекте
- высокая связанность кода (tight coupling) - модули кода могут выполнять действия только в связке с другими модулями или внешними данными)
Соответственно, и решение этих проблем лежит в:
- архитектуре - применении паттерна MVC
- повышении связности кода (high cohesion) - организации модулей, каждый из которых реализует одну, заранее хорошо определенную бизнес-функцию
- понижении связанности кода (loose coupling) - делать модули как можно менее зависимыми друг от друга, передавая параметры или обмениваясь сообщениями
Хороший фреймворк призван решить эти три проблемы. Будучи написан опытными людьми, фреймворк предложит решения и направит разработчика по правильному пути. При этом фреймворк должен без изменения подходить вашему проекту, а его код быть легким и оптимизированным. Выбирая фреймворк из нескольких, обратите внимание насколько он хорошо поддерживается, есть-ли у него сторонники, насколько хороша документация.
Опишу несколько популярных фреймворков. Как правило, фреймворки используют такой паттерн для URL:
index.cfm?action=module.procedure
Единая точка входа в приложение - index.cfm, и некоторый "переключатель" - переменная action, в которой задается модуль и действие внутри этого модуля.
Fusebox
Один из ранних фреймворков. В версии 3 использовал CFML для описания модулей, в версии 4 это нужно делать через XML. В 5 версии появилась возможность отказаться от XML в пользу использования CFC. В настоящий момент фреймворк не поддерживается, хотя core-файлы стабильны и пригодны для работы с любым проектом.
Mach-II
Первый объектно-ориентированный фреймворк, представлен с появлением поддержки CFC в Coldfusion MX (2003). С помощью XML-файла фремворк описывает события (events), компоненты CFC, реагирующие на эти события, и views - CFM-файлы, отвечающие за внешний вид. Фреймворк развивается, на нем реализованы многие корпоративные приложения.
Coldspring
http://www.coldspringframework.org/
При работе с многими CFC-компонентами может встать вопрос об их упорядоченном использовании. Например, когда нужно инстанцировать зависимые объекты или синглтоны. Чтобы не следить за зависимостями вручную, фреймворк Coldspring может делать это автоматически. Для этого используется XML-конфигурация используемых объектов (beans), а для вызова конкретного объекта можно использовать лишь запрос к фабрике объектов Coldspring.
TransferORM
Object-Relation Mapping - технология работы с данными в БД с помощью объектного подхода. Один экземпляр (объект) сопоставляется (mapped) одной строке в таблице БД. Это позволяет получать доступ (считывать), добавлять, изменять и удалять записи из БД, не прибегая к написанию SQL-кода. В конечном итоге это экономит время на рутинных операциях. TransferORM - это ORM-фреймворк для Coldfusion 7 и выше. Существующие таблицы БД (и их связи) описываются XML-файлом, по которому в последствии генерируются объекты. Каждый объект содержит поля, соответствующие полям таблицы в БД, а также геттеры-сеттеры для доступа к этим полям. TransferORM поддерживает возврат списков сущностей, поиск по фильтру, поиск по запросу (используется язык TQL - Transfer Query Language).
FW/1 (Framework One)
Новый фремворк, построенный по принципу Convention over Configuration, при котором описание структуры ложится на файловую систему. Фреймворк реализован всего одним CFC файлом, от которого нужно унаследовать Application.cfc нового проекта. Фреймворк реализует паттерн MVC таким образом. Контроллером модуля является один CFC, находящийся в папке /controllers, в этом контроллере определены методы данного модуля. Для доступа к внешним данным можно использовать службу, которая также реализуется через CFC в папке /services. После выполнения метода контроллера, данные собранные в контроллере и службе, через переменную rc передаются дальше, во view, который лежит в соответсвенно папке views/module/procedure.cfm. Для облегчения дизайнерского труда используются шаблоны, которые лежат в папке /layouts и могут иметь три уровня вложенности. Вот иллюстрация, как происходит вызов и сборка конечной страницы:

Минимально необходимым файлом для создания приложения на FW/1 является /views/module/procedure.cfm. Остальные файлы, включая контроллеры, сервисы и лэйауты, необязательны. Framework One подкупает своей простотой использования и скоростью работы.
Заключение
Описанные фреймворки - не единственные, но популярные, которые я бы лично рекомендовал для любого проекта. Мой личный фаворит - FW/1 - за его легкость и простоту. Используя наработанные библиотеки классов (CFC) в проекте на базе FW/1, я обычно использую Coldspring для описания зависимостей между классами в библиотеке, а также TransferORM для упрощения рутинных операций. Для сложных запросов я не прибегаю к помощи TransferORM, чтобы не усложнять код; я пишу обычный SQL-код и хранимые процедуры. Применять тот или иной фреймворк нужно осмысленно, примеряя его возможности к потребностям конкретного проекта и конкретной команды.
Дополнительное чтение по теме:
http://www.aliaspooryorik.com/blog/index.cfm/e/posts.details/post/oo-and-fusebox-no-xml-141
http://www.adobe.com/devnet/coldfusion/articles/frameworks_intro.html
Новини CF-OpenSource v16
Цей спец-випуск присвячено виходу нових версій двох прогресивних фреймворків.
Команда розробників CFWheels невпинно наближається до великого релізу, тим часом випустивши оновлення за номером 1.0.5.
Воно включає в себе більш як 2 десятки виправлень. Повний їх список можна переглянути в публікації Released: ColdFusion on Wheels 1.0.5
Натомість Шон Корфілд (Sean Corfield) його вже досяг, повідомивши про вихід версії 1.1.
Серед оновлень:
- Рекомендований скелет додатку.
- Більш гнучка конфігурація підсистем та контролерів.
- Нові можливості API.
Повний список можна переглянути в публікації FW/1 Release 1.1 Available!
Новини CF-OpenSource v15
Оновлення продуктів та додатків
SeleniumMX - A Selenium + MxUnit Framework
Вельми перспективний проект, що об'єднує в собі два фреймворки для тестування.
Допоміжний випуск фреймворку, що слідує за нещодавним 1.8.
cfUniForm v.4.0 - Leaner, Meaner, More Features - Just Plain Ol' Better
Нова версія фреймворку для побудови форм.
Новий convention-based фреймворк для CF9, що використовує можливості Hibernate.
Компонента для обчислення розмірів flash-роліку.
Компонента для взаємодії з API сервісу для розміщення малюнків.
ValidateThis CFWheels Plugin 0.5
Додаток до CFWheels, що дозволяє використовувати на сайті ValidateThis, фреймворк для валідації форм.
Rhea: Rackspace Cloud API 0.99
Втілення взаємодії з API хостингу Rackspace Cloud.
Модуль, що дозволяє програмно керувати включенням JavaScript та CSS до сторінок сайту, в тому числі з мінімізацією.
bit.ly URL Service API CFC 1.0
Втілення взаємодії з API Bit.ly, сервісу скорочення посилань.
Втілення взаємодії з API Eventbrite, сервісу для організації подій.
ColdFusion File Manager 1.0 alpha 3
Файловий менеджер з GUI на Ajax.
Оголошення про випуск оновлення популярного блогу.
Різні оновлення та повідомлення
Code coverage & cyclomatic complexity calculations coming to ColdFusion
Обговорення системи для тестування Chimera.
Framework One Sample Application - QBall
Приклад розробки на FW/1 від Рея Кемдена.
Do you want to see this in LightWire?
Пітер Белл запитує про доцільність додавання деяких нових можливостей до LightWire.
Ще один опис першого досвіду роботи з FW/1.
Опис досвіду розгортання Mango з Oracle в якості СУБД.
Content Management and the Splash CMS — Introduction
Огляд Splash CMS, побудованої на базі CFWheels.
Новини CF-OpenSource v14
Оновлення продуктів та додатків
Model Glue 3.1 Release Candidate
New Official Release - Model-Glue 3.1
Вийшов новий випуск популярного фреймворку. Він містить чималу кількість виправлень та покращень, повний список яких можна переглянути за першим посиланням.
Марк Мендел робить короткий огляд планів щодо першого повноцінного релізу його системи для автоматизації документування.
Додаток, що замінює редактор на Markdown в Mango Blog.
Втілення підсвітки синтаксису з prettify.js для Mango.
Позиціонується як проект для управління процесом розробки з використанням Agile/Scrum методик. На момент написання публікації чомусь було відсутнє посилання до завантаження.
Назва говорить сама за себе.
Компонента для втілення можливостей API Intuit QuickBooks. Яких саме, пропонується дізнатися з документації.
Компонента для організації взаємодії з IMAP-шлюзом.
Компонента для організації взаємодії з SNMP-шлюзом.
Колись комерційний продукт для роботи з малюнками зроблено вільним, очевидно завдяки розповсюдженю CF8+, де ці можливості втілені на рівні мови.
Ситуація аналогічна попередньому записові.
cfCalais – A Coldfusion tag to easily create semantic data
Мітка для додавання семантичної розмітки для даних на сторінках сайту.
Mach-II Simplicity (1.8) Released
Випущено нову версію популярного фремворку.
Різні оновлення та повідомлення
Trying out the CFWheels framework
Звіт про експерименти початківця з CFWheels.
Front Controllers Should NOT Extend Application.cfc
Барні Бувер пропонує подискутувати щодо потреби наслідування Application.cfc на прикладі FW/1
Замітка розповідає про те, як можна вбудувати JavaLoader до проекту на Mach-II.
ColdFusion Query of Query tips and tricks
Ендрю Мерсер ділиться деякими знахідками та підказками з використання QoQ.
Cache Template in Request Setting Explained
Піт Фрейтаґ пояснює особливості цієї нової можливості CF9.
Новини CF-OpenSource v13
Оновлення продуктів та додатків
ColdFusion on Wheels 1.0.1 Maintenance Release
ColdFusion on Wheels 1.0.2 Maintenance Release
Відразу два супровідні випуски (maintenance releases) "Коліс", перший містить ряд покращень стабільності фреймворку, але містить якісь невідомі (в сенсі не розкриті розробниками) проблеми, для вирішення яких і було в пожежному режимі випущено наступне оновлення.
Додаток від розробників CMS, що дозволяє легко включати існуючі додатки на FW/1 до проекту.
Компонента для взаємодії з API системи Spotify
Втілення можливості використання цієї Java-бібліотеки з ColdFusion
Компонента для взаємодії з API системи Twilio (підтримуються як голосові, так і SMS послуги)
Бібліотека для керування макетами сайтів.
Додаток, що втілює механізм списків.
Різні оновлення та повідомлення
Проект The ColdFusion Common Modules це колекція ініціатив, спрямованих на розробці стабільних, об'єктно-орієнтованих бібліотек ColdFusion компонент з відкритим кодом, пристосованих для багаторазового використання.
Сьогодні було випущено стабільну версію цього менеджера для ColdFusion серверів. Він розпосвюджується вільно (крім вихідних кодів AIR-додатку - тому новину було розміщено в цій частині публікації), але пропонується платний пакет з технічною підтримкою та оновленнями.
Новини CF-OpenSource v12
Оновлення продуктів та додатків
CFZen Framework (Pre-Alpha Release)
Так, ще один простий фреймворк.
CMS, що базується на Model-Glue з ColdSpring.
Компонента для взаємодії з API системи ENOM.
Make Your ColdFusion Builder Extensions Auto-Update
Мета-додаток, що додає можливість автоматичного оновлення додатків CFB, наприклад безпосередньо з RIAForge.
Ще один додаток, що дозволяє поширювати інформацію про публікації блогу в багатьох мережевих ресурсах.
Жупан для блогу, створений на базі шаблону Styleshout.
Mango Plugin: Calendar Pod 1.0
Mango: Додаток, що дозволяє розмістити календар в бічній панелі блогу.
Компонента для взаємодії з API системи drop.io
Quantcast Analytics Mura CMS Plugin 1.5
Дозволяє інтегрувати підрахунок статистики від системи Quantcast.
CFC-обгортка для Java "Faint", системи розпізнавання облич.
Втілення відомої бібліотеки PGP для ColdFusion.
Календар, що дозволяє спільний доступ для групи користувачів.
Показ невеличкої статистики, як то кількість рядків коду.
Конструктор для створення опитувань.
Система для документування та аналізу ІТ-інфраструктури компанії.
ColdFire ColdFusion Debugger 1.4.207.218/1.5.207.223
Оновлення, що нарешті пропонує підтримку Firefox 3.6 та Firebug 1.5.
Після двохрічної паузи оновлено бібліотеку для роботи з POI.
Model-Glue 3.1 Maintenance Release Beta
Один з популярних фреймворків готується до релізу, випускаючи бета-версію.
SalesForce CFC v0.7 Released - Call for Features for 1.0
Оновлення компоненти для взаємодії з SalesForce.
Розповідь про новий фреймворк, призначений для побудови форм.
Різні оновлення та повідомлення
Using Mura as a Blogging Platform
Невелика розповідь про те, як можна створити блог на базі Mura CMS.
Intro into Wheels ORM & Validation Presentation
Матеріяли з презентації щодо можливостей ORM та валідації у фреймворкові CF on Wheels.
Fusebox Fuseactions In Eclipse Outline View
Автор розповідає як можна модифікувати конфігурацію XML редактор Aptana щоб побачити ф'юзекшни в outline.
Update to 'Core' Framework. Now in GitHub!
Автор легкого фреймворку Core проводить екскурс в проект.
Новини CF-OpenSource v10
Оновлення продуктів та додатків на RIAForge
Новий MVC фреймворк.
Компонента, що за допомогою jTidy ковертує текст до валідного xHTML.
Двигунець для створення прототипів, що реалізує принципи scaffolding.
Компонента для безпосередньої взаємодії з SQLite базою без участі JDBC, реалізує стандартні операції, вміє зберігати набір CF даних безпосередньо в таблицю SQLite.
Додаток для експорту мета-даних компоненти до XML-файлу, що може бути імпортований до редактора UML.
Додаток для пошуку зайвих CFM-файлів в директоріях проекту. Навряд чи буде корисним у випадку використання фреймворків, бо базується на пошуку безпосередніх підключень (cfinclude) сторінок.
Втілення API рекомендаційного сервісу Yelp.
Втілення механізму ітератора для складних типів даних.
Втілення API сервісу хостингу онлайн-відео Brightcove.
Втілення складної структури даних: зв'язаний список.
Бібліотека для інтернаціоналізації додатків, потребує CF9.
Вельми корисна бібліотека, що дозволяє не зациклюватися на XML як форматі для обміну даними, але й підтримувати вже існуючі складні текстові формати (як EDI чи VCF4).
Бібліотека, що реалізує базові операції з малюнками.
Smartermail API wrapper + UI 1.0
Втілення API програмного комплексу Smartermail.
Кілька нових додатків для Mango
Розширення для вбудови пошуку блогу в пошукове вікно оглядача.
Додає вказаний віджет до сайту, щоб читачі могли швидко перекладати вміст за допомогою перекладача Google.
Додає блок зі швидкими посиланнями на популярні соціальні веб-сайти, наприклад Facebook чи Twitter.
Дозволяє надсилати листи з блогу (наприклад, сповіщення про коментарі) через SMTP, що вимагають TLS/SSL з'єднання.
Реалізує включення малюнків з Twitpics в бічну панель блогу.
Різні оновлення та повідомлення
Розробники фреймворку Model-Glue опублікували тренувальний курс для новачків.
Mach-II Simplicity (1.8) RC2 Released
Черговий крок до випуску нової версії Mach-II
Ще один популярний продукт готується до випуску нової версії. Це додаток для підсвітки синтаксису від Джейсона Делмора, що використовується зокрема в BlogCFC.
Кілька оновлень отримав і додаток, що втілює scaffolding для Fusebox.
Implicit Blocks in Fusebox 5.5.1
Патч для Fusebox, що дозволяє обійтись без зайвих true міток, коли в if-блоці немає false.
Оновлено бібліотеку для захисту додатків від SQL-ін'єкцій та XSS атак.
Випущено CFWheels 1.0
Менше місяця тому ми вже повідомляли про те, що фреймворк готується до випуску стабільної версії, і ось це трапилось!
Це чудовий привід придивитися до нього поближче та спробувати в дії.
Задля цього на CFUG заводимо відповідну категорію та плануємо детальніший огляд на майбутнє.
Скачати дистрибутив можна з офіційного сайту, поспілкуватися з учасниками спільноти можна в Google групі.
Поповнення команди FW/1
Як повідомив у своєму блозі Шон Корфілд, команда фреймворку FW/1 збільшилася до двох чоловік.
Другим став Раян Коґсвелл, дуже активний учасник обговорення додатку та автор кількох корисних патчів.
Здається, настав час пильніше придивитися до цього фреймворку.
Новини CF-OpenSource v7
Андреа Камполоньї повідомив про реліз його додатку, що реалізує EM-парадігму (events based) для CFML.
Update to CFML Framework Skeletons – Eclipse Plugin
Роберт Бернс повідомив про оновлення свого корисного додатку для Eclipse, що допомагає створювати скелети проектів для різних фреймворків. В цьому релізі були додані FW/1 та LightFront.
ColdBricks 1.1 Update: Custom Resource Libraries & Extension Modules
Оскар Еревало повідомив про деякі оновлення ColdBricks CMS, котрі є підготовкою до стабільного релізу 1.1.
Випущено оновлення популярного CF-блогу, багато з яких зачіпають клієнтську (JavaScript) частину.
Розширення для Adobe ColdFusion Administrator, що дозволяє виконувати прямі запити (тут -- queries) до колекцій Verity та Solr (в залежності від версії серверу)
Спроба реалізації CRUD-додатку, з доволі широким спектром можливостей.
CFML кастом теґ-обгортка для включення на сторінку FLV, MP3, MP4 та AAC файлів з використанням JW FLV Player.
Дуже рання версія схожого продукту, з опису навіть докладно не зрозумілі його можливості :)
Проста реалізація REST апі для Fusion Reactor, фактично поки підтримує тільки читання метрик сервера в XML форматі.
Реалізація кешування в CFWheels за допомогою додатку Cachebox.
Простий та маленький wiki-двигунець.
Клон рубі-фреймворку Sinatra, поки в ранній стадії розробки.
Новини CF-OpenSource v6
Нові продукти та оновлення
Система для програмного керування налаштуваннями CF сервера, такими як датасорси, мапінги, шляхи до кастом теґів. Підтримуються Adobe ColdFusion 7/8/9 Railo 3.1, OpenBD 1.1
cfUpdater - Manager for ColdFusion Updates
Компонента для спрощення процесу оновлення Adobe ColdFusion версій 7/8/9
Конвертація Google Trends RSS в CFML масив.
Рання альфа компоненти для взаємодії CF з Trac (популярною системою баґтрекінгу з wiki).
Клієнт на Python + CFML скрипти, що дозволяють інтерактивно виконувати CFML код в консолі. Дещо сумнівна щодо практичної користі, але цікава розробка.
Утиліта для міграції блогу з Wordpress на BlogCFC.
Проста в користуванні (як запевняють розробники) реалізація Factory (автоматизоване створення об'єктів) для CFML.
Інтеграція Yahoo Maps в CF додатки, написана одним з членів команди Adobe ColdFusion.
Можливість записувати debug output до файлів - якщо він потрібен, але показувати його небажано, фактично розширення наявної (і доволі кострубатої) системи журналювання.
Невеличкий фреймворк для пришвидшення розробки додатків з ORM.
Реалізація додатку для перевірки правопису в textarea на CFML.
Різні новини зі світу OSS
ColdFusion on Rails is almost here
Кріс Пітерс повідомив про те, що реліз 1.0 CF on Wheels вже близько.
Створено Гугл-групу для Ant4CF.
ColdBox 3.0.0 Beta 2 Released!
Популярний фреймворк наближається до релізу. Що нового третій версіі можна дізнатися з wiki проекту.
Новини CF-OpenSource v5
Невеличкий огляд на сьогодні
Як повідомляє автор, цей фреймворк для кешування майже "дозрів" до релізу.
Майже те саме можна зауважити про вже відомий нам фреймворк CFWheels.
Додаток до Fusebox, що дозволяє швидко інтегрувати існуючі рішення з кешування для CF, зокрема вищезгаданий CacheBox, а також cfMemcached та навіть EHCache з комплекту CF9.
Анонімний автор повідомив про початок розробки аналога WordPress на CF. Сподіваюся, що з нього вийде добрий конкурент існуючим рішенням.
Новини CF-OpenSource v4
Повертаємося до рубрики після деякої паузи. Сьогодні у нас нові CMS, фреймворки та CF9.
Фреймворк, що використовує новинки CF9, а також реалізує сучасні методики розробки.
Ще один невеличкий MVC фреймворк. На відміну від більшости популярних аналогів, не використовує XML для конфігурації, лише "чисті" CFC.
ColdFusion порт Radiant CMS для Ruby.
Додаток до CF Builder для генерації CF9 ORM мапінгів.
Додаток, що реалізує Business Objects для CF9 ORM.
І ще одна CMS, нащадок CF-Nuke.
Додаток, що реалізує чат за допомогою CF та jQuery.
Coldfusion XML Meta Tag System
Додаток для керування мета теґами вашого сайту за допомогою базованої на XML конфігурації.
Цей проект допомагає генерувати тестові номери карток найпопулярніших типів (Visa|Mastercard|Discover|Amex), корисно в процесі розробки та інтеграції платіжних систем.
Documentation Plugin for Mango Blog
Назва каже сама за себе. Плагін інтегрує довідку з Манго прямо в панель адміністратора.
Зміни в документації Fusebox
Як повідомив сьогодні Адам Хаскель (Adam Haskell), документація та баґтркекінг фреймворку більше не вестимуться в Trac. Цікаво, що заміною стали пропрієтарні системи від Atlassian: Confluence Wiki та Jira. Штука в тому, що вони надані під "free Atlassian open source license for Fusebox", тобто безкоштовно. Зрозуміло, Atlassian приємно попіаритися за рахунок допомоги відомому проектові.
Отже, тепер документація доступна за адресою http://wiki.fuseboxframework.org
Поки що особливої вигоди з точки зору користувача я не побачив, але Адам наполягає, що редагування стало значно зручнішим. Сподіваюсь, це позитивно відобразиться на кількості документації.
Трекер знаходиться за адресою http://jira.fuseboxframework.org
Більшість тікетів було вже перенесено. Але, як зауважив Адам, якщо важливі для вас тікети були загублені, він буде радий їх перенести, або навіть можете зробити це самі.
Fusebox 5
Версия 5.1 этого фреймворка вышла 26 июня, скачать ядро, плагины и примеры можно тут. Там же можно скачать и словари, но о них чуть дальше. Всё что написано касается версии для ColdFusion, но большинство подходит и для PHP-версии. Для упрощения понимания терминов, перевод названий не везде дословный.
Некоторые нововведения:
- добавлены новые режимы работы (кроме уже существующих development и production), - добавлены словари (lexicons), - теперь можно использовать одни и те же файлы ядра для нескольких приложений. Собственно можно использовать практически все файлы, от сёркитов до словарей (global sharing), - добавлены безопасные URL-ы - добавлен режим трассировкиКоротко о каждом
Режимы работы:
1. developement-full-load - аналогичен режиму developement для Fusebox 4, который теперь использовать не рекомендуется (режим, не Fusebox =)). Заставляет Fusebox парсить все файлы, а если были изменены xml файлы - в добавок перезагружает сам Fusebox 2. development-circuit-load - перегружает все circuit файлы, которые участвуют в запросе и парсит все файлы, необходимые для выполнения текущего запроса 3. production - тут изменений нет, используются уже распарсеные файлы, все работает правильно и быстро =)также можно выбрать режим, используя переменные (само собой они логические): fusebox.load - перегружает xml файлы fusebox.parse - парсит выбранный фьюзэкшн fusebox.execute - выполняет его fusebox.loadclean - то же что и load, но удаляет все файлы, которые распарсены до этого fusebox.parseall - парсит все public фьюзэкшны
Словари (lexicons)
Позволяют вводить использовать в circuit файлах новые функции и управлюящие структуры. Словари состоят из слов (verbs). Объявляются и используются словари как пространства имен XML. Подключить словарь можно так:<fusebox xmlns:myLex="/lexicon/mylex"/>
или так
в circuit.xml.cfm
<circuit xmlns:myLex="/lexicon/mylex"/>
и затем использовать в circuit.xml.php примерно так:
<myLex:dump label="Attributes Scope" var="Attributes" />
За руководством по написанию словарей лучше обратиться сюда
Shared core files
Для использования общих файлов ядра, в каждом отдельном приложении нужно создать файл index.cfm такого вида:<cfset FUSEBOX_APPLICATION_KEY = "myApp">
<cfset FUSEBOX_APPLICATION_PATH="../scripts/FBCore" >
<cfinclude template="#fusebox_Application_Path#/fusebox5/fusebox5.cfm" >
"Безопасные" URL'ы
Используются за счет еще одного нововведения - тега . Теперь xfa будет выглядеть так:<parameter name="id" value="#attributes.id#"/>
</xfa>
Такой механизм позволяет модифицировать URL, изменяя параметры self, queryStringStart, queryStringSeparator, queryStringEqual и myself. Например если задать их все как '/', то такой получим URL: app.edittask/id/#attributes.id# и myself - index.cfm/fuseaction/
"Безопасность" тут заключается в более удобном понимании таких URL'ов человеком и поисковыми системами.
Режим трассировки
УстановивВот вкратце и все о нововведениях. На самом деле их значительно больше, и они заслуживают более подробного описания, но, что есть - то есть =)
