Очевидно, что нет единого решения, которое бы удовлетворяло потребности каждого; архитектура - это всегда компромисс. Я хочу создать фреймворк, изначально нацеленный на RAD веб-игр. Целевым языком является PHP, хотя архитектура должна быть широко применимой.
Цели, которые я поставил перед этой структурой: гибкость в способах достижения результата; максимальный комфорт для разработчиков; соединительные модули, такие как LEGO & reg; блоки; много типов ввода, много типов вывода, один формат для обработки.
Целями, которые не являются приоритетными, являются скорость, использование предприятия и зарабатывание денег. Это должен быть проект с открытым исходным кодом.
Краеугольным камнем этого дизайна является то, что весь контент до преобразования обрабатывается в XML (идея основана на системе EAI, с которой я работал, eGate). Уровень абстрагирования данных - надеюсь, умный ORM - сейчас не важен. Вывод будет сгенерирован с использованием XSLT или любых других пользовательских модулей для практически любого клиента - HTML для старых браузеров, XHTML / HTML5 для современных браузеров, простой HTML для мобильных клиентов, XML для AJAX / XMLRPC и т. Д.
Основные причины использования XML:
- это общеизвестный стандарт
- существующие инструменты, такие как XPath, SimpleXML и DOM для навигации и изменения содержимого
- XSLT, обеспечивающий мощный и унифицированный способ преобразования кода в любой теговый суп
- Я считаю, что разметка XML очень легко читаема, поэтому я не думаю, что преимущества JSON или YAML имеют здесь значение
- Контент может быть легко сложен, и его порядок на самом деле не имеет значения, если он правильно преобразован с помощью XSLT
Процесс генерации страницы будет состоять из следующих этапов:
- Предварительная обработка: инициализация модулей, обработка данных GPCS, применение шаблонов по умолчанию [XML]
- Обработка / генерация: основная часть бизнес-логики, генерация раздутого XML с максимальным объемом данных (хотя, мы надеемся, оптимизирована, чтобы не генерировать баласт)
- Обработка: некоторая дополнительная бизнес-логика, например, сокращение части разметки, подготовка к трансформации, отчетность, статистика и т. д.
- Постобработка: синтаксический анализ XML с помощью механизма преобразования (наиболее вероятно, просто XSLT), вывод.
Контент будет создаваться с большим количеством метаданных (например, тегами, разрешениями, важностью, необходимостью, целевым типом вывода), которые будут удалены во время последующей обработки.
Итак, мой вопрос: за исключением скорости, в чем заключается недостаток этого решения? Где это может пойти не так как при разработке / обслуживании фреймворка, так и его приложений? Каковы недостатки этой архитектуры?