Практично ли пытаться использовать Joomla или Drupal для разработки чего-либо, кроме брошюр или веб-сайтов для ведения блогов? Достаточно ли гибки фреймворки модулей / расширений для разработки веб-приложений, которые имеют множество возможностей ввода данных и отчетности, или вам просто лучше спроектировать их с помощью инфраструктуры MVC, ASP.NET или просто простого PHP?
Допустим, вы хотите разработать веб-приложение, которое в основном используется для ввода данных и создания отчетов по этим данным. Например: вы хотите создать веб-сайт для людей, владеющих скаковыми лошадьми.
При вводе первичных данных пользователь вводит физические атрибуты и рекорды гонок для всех своих лошадей.
Отчеты доступны для поиска статистики и других показателей, основанных на физических атрибутах и записях гонок для всех лошадей в базе данных: пользователей и того, что ввели другие.
Каковы были бы причины или преимущества этого в CMS?
2 ответа
Я постоянно это делаю с помощью проприетарной CMS. Я уверен, что можно написать любой плагин / подсистему для drupal и т. Д.
Льготы:
- Надеюсь, знакомая кодовая база MVC, вы получите что-то быстрее.
- Бесплатная интеграция с сайтом в случае необходимости, так как вы уже находитесь в среде CMS. В противном случае вам придется реализовать базовые функции CMS поверх вашего пользовательского веб-приложения.
- Зависимость от базовой CMS. Вы получаете выгоду от обновлений, таких как новые функции, исправления безопасности, оптимизации производительности и т. Д.
Недостатки:
- Несение «веса» CMS. Возможно, в нем есть таблицы, объекты и подсистемы, которые вы никогда не будете использовать.
- Большая кодовая база. Более крутая кривая обучения для специалистов по обслуживанию, которые теперь должны понимать CMS и вашу бизнес-логику.
- Зависимость от базовой CMS. По крайней мере, ваши контроллеры (и, возможно, уровень сохраняемости) будут привязаны к тому, как это делает CMS. Постарайтесь, чтобы ваша модель и бизнес-логика не зависели от MVC-фреймворка CMS.
Если CMS является достаточно модульной / расширяемой, чтобы вы могли писать свои собственные расширения без каких-либо ограничений, я определенно пошел бы по этому пути. Подумайте о некоторых «неосновных» задачах, которые в противном случае вам пришлось бы решать самостоятельно:
- Управление пользователями (вход в систему, обработка забытых паролей, страницы пользователей и т. Д. - CMS обычно поставляется с готовой к использованию)
- Создание шаблонов (CMS обычно предоставляет хорошо зарекомендовавший себя механизм шаблонов)
- «Окружающие» страницы (помимо ваших основных форм / страниц отчетов, у вас, вероятно, будет довольно много других страниц, которые легко создавать / управлять с помощью CMS)
- Безопасность (хорошая CMS предоставит вам множество API, связанных с безопасностью, чтобы упростить предотвращение SQL-инъекций, XSS и других проблем безопасности, например, при создании и обработке форм)
- Абстракция базы данных (хорошая CMS должна предоставить это за вас)
- Диспетчеризация на основе URL-адресов (вы хотите самостоятельно управлять своим пространством URL-адресов?)
- и т.п.
В последнее время интенсивно работая с Drupal, я могу сказать, что он хорошо подходит для подобных вещей (за исключением определенного недостатка, касающегося абстракции базы данных, поскольку в настоящее время он поддерживает только MySQL и PostgreSQL).
Вы можете довольно быстро настроить стандартный сайт и сосредоточить свою индивидуальную разработку на основных задачах, создав один или несколько настраиваемых модулей, которые выполняют все необходимые вам задачи по сбору данных и отчетности.
Обратной стороной, конечно же, является кривая обучения - вы должны думать о CMS как о фреймворке, как и о любом другом, который будет иметь свои последствия при изучении всех тонкостей.
Похожие вопросы
Новые вопросы
model-view-controller
Модель – Вид – Контроллер (MVC) - это архитектурный паттерн, используемый в разработке программного обеспечения. Для Microsoft ASP.NET MVC используйте вместо этого тег [asp.net-mvc] или [asp.net-core-mvc]. Для Spring MVC используйте вместо этого тег [spring-mvc].