March 31st, 2008

Конструктор сайтов

Т.к. нужен коструктор сайтов, читаю периодически про произвольно выхваченный из инета конструктор.
Пока что ничего лучше чем актисовский Web Builder не встречал. Он платный и вообще не продающийся отдельно. Медленный и устаревший. Но пока лучше не видел.  В основном, конструкторы опираются на парадигму от простого к сложному: т.е. модуль новостей, статический контент, редактирование структуры и создание каталога и возможность добавления произвольных программных компонентов, что в свою очередь, требует постоянного участия дорогостоящего программиста. Улучшение в том, что любой нестандартный функционал сводиться к стандартному. Заказчик не почувствует разницы в цене, но для разработчика себестоимость уменьшится, т.к. программирование можно будет заменить версткой (максимум примитивным скриптовым программированием).
Взять, например, способ построение каталога в Web Builder: можно создать иерархический каталог, как примитивное дерево. А в дереве невозможно реализовать связь много ко многим.
Например, запчасти и автомобили. К одному автомобилю подходит много запчастей разных производителей, так же как одна запчасть, может подходить к разным автомобилям. Вполне обоснованно отказаться от такого способа построения каталогов и перейти к понятию пользовательского класса. Как в ООП. Название пользовательский навеяно MS SQL Server, где таблицы называются: User Tables. Каждый пользовательский класс характеризуется тем, что хранит свои данные в одной таблице в БД.
Если пользовательские классы хранят данные в нескольких связанных таблицах, то имеем дело с иерархией пользовательских классов. Можно построить любую иерархию. Связи между пользовательскими классами должны храниться в отдельной таблице.
Или пример нестандартного функционала (элемента): таблица для вывода стоимостей ПИФов по датам. Вся нестандартность в том, что данные берутся не из универсального каталога сайта, а из другой таблицы. Почему бы не сделать произвольную таблицу стандартной сущностью и не работать со всеми таблицами одинаково? Нужны новости, но зачем для этого делать модуль новостей? Вполне можно создать пользовательский класс Новость. Конечно, на каждом новом сайте его придется создавать заново (хотя можно сделать репазитарий шаблонов пользовательских классов), но такой подход более гибок.
Тогда модули типа: Каталог, Новости, Ленты, Данные и т.п. в любом их сочетании и количестве заменяются на два модуля: Редактор пользовательских классов и Редактор пользовательских объектов.
Есть вполне материализованная в требования идея о том, как улучшить концепцию Web Builder-a. Т.е. создать лучший конструктор.
Основа концепции -- пользовательские классы, иерархии пользовательских классов и механизм обработки встроенных функций: UCAL User Class Access Language.
Осталось найти Java-программера, который поможет это реализовать.  За вознаграждение, естественно.