четверг, 10 февраля 2011 г.

Zeta 3 - четкая модель для подключения расширений.

В Zeta2 расширения хрванились в виде набора файлов *.boo в корне директрий /extensions/ (usr/extensions .. и т.д.). Первоначальное предназначение расширений было только спецклассы расширения функциональности. Однако более частой задачей было создание дополнительных контроллеров или целой группы функциональности. При этом обнаруживалась серьезная проблема, что все ресурсы Zeta2 были централизованы, так для регистрации *.brail пришлось бы использовать папки views, для JS - scripts, для css - content/style, для рисунков content/image.

Соответственно установка расширения и его сопровождения были крайне сложны.

В Zeta3 появилась возможность создавать контроллеры расширений в виде пакетов.  Пакет состит из именованной папки , имя папки ДОЛЖНО совпадать с именем файла boo в ней и именем КОНТРОЛЛЕРА, который регистрируется в качестве основного в расширении. Папка пакета автоматически является носителем видов контроллера.
Расширения наследуют контроллер ExtensionsBaseController, в котором доступен специальный объект расширения ExtensionsHelper, позволяющий удобно разрешать имена файлов (при этом с соблюдением слоистости, любой файл расширения может быть перекрыт более высоким слоем, например usк/extensions/ext1/default.css перекроет sys/extensions/ext1/default.css.

Соотвественно раньше пакет (например пакет BXLTESTER) выглядел и устанавливался так:
ZETA2

  • bxltester
    • bxltester.boo -> sys/extensions/bxltester.boo 
    • bxltester.js -> scripts/bxltester.js - нарушается структура ответственности - то что принадлежит sys вынуждено находиться в корне, нарушается стройность SVN версионности приложения
    • bxltester.css -> sys/content/style/bxltester.css - как и в предыдущем номере нарушается версионность всего приложения, плюс мы вынуждены синхронить не только имена папки-BOO-контроллера (что вполне логично), но и всех ресурсов
    • index.brail -> sys/views/bxltester/index.brail - опять версионность + дублирование папки
Очевидно что сопровождать, обновлять такой пакет не нарушая всего приложения крайне сложно,  в частности поэтому расширения почти не использовались не смотря на всю их мощь.

Теперь в ZETA3 :
  • bxltester -> папка просто целиком копируется в extensions на нужном уровне, например sys/extensions
    • bxltester.boo
    • default.js - можно использовать любые имена, включая default, который распознается системой
    • default.css
    • index.brail
Таким образом новые расширения экологически чисты для приложения, легко устанавливаются одной командой XCOPY или MLINK и могут быть целой папкой завязаны на один корень SVN.
Особенно это все сыгрывает вместе с новым загрузчиком расширений.

Комментариев нет:

Отправить комментарий