Drupal в качестве основы - PullRequest
6 голосов
/ 11 июля 2011

Можем ли мы использовать Drupal в качестве основы для более крупного приложения?Подходит ли оно для разработки большого приложения в его среде или есть какое-то ограничение?

Я хочу использовать Drupal в качестве платформы в своем приложении.Стоит ли это?

Ответы [ 4 ]

5 голосов
/ 11 июля 2011

Если вы ищете разработку -рамку, Drupal, вероятно, не является правильным выбором.Если вы ищете набор для создания веб-сайтов, Drupal, вероятно, является правильным инструментом.

Люди часто говорят, что Drupal - это CMF, где F означает Framework, но на самом деле Drupal - это просто гибкая CMS..

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

На практике Drupal не хватает:

  • Правильная архитектура.Большинство вещей в Drupal, эволюционировали органически;что вызывает несогласованность, неожиданное поведение и неожиданные барьеры.Не сказать, что Drupal не создан должным образом: просто сказать, что он не был спроектирован: спроектирован как единое целое.
  • Принцип наименьшего удивления.Многие фреймворки позволяют опытным разработчикам создавать сайты за несколько часов.С Drupal вы должны получить большой опыт и лучшие практики, прежде чем вы сможете быть уверенными в развертывании веб-сайтов по планированию.
  • MVC.У Drupal есть отдельный слой базы данных и слой темы (представления), но они нетрадиционны и часто используются неправильно.И, конечно, не после структурной схемы.
  • незавершенное поведение: платформа может форсировать определенные методологии, библиотеки или даже поощрять определенное поведение, но она не должна иметь жестко заданных / не переопределяемых значений по умолчанию, которые определяют ваш конечный продукт.Или по-английски: Ядро Drupals имеет много настроек по умолчанию, которые определяют, как вы собираетесь настраивать, размещать и структурировать ваш сайт, независимо от ваших (клиентских) потребностей или пожеланий.Модули или дополнения даже более часто встречаются с поведением и часто выглядят встроенными и / или жестко закодированными.
  • СУХОЙ, не повторяйте себя: Drupal сильно зависит от повторения.Вся ее система тем зависит от копирования фрагментов кода в пользовательские файлы и изменения лакомых кусочков.Его система переопределения форм требует копирования больших частей формы по умолчанию в пользовательские модули и изменения частей, которые нужно изменить.

Многие из этих недостатков являются основной причиной задержки и проскальзывания бюджета, так каквидел в моем + 10 лет опыта Drupal.В тех случаях, когда часть с непроверенным поведением оказалась наиболее неприятной для большинства проектов, в которых я принимал участие. Очевидные простые функции или идеи, как оказалось, занимают большую часть всего бюджета;Крошечные детали пожирают недели развития;последние 20% занимают не только 80% усилий, но иногда и 300%.

Кроме того, Drupal не следует шаблонам OO, что (согласно общему мнению) является плохой вещью.Нет наследования, нет DRY-практики, нет объект-отношения-сопоставителя *) и нет юнит-тестирования. **).

Все это может звучать негативно, но в действительности людям удается создавать хорошие сайты Drupals, несмотря на все эти "недостатки".Это потому, что они в основном придерживаются настроек по умолчанию Drupal (стандартные, где это возможно, аддоны, где нужны изменения, пользовательские разработки, когда не осталось других опций).

*) На самом деле есть;в Drupal 7 была введена PDO, но (пока?) не используется как ORM много / вообще.

**) На самом деле: все основные и многие вклады имеют тесты, но это интеграционные тесты иредкий юнит-тест.Интеграционные тесты (DrupalWebTest) устанавливают чистую базу данных Drupal-codebase + для каждого отдельного теста.Ваш средний тестовый набор, занимающий более 8 часов, не является исключением.TDD просто (пока) невозможен.

РЕДАКТИРОВАТЬ Чтение на ваших примерах: Drupal особенно плох в области «мастеров форм», хотя в Drupal 7 он улучшился. Еще одним заметным недостатком в Drupal является правильный программируемый рабочий процесс.система.Существует несколько модулей, которые улучшают или заменяют простую систему документооборота в ядре, но их нелегко и не эффективно (с точки зрения разработки) программировать. Похоже, что основные функции, которые вы хотите, среди самых слаборазвитых районов в Drupal

3 голосов
/ 11 июля 2011

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

Drupal как более крутая кривая обучения по сравнению с большинством фреймворков.Как фреймворк, Drupal создан и предназначен для CMS.Исторически Drupal помещает почти все в базу данных.Теперь ситуация лучше с обобщением экспортируемых и таких инструментов, как Модуль функций .Кроме того, в отличие от большинства фреймворков, Drupal не использует MVC и в основном не является объектно-ориентированным.

2 голосов
/ 11 июля 2011

Да! Вы можете использовать его в качестве основы. Вы бы хотели быть довольны некоторыми основными API, такими как меню, узел и, возможно, API форм. Меню роутера и контроль доступа довольно хорошие.

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

Если вы хотите увеличить масштаб, вы можете рассмотреть структуру, которая придает большее значение методам тестирования и тестирования. Drupal является поздним последователем этих методов и не является зрелым в этой области. Это то, что я расстраиваю, особенно на больших сайтах, где ошибка регрессии становится проблемой. Рассмотрим что-нибудь вроде Ruby on Rails, если это вас интересует.

Удачи!

Примечание для себя: зачем мне желать удачи в программном проекте? ... интересно.

1 голос
/ 22 ноября 2015

Drupal 8 сильно изменился.

- It is OOP
- Using Composer
- Have good cache mechanism in core
- RESTful in core

Так что теперь его легко можно использовать в качестве фреймворка для любого приложения. В конце сети все способы имеют контент. У электронной коммерции есть контент. И так далее.

...