Каковы преимущества использования фреймворка MVC, например. Drupal для создания большого веб-сайта?

Я пишу сравнение между 3 технологическими вариантами для создания нашего нового веб-сайта:

  • Вордпресс
  • Друпал
  • Фреймворк MVC

Начальник уверен, что надо использовать Wordpress, но сайт будет большой, со множеством разделов, подразделов, страниц и сложных шаблонов.

Мне легко сравнить WP + Drupal, но не так просто указать дополнительные преимущества (по сравнению с Drupal) использования фреймворка MVC.

Пока у меня есть:

  • Пользовательское хранилище данных, типы контента, семантика
  • API/ОТДЫХ
  • Разделение логики/UI
  • Соглашение, структура кода

(Очевидно, что некоторые преимущества будут различаться в зависимости от типа проекта. В данном случае это будет большой портал для музея с потенциалом для социальных сетей для посетителей)


person meleyal    schedule 06.02.2009    source источник


Ответы (11)


CMS (например, Drupal, WordPress) сложно сравнивать с фреймворком MVC, потому что они относятся к разным категориям.

Чтобы конкретно ответить на ваш вопрос о преимуществах фреймворка MVC перед CMS, скажем, что преимущество фреймворка MVC заключается просто в том, что он позволяет вам с нуля разработать именно то веб-приложение, которое вам нужно.

Что касается вашей конкретной ситуации:

Использование существующей CMS, такой как WordPress или Drupal, было бы отличной идеей, если они соответствуют вашим потребностям. Это позволяет не изобретать велосипед, экономит ваше время, а CMS могут быть довольно удобными для пользователя (в разной степени). Если вы планируете делегировать задачу обновления контента пользователю, не являющемуся техническим специалистом, то может быть разумным выбрать удобную для новичков CMS, а не создавать свою собственную с помощью MVC-фреймворка, что может привести к тому, что приложение потребует больше технических знаний для поддерживать.

Однако, если вы предполагаете, что для веб-сайта потребуется много пользовательской бизнес-логики, которую будет сложно реализовать в рамках ограничений CMS, вам может потребоваться использовать структуру MVC.

person Jeff    schedule 06.02.2009
comment
+1 Это сравнение яблок с апельсинами. - person Wayne; 07.02.2009

Спасибо всем за ваши ответы. Я привел доводы в пользу использования Framework или Drupal, но было решено, что мы должны использовать Wordpress или, по крайней мере, начать строить на Wordpress и посмотреть, как это пойдет.

FWIW вот заметки, которые я придумал:

WORDPRESS/МУ

http://wordpress.org/ http://mu.wordpress.org/

Инструмент для личных публикаций, платформа для блогов

  • PHP +
  • Много доступных виджетов +
  • Поддержка нескольких авторов / рабочий процесс +
  • Социальные функции (BuddyPress) +
  • Интеграция (BBPress и т. д.) +
  • Простой, обычный +
  • Простой интерфейс +
  • Возможность управлять несколькими блогами (с WordPress MU) +
  • Всего 2 типа контента (пост или страница) -
  • Не настоящий менталитет "CMS" / блога -
  • Негибкая иерархия (без разделов) -
  • Ограниченная семантика -
  • Ограниченный выбор шаблонов для авторов -
  • Грязный код -
  • Безопасность/эксплойты -

ДРУПАЛ

http://drupal.org/

Фреймворк управления контентом, конструктор CMS, инструменты для создания сайтов. Для «не программистов» для создания веб-сайтов, строительных блоков

  • PHP +
  • Сделано для больших сайтов/порталов +
  • Встроенные социальные функции (каждый пользователь имеет собственный профиль/журнал, расширяемый) +
  • Выбор/настройка типа страницы по авторам (система блокировки) +
  • Область применения структурированных данных/семантики +
  • Несколько типов контента (пресс-релизы, новостные статьи, сообщения в блогах и т. д.) +
  • Хорошее сообщество/инструменты +
  • Пустой холст +
  • Много функций +
  • Хорошая обработка изображений +
  • Сложный пользовательский интерфейс -
  • «Черный ящик», очень абстрактный код, кривая обучения! -
  • Настройка / тематика сложны -

РАМКИ

Это позволяет вам разработать именно то веб-приложение, которое вам нужно, с нуля.

  • Расширяемый +
  • Контроль семантики, хранение данных +
  • API/данные/REST/веб-сервисы +
  • Текущие, современные инструменты, передовые технологии +
  • Разделение логики/представления (паттерн проектирования MVC) +
  • Соглашение — структурированный код, рабочий процесс +
  • Повторное использование/объединение контента +
  • Позволяет разрабатывать несколько пользовательских интерфейсов, не затрагивая кодовую базу бизнес-логики +
  • Надежный API/стандарты/паттерны +
  • СУХОЙ (не повторяйтесь) +
  • Кривая обучения -
  • Нужно разработать собственный пользовательский интерфейс -
  • Перебор? (в зависимости от целей) -
person meleyal    schedule 17.02.2009

Вы не можете сравнивать WP или Drupal и MVC framework. Что вы можете сделать, так это решить, использовать ли существующую систему управления контентом или развернуть собственную, и сравнить рентабельность инвестиций, совокупную стоимость владения, стоимость разработки и т. д.

person Anton Gogolev    schedule 06.02.2009

Как человек, который большую часть последнего десятилетия работал над различными домашними системами CMS, я советую не создавать свои собственные. Если у вас есть какое-то уникальное приложение, то MVC — хороший способ кодирования веб-приложений, но его простота не уравновесит тысячи человеко-часов, потраченных на создание, и миллионы посещений страниц для тестирования OSS.

Drupal — это не только хорошая CMS-система, но и довольно хорошая платформа для создания индивидуальных веб-функций, так что вы получаете многое бесплатно, и вам нужно тратить время только на то, что уникально для вашего сайта. (после того, как вы научились программировать в системах Drupal)

person Jeremy French    schedule 06.02.2009

Вы можете создать довольно расширяемый сайт на основе WP или Drupal, но вы можете столкнуться с ограничениями дизайна, установленными в зависимости от того, для чего были разработаны фреймворки. Drupal/WP — это системы управления контентом по своей сути, поэтому, если вы не управляете контентом, вы не используете фреймворк эффективно. Если вы обнаружите, что создаете все больше и больше кода, чтобы обойти эти ограничения, то у вас есть причина строить с нуля или использовать облегченный фреймворк.

В настоящее время я создаю сайт с использованием CakePHP MVC-фреймворка, и я очень рекомендую его. ИМХО, он удовлетворяет всем вашим достоинствам.

person spoulson    schedule 06.02.2009

В Drupal есть MVC Layer, проверьте Drupal Prometheus @ http://www.drupalprometheus.org. Он обладает большинством функций современной среды MVC, а также мощью Drupal CMS. Недавно мы начали использовать его в проекте для нашего клиента.

person John Styles    schedule 05.08.2011

Гибкость CMS имеет предел, хотя с Drupal этот предел становится меньше. Существует кривая обучения, чтобы достичь того, что вы хотите, и это может быть не самым элегантным решением, если вам придется выдумывать его вместе с существующими расширениями. Конечно, вы всегда можете самостоятельно расширить функциональность любой CMS, но это может занять больше времени, чем использование хорошего фреймворка.

Недавно у меня была такая же дилемма, и, попробовав Drupal, в конце концов я выбрал PHP-фреймворк CodeIgniter MVC. Вероятно, стоит сначала потратить несколько дней на CMS, чтобы выяснить, возможно ли это. Если затем вы решите, что это будет слишком сложно, используйте вместо этого фреймворк MVC.

person Stuart    schedule 06.02.2009

Microsoft ASP MVC (например) — это фреймворк для создания ваших веб-сайтов, Drupal — это система управления контентом, в которой вы «проектируете» свои страницы, но вам не нужно писать код.

person Peter Morris    schedule 06.02.2009
comment
MVC НЕ является фреймворком. это стиль дизайна. большинство фреймворков пытаются привязать имя MVC к какой-то многоуровневой структуре; но вы можете полностью написать приложение MVC без использования какой-либо инфраструктуры. будучи немного умным, вам даже не нужно будет писать маленький самостоятельно. (Конечно, проще использовать один) - person Javier; 06.02.2009
comment
Я пояснил, что имел в виду, заменив MVC на Microsoft ASP MVC (например). - person Peter Morris; 06.02.2009
comment
ВТФ? Я понимаю первое отрицательное голосование по этому поводу, потому что я явно не упомянул MS ASP MVC, когда ссылался на фреймворк, но теперь я прояснил это, мой ответ на 100% точен и актуален, но я получаю еще один отрицательный? Кто бы ни проголосовал, хотя бы объясните, почему. - person Peter Morris; 07.02.2009

Я бы сказал, что преимущество использования фреймворка MVC для самостоятельного развертывания вместо использования WP или Drupal заключается в следующем:

  1. Вы кодируете только то, что вам нужно. В WP и Drupal будет много вещей, которые вам не нужны на вашем сервере.
  2. Разработчики понимают всю кодовую базу, потому что они написали ее с нуля, что облегчает последующую поддержку.
  3. WP — это большая кодовая база (я не знаю о Drupal), как только вам потребуется что-то, что не поддерживается ни одной из CMS, вам придется копаться в большом количестве кода.
  4. Разделение логики и пользовательского интерфейса Wordpress отстой - я имею в виду действительно отстой.
  5. Больше гибкости. CMS хороши тем, что вы не пытаетесь заставить их делать то, для чего они не предназначены, — тогда они становятся проблемой.

Если вы собираетесь продвигать фреймворк MVC, вам нужно внимательно посмотреть, что вы выберете — они не созданы равными. Некоторые из них будут накладывать ограничения на ваш код и макет веб-сайта так же, как это делает CMS.

Я предполагаю, что это действительно зависит от того, насколько сложны требования и насколько хорошо CMS или фреймворк будут им соответствовать. Для относительно простой доставки контента можно написать свой собственный облегченный MVC и использовать его.

person Steve Claridge    schedule 06.02.2009
comment
Я бы хотел, чтобы проголосовавшие против указали причину своего отрицательного голосования в качестве комментария! - person starsinmypockets; 22.05.2011

Я бы настоятельно рекомендовал вам отказаться от WordPress, он прекрасно подходит для сайтов с несколькими статическими страницами и одним разделом блога/новостей, но я сделал двуязычный веб-сайт продукта на основе WP 2.2, и это был крупный PITA с большим количеством взломов и написания баз данных. код в шаблон, чтобы сделать это возможным.

Сейчас я разрабатываю на Drupal, и это действительно лучше для больших проектов (хотя на создание простого блога уходит больше времени по сравнению с WP) — у него замечательная модульная архитектура, которая позволяла мне решить любой запрос/проблему, написав модуль вместо взлома ядра.

Что касается MVC/Drupal: посмотрите, что делает Drupal, если вы можете получить результат, изменив Drupal, тогда это здорово и сэкономит вам много времени, поскольку вам не нужно кодировать обычные вещи ( регистрация пользователей, очистка ввода, надежная обработка и проверка форм, инфраструктура тем, абстракция хранилища, уровень абстракции веб-сервисов (модуль служб) и т. д.).

Против Drupal: медленный по своей сути, из-за модульной (я рендерю список элементов, давайте вызовем все модули, которые реализуют theme_list, чтобы узнать, хотят ли они изменить его) архитектуры, поэтому, если вы делаете следующий твиттер, получите быстрый MVC вместо этого рамки. И кеширование контента для зарегистрированных пользователей по-прежнему требует много работы, чтобы быть эффективным (кеш с тегами должен быть в ядре), поэтому сайты, когда пользователи обычно входят в систему, могут работать медленно.

person Tomáš Kafka    schedule 13.02.2009

Я считаю, что Drupal — это MVC. Drupal использует систему тем, которая представляет собой ваши представления, и систему меню, которая является вашим контроллером. Модули — это ваши модели. Конечно, меню разбито на различные модули, но в основном это MVC, верно?

person Rimian    schedule 09.02.2009
comment
Я бы проголосовал за это, если бы мог. Прочитайте это: drupal.org/node/116677#comment-197893 MVC является одним из наиболее часто используемые и неправильно понимаемые шаблоны проектирования. Верно, drupal разбивает вещи на слои, но на самом деле это не MVC, не то чтобы это плохо. - person Akrikos; 12.02.2009
comment
Кроме того, это не отвечает на поставленный вопрос. - person Akrikos; 12.02.2009