- PVSM.RU - https://www.pvsm.ru -
[1]Основная цель проекта — создание удобной RAD-платформы разработки web-приложений, интерфейсов управления базами данных, CRM-систем, автоматизированных рабочих мест. Функционал платформы максимально автоматизирует рутинные процессы разработки, освобождая пространство для творческой самореализации.
В прошлом году мы уже знакомили вас с платформой DVelum в публикации «DVelum – платформа разработки на PHP + ExtJS4» [2].
На тот момент платформа была достаточно сырая (beta release), после публикации получили много полезных советов и отзывов. Многое из предложенного внедрено и исправлено, хотелось бы познакомить вас с тем, что было сделано за это время. Проект окреп, приобрел более стройный вид, включил в себя достаточный набор инструментов для повседневной разработки.
С подробным списком изменений и новыми возможностями можно ознакомиться на сайте проекта http://dvelum.ru/timeline.html [3]
Значительно увеличена производительность платформы. Внедрена «ленивая» загрузка словарей, конфигураций, локализаций. Оптимизирована и переработана архитектура системы. Многие сторонние компоненты заменены собственными более «легкими» реализациями. Улучшена информативность сообщений об ошибках, дополнительные логи.
Класс Autoloader теперь совместим со стандартом PSR-0.
Значительным изменениям и улучшениям подверглась основополагающая часть платформы — дизайнер интерфейсов.
Добавлена поддержка событий, реализована возможность назначения обработчиков, подсвечивается список и типы принимаемых параметров.
Внедрена возможность подключения вложенных проектов. Таким образом, в дизайнере интерфейсов можно создавать собственные компоненты, которые будут включены в другие проекты.
Расширен список готовых компонент и вспомогательных интерфейсов для заполнения свойств, например:
[5] | [6] | [7] | [8] |
Tree.Panel, фильтры для хранилищ и многое другое.
Для улучшения переносимости готовых решений внедрены шаблоны url-адресов AJAX-запросов, теперь интерфейс не привязан к конкретной файловой структуре, адресу административной панели, глубине вложения, локализации.
Доработан автогенератор кода, теперь редакторы всех свойств объектов, включая ссылки на объекты, списки объектов и элементы медиатеки генерируются автоматически. Все что необходимо для редактирования записи будет создано автоматически (проект интерфейса, контроллер, javascript). Это значительно упрощает работу и уменьшает порог входжения.
Интегрирована автоматизированная система защиты административной панели от CSRF-атак, что весьма актуально для проектов с интерфейсами на ExtJS. Теперь нет необходимости думать о подобного рода уязвимости и добавлять скрытые поля токенов в формы, система самостоятельно создает токены и необходимые заголовки Ajax-запросов.
Теперь возможно использование внешних ключей, подключение отдельных объектов ORM к различным удаленным базам данных. Система стабильно работает в strict-режиме, при возможности использует транзакции.
Добавлен редактор данных ORM с интегрированными компонентами редактирования (режим разработки). Теперь базу можно заполнить тестовыми данными, прежде чем приступить к созданию интерфейса. В любое время легко посмотреть и подправить значение свойств объектов ORM.
[9] | [10] |
Множество дополнительных мелочей упрощающих жизнь разработчика
Одна из проблем разработки на базе фреймворков — распространение готовых модулей. Если библиотечные классы легко перенести копированием, то файлы конечных функциональностей часто «размываются» по файловой системе (контроллеры, шаблоны, модели и прочее разбросаны по разным папкам).
Платформа теперь включает механизм подключаемых модулей, которая позволяет хранить сторонние решения в отдельной папке, но работать с файлами как с находящимися в основной директории приложения (пока экспериментальный).
Отдельный интерфейс позволяет подключать / отключать модули (возможно, позже будет реализована загрузка, установка / удаление, каталог приложений). Прозрачно распределяются права доступа к сторонним модулям. Файлы классов, настроек, проекты дизайнера интерфейсов становятся для системы «родными» (добавляются в автозагрузку, отображаются в различных системных списках, доступны при роутинге).
Отказались от flash-мультизагрузчика Uploadify в пользу собственного решения основанного на html5 +js, теперь превью картинок доступны до отправки файлов на сервер, API загрузчика более гибок.
Платформа далека от идеала, но мы тратим большую часть свободного времени, чтобы сделать ее лучше, стараясь программировать по делу, не ради программирования как такового.
Следуя традиции, представляем вашему вниманию тесты производительности сисетмы.
Бессмысленный популярный синтетический тест производительности «Hello World»:
[12]
Более серьезные тесты, позволяющие получить хоть какое-то представление о производительности системы: «Блог», «Главная страница портала», «Список вложенных комментариев» (300 элементов древовидной структуры):
[13]
Отдельное спасибо всем, кто принимал участие в разработке и тестировании платформы, равно как и участникам обсуждений на форуме — за поддержку и проявленный интерес.
Мы открыты для конструктивной критики, рады выслушать пожелания и предложения. Надеемся, что платформа окажется для вас интересным и полезным решением.
Автор: coh
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/32125
Ссылки в тексте:
[1] Image: http://dvelum.ru
[2] «DVelum – платформа разработки на PHP + ExtJS4»: http://habrahabr.ru/post/149853/
[3] http://dvelum.ru/timeline.html: http://dvelum.ru/timeline.html
[4] Image: http://habrastorage.org/storage2/c4a/d4c/6b5/c4ad4c6b59c0fad1d905cf496f7bd491.jpg
[5] Image: http://habrastorage.org/storage2/9e0/10b/501/9e010b501b8ee90cb4945b3e7ba4b814.png
[6] Image: http://habrastorage.org/storage2/180/fad/383/180fad383169ceb4033cdc9fb0f66ea6.png
[7] Image: http://habrastorage.org/storage2/3d6/be6/4bf/3d6be64bf8ce0d1cc97f12c33470afc7.png
[8] Image: http://habrastorage.org/storage2/cb4/41e/4e6/cb441e4e61eb97da87f6cab072a1f971.png
[9] Image: http://habrastorage.org/storage2/3a2/f94/d3f/3a2f94d3f6b0d1f1535581ff3a9275ec.png
[10] Image: http://habrastorage.org/storage2/20e/95d/6a4/20e95d6a4653a7d65ed6e5218fe409b3.png
[11] Image: http://habrastorage.org/storage2/7d4/b2e/2a8/7d4b2e2a8ac602892f1109728d96312e.png
[12] Image: http://habrastorage.org/storage2/61b/e77/396/61be77396867492d60c5bdcac2d31ca0.png
[13] Image: http://habrastorage.org/storage2/d0b/10e/660/d0b10e66059fa8ab98abf78bece52d9b.png
[14] Источник: http://habrahabr.ru/post/176689/
Нажмите здесь для печати.