ilkz
Новичок
Движок на основе слоев
Всем привет!
Мучился-мучился, в итоге пришел вот к чему.
В процессе создания движка много чего перепробовал. Но пришел к такому алгоритму:
Движок состоит из ядра и трех слоев, "соединенных" между собой буферами. Объясняю:
Пользователь выдает запрос (кликает по ссылке). Этот запрос поступает в ядро, где сначала фильтруется, после чего передается в первый слой - слой информации.
Задача первого слоя - разобрать отфильтрованный запрос, подключить соответствующий модуль, который на основе запроса заполнит первый буфер инфой (только инфой - без всякого дизайна-оформления) согласно некоторому стандарту.
После этого ядро запускает второй слой - слой блоков. Его задача - оформить инфу, хранящуюся в буфере первого слоя. Оформление берется из соответствующих источников (файлы, БД, сокеты). После этого оформленные блоки (с инфой) помещаются в буфер второго слоя.
Далее ядро запускает третий слой - слой страниц (передавая ему буфер второго слоя). Его задача - прочесть/пропарсить шаблон страницы и в соответствии с находящимися в нем псевдотегами вставить блоки из буфера второго слоя. Далее этот слой формирует буфер третьего слоя - окончательный, который впоследствии ядро берет и (пока что) просто выводит пользователю.
Все.
Чего я этим добился (как я думаю):
- Довольно четкое отделение инфы, дизайна блоков и шаблона;
- довольно прозрачная и удобная архитектура;
- возможность сравнительно просто наращивать возможности движка;
Недостатки:
- необходимость введения определенных стандартов на форматы промежуточных буферов;
Прилагаю иллюстрацию работы для лучшего фтыкания :
Всем привет!
Мучился-мучился, в итоге пришел вот к чему.
В процессе создания движка много чего перепробовал. Но пришел к такому алгоритму:
Движок состоит из ядра и трех слоев, "соединенных" между собой буферами. Объясняю:
Пользователь выдает запрос (кликает по ссылке). Этот запрос поступает в ядро, где сначала фильтруется, после чего передается в первый слой - слой информации.
Задача первого слоя - разобрать отфильтрованный запрос, подключить соответствующий модуль, который на основе запроса заполнит первый буфер инфой (только инфой - без всякого дизайна-оформления) согласно некоторому стандарту.
После этого ядро запускает второй слой - слой блоков. Его задача - оформить инфу, хранящуюся в буфере первого слоя. Оформление берется из соответствующих источников (файлы, БД, сокеты). После этого оформленные блоки (с инфой) помещаются в буфер второго слоя.
Далее ядро запускает третий слой - слой страниц (передавая ему буфер второго слоя). Его задача - прочесть/пропарсить шаблон страницы и в соответствии с находящимися в нем псевдотегами вставить блоки из буфера второго слоя. Далее этот слой формирует буфер третьего слоя - окончательный, который впоследствии ядро берет и (пока что) просто выводит пользователю.
Все.
Чего я этим добился (как я думаю):
- Довольно четкое отделение инфы, дизайна блоков и шаблона;
- довольно прозрачная и удобная архитектура;
- возможность сравнительно просто наращивать возможности движка;
Недостатки:
- необходимость введения определенных стандартов на форматы промежуточных буферов;
Прилагаю иллюстрацию работы для лучшего фтыкания :