Друпал как фреймворк
можем ли мы использовать Drupal в качестве основы для большего приложения? Подходит ли он для разработки большого приложения в его рамках или есть какие-либо ограничения?
Я хочу использовать Drupal в качестве фреймворка в своем приложении. Стоит ли?
4 ответов
Это действительно зависит от потребностей вашего приложения. Drupal, будучи гибким и расширяемым, сначала является CMS и поставляется с функциями, которые могут быть или не быть желательными для веб-приложения. Но если из коробки или с дополнительными модулями он обеспечивает большие совпадения для более классический функции веб-приложения (то есть. управление пользователями, управление контентом, система плагинов, тематический слой и т. д.), Drupal обеспечивает отличную структуру, чтобы избежать повторного изобретения колеса (или зависимостей на сторонних / менее зрелых плагинах фреймворка).
Drupal как более крутая кривая обучения по сравнению с большинством фреймворков. В качестве фреймворка, Drupal построен и предназначен для CMS это. Исторически сложилось так, что Drupal помещает почти все в базу данных. Ситуация теперь лучше с обобщением товаров на экспорт и инструменты, такие как характеристики. Кроме того, в отличие от большинства фреймворков Drupal не использует MVC и, в основном, не объектно-ориентированный.
Если вы ищете развитие-framework, Drupal, вероятно, не правильный выбор. Если вы ищете набор для создания веб-сайтов, Drupal, вероятно, является правильным инструментом.
люди часто говорят, что Drupal-это CMF, где F означает фреймворк, но на самом деле Drupal-это просто гибкая CMS.
на среда разработки веб-приложений разделены на две категории: MVC и CMS. Модель-представление-контроллер быть что большинство людей называют основой. CMS - это просто гибкая CMS с возможностями разработки приложений.
на практике, чего не хватает Drupal:
- правильная архитектура. Большинство вещей в Drupal развивались органически; что вызывает непоследовательность, неожиданное поведение и неожиданные барьеры. Не говорю, что Друпал не выстроить должным образом: просто говорю, что это не было в рамках: выполнены как единое целое.
- принцип наименьшего сюрприза. Много рамок позволит опытным разработчикам создавать сайты за несколько часов. С Drupal вы должны получить большой опыт и лучшие практики, прежде чем вы можете быть уверены, чтобы развернуть веб-сайты по планированию.
- MVC. Drupal имеет отдельный слой базы данных и слой темы(представления), но они нетрадиционны и часто используются неправильно. И уж точно не по структурной схеме.
- unopinionated поведение: рамки могут заставить определенные методологии, библиотеки или даже поощрять определенные поведение, но оно не должно иметь жестко закодированных / не переопределяемых значений по умолчанию, которые определяют конечный продукт. Или, на английском языке: drupals core имеет много значений по умолчанию, которые диктуют, как вы собираетесь настроить, макет и структуру вашего сайта, независимо от ваших (клиентов) потребностей или пожеланий. Модули или аддоны приходят даже momre часто с поведением и часто выглядят встроенными и/или жестко закодированными.
- сухой, не повторяйтесь: Drupal сильно зависит от повторения себя. Вся ее тематика-система зависит от копирование фрагментов кода в пользовательские файлы и изменение лакомых кусочков. Его система переопределения формы требует копирования больших частей формы по умолчанию в пользовательские модули и изменения частей, которые требуется изменить.
многие из этих недостатков являются основной причиной задержки и бюджетных промахов, как видно из моего +10years Drupal-опыта. Где unopinionated поведения часть оказалась самой неприятной для большинства проектов, в которых я участвовал. Очевидные простые особенности или идеи занимают большую часть всего бюджета; крошечные детали съедают недели разработки; последние 20% занимают не только 80% усилий, но иногда и 300%.
кроме того, Drupal не следует шаблонам OO, что (по общему мнению) плохо. Нет наследования, нет сухой практики, нет объекта-отношения-картографа*) и нет практики unittesting.**).
это может звучать отрицательно, но на самом деле людям удается построить хороший Друпалситы несмотря на все эти "минусы". Это потому, что они придерживаются по умолчанию Drupal в основном (стандарт, где это возможно, аддоны, где изменения хотели, пользовательская разработка, когда никакой другой опции не осталось).
*)
на самом деле есть; в Drupal 7 был введен PDO, но еще нет (пока?) используется как ORM много/вообще.
**)
на самом деле: все основные и многие вклады имеют тесты, но это интеграционные тесты и редкий модульный тест. Интеграционные тесты (DrupalWebTest) установите чистую базу данных Drupal-codebase+для каждого теста. Ваш средний core-testsuite занимает более 8 часов для запуска не является исключением. TDD просто (пока) невозможно.
редактировать чтение в ваших примерах: Drupal особенно плох в области "мастеров формы", хотя он видел улучшение в Drupal 7. Другим заметным недостатком в Drupal является правильная программируемая система workflowing. Существует несколько модулей, которые улучшают или заменяют простую workflow-систему в ядре, но они не легки, ни эффективны (развитие-усилие-мудрый) для того чтобы запрограммировать против. похоже, что основные функции, которые вы хотите, являются самыми слаборазвитыми областями в Drupal
да! Вы можете использовать его как фреймворк. Вы хотели бы быть довольны некоторыми основными API, такими как меню, узел и, вероятно, API формы. Маршрутизатор меню и контроль доступа довольно хороши.
Я работал на нескольких сайтах Drupal, которые не совсем работали, потому что основные требования имели мало общего с CMS. Drupal очень гибкий, но наиболее подходит для управления контентом. Вы можете, конечно, использовать его как некоторые спутниковые CMS для некоторых других приложений. Drupal также можно использовать для обслуживания архитектуры.
Если вы хотите масштабировать большой, вы можете рассмотреть структуру,которая придает большее значение тестированию и тестовым методам. Drupal является поздним последователем этих практик и не является зрелым в этой области. Это то, что я нахожу разочаровывающим, особенно на больших сайтах, где ошибка регрессии становится проблемой. Рассмотрим что-то вроде Ruby on Rails, если это вас интересует.
удачи!
Примечание для себя: Зачем Я желаю кому-то удачи в программном проекте? ... интересный.
Drupal 8 сильно меняется.
- It is OOP
- Using Composer
- Have good cache mechanism in core
- RESTful in core
Так что теперь это легко можно использовать в качестве основы для любого приложения. В end web все способы имеют контент. Электронная коммерция имеет содержание. И так далее.