Отличие фреймворка от cms
Этой статьей я хочу начать цикл материалов, посвященных фреймворкам: что такое фреймворки, зачем они нужны, и какие бывают.
Основные выводы
Запомните, что квалифицированные разработчики аргументируют выбор в пользу того или иного решения. Вам не нужно выбирать, вам должны предлагать решения в зависимости от задач.
При работе с любым инструментом, будь то CMS или фреймворк, все зависит от программиста и его квалификации. Вероятность наткнуться на некомпетентного разработчика есть везде.
Фреймворк выигрывает перед CMS, если нужно делать индивидуальный качественный проект, который будет следовать последним тенденциям в разработке.
Технически любой функционал может быть реализован как на CMS, так и на фреймворке. Однако некоторые проекты проще сделать на CMS, а некоторые — на фреймворке.
По сути, любой сайт или веб-приложение можно разрабатывать при помощи одного из трёх подходов:
- Взять коробочную систему управления сайтом и адаптировать её под задачи.
- Взять фреймворк и на его основе реализовать требуемый функционал.
- Написать систему «с нуля», используя «чистый» язык программирования.
Если провести аналогию со строительством дома, то подходы выглядят так:
- Вы покупаете некий готовый дом, а потом его достраиваете / делает отделку.
- Вы покупаете кирпичи и доски, а затем приступаете к строительству по своему собственному проекту.
- Вы ищете и разрабатываете месторождение глины, делаете из неё кирпичи, параллельно с этим вырубаете лес для изготовления досок. Думаю, что можно не продолжать.
Разработку «с нуля» стоит сразу отбросить, так как этот подход может быть правильным только в том случае, если создание проекта — это основная задача компании, а ресурсов под эту задачу выделено очень много. Хорошие проекты «с нуля» пишутся очень долго, хотя этот подход позволяет создавать очень серьёзные решения.
Разработка на CMS — наиболее правильный подход, если проект достаточно типовой. То есть в CMS уже есть все нужные вам модули, а те процессы, которые встроены в CMS, почти полностью соответствуют вашим ожиданиям.
Разработка на фреймворке — наиболее правильный подход, если ваше видение проекта не особо укладывается в возможности и процессы присутствующих на рынке CMS. То есть тогда, когда в случае использования CMS её придётся существенно дорабатывать.
Если возвращаться к приведенной выше аналогии, то «производство стройматериалов» — удел немногих, «покупка готового дома» оптимально подойдёт тем, кому эти готовые дома изначально нравятся, а «строительство из готовых материалов» лучше всего для тех, кто хочет что-то особенное. То есть нерационально как покупать готовый дом и разбирать его на стройматериалы, так и собирать из стройматериалов то, что на рынке уже есть в готовом виде.
По сути, выбор стоит делать на основании экономической составляющей разработки. Ниже приведены некоторые критерии, которые позволят принять обоснованное решение по этому вопросу.
- Функционал, который встроен в CMS, дороже и дольше реализовывать на фреймворке, а разработка сложного функционала на CMS или переписывание базовых процессов CMS стоит дороже и занимает больше времени, чем та же работа выполненная сразу на фреймворке.
- Добиться от сложного проекта на CMS высокой скорости работы стоит дороже, чем сделать это на фреймворке. Аналогично обстоят дела и с масштабированием. То есть при высоких требованиях к устойчивости к нагрузкам, производительности или к отказоустойчивости выбирайте решения на фреймворках (или закладывайте стоимость работ по оптимизации CMS в бюджет проекта).
- Запуск первой пилотной (неполной) версии проекта на CMS всегда быстрее, чем запуск аналогичной версии на фреймворке. Если проект сложный, а сроки запуска «горят», то лучше либо выпускать «пилот» на CMS, а затем его затратно дорабатывать или параллельно с этим разрабатывать решение на фреймворке, либо расставлять приоритеты между сроками разработки и сложностью проекта (либо отказываться от сложного функционала, либо увеличивать сроки).
Простые проекты проще, быстрее и дешевле делать на коробочных CMS, а сложные проекты эффективнее разрабатывать на фреймворках
Разработка сайта - дело непростое. Выбранный путь напрямую влияет на затраченное время, силы и конечный результат. Глобально разработчиков можно разделить на три группы: те, кто делает сайт на базе CMS, те, кто использует фреймворк, и те, кто пишет сайт с нуля. Какие плюсы и минусы есть в каждом из этих решений? Разберемся.
Начнем с CMS.
CMS - система управления контентом. Распространяется на бесплатной или платной основе.
Подойдет для проектов:
- с небольшой нагрузкой;
- без особенного, специфического функционала;
- с ограниченным (небольшим) бюджетом;
- которые необходимо быстро опубликовать (сжатые сроки реализации);
- с понятным (известным) управлением.
Плюсы
- Нужно создать только внешнюю сторону сайта и «натянуть» ее на движок;
- можно сделать сайт даже без знания программирования;
- легко настраивать и администрировать, административная панель знакома большинству пользователей (если речь о популярных CMS: WordPress, Joomla и т.д.);
- CMS включает в себя весь основной функционал;
- функционал можно расширить за счет большого количества плагинов;
- есть хорошая и понятная документация (опять же, для популярных CMS);
- имеется API, который можно использовать для разработки и интеграции с другими сервисами.
Минусы
- Ограниченный набор функций;
- небольшая техническая поддержка;
- изначально низкая производительность, т.к. в движке заложено много возможностей (которые вы даже не используете);
- уязвимость, популярные CMS проще взломать (и их часто взламывают).
Сравнение чистого кода, фреймворка и CMS
Перед созданием сайта программисту нужно решить, по какому из трех возможных путей разработки сайта он хочет пойти.
Первый вариант – это написание исходного кода с нуля. Такой путь удобен, так как дает свободу действий и практически неограниченный функционал, который можно реализовать. Среди минусов необходимо выделить трудоемкость и растянутость во времени, а также необходимость тщательно тестировать готовый продукт на предмет ошибок и недоработок.
Второй вариант – это использование фреймворков. Безусловно, этот вариант имеет ряд ограничений, если сравнивать его с предыдущим путем: у вас уже будет готовая основа, которую необходимо будет заполнить нужными компонентами. Естественно, даже такой вариант не подойдет тем, кто мало знаком с программированием, и именно поэтому на свет появился третий способ создания сайта.
Третий вариант – установка готовой CMS. Этот путь популярен у людей, далеких от веб-разработки, так как он позволяет легко и быстро создать свой собственный сайт, при этом все необходимые действия можно выполнять из административной панели. Но в то же время этот подход является самым несвободным по сравнению с предыдущими двумя и обладает массой ограничений.
Таким образом, фреймворк – это некий компромисс между написанием собственного кода и использованием готовой системы управления контентом. Фреймворк обеспечивает проект уже готовым каркасом, при этом не лишает его функциональной гибкости.
Необходимые для веб-разработки фреймворки чаще всего делят по принципу языка, к которому они относятся. В данной и следующей статьях я последовательно рассмотрю, какие фреймворки существуют, и в чем заключаются их особенности.
![Логотип Python]()
Python-фреймворки
Django – это один из самых известных фреймворков в целом и, безусловно, самый популярный фреймворк на языке Python. Удивительно, но для того, чтобы начать использовать Django, вам даже не нужны глубокое знание языка Python. Отличительной особенностью Django является его принцип DRY, который расшифровывается как “Don’t repeat yourself”. Мысль, выраженная в этой фразе, ведет к тому, что разработчикам не следует повторять те строки кода, которые они уже использовали, и благодаря этому исходный код выглядит более лаконично и понятно. К преимуществам фреймворка можно также отнести стандартную структуру (благодаря которой даже сторонний программист сможет разобраться в коде) и наследование шаблонов. Многие знакомы с Django в качестве системы администрирования, однако эта CMS подойдет только опытным пользователям, знакомым с программированием.
Flask – данный фреймворк также называют расширяемым микрофрейморком. Это связано с тем, что изначально в Flask заложен лишь самый необходимый функционал, который затем можно расширять до уровня, который необходим проекту. Обилие расширений решит практически любую задачу, которую вы перед собой поставите. Поэтому свое ознакомление с Python-фреймворками многие советуют начать именно с Flask.
TurboGears – известный Python-фреймворк с более чем 10-летней историей. Он предназначен для разработки веб-проектов и состоит из различных WSGI-компонентов, в том числе Pylons и CherryPy. Благодаря этому можно говорить о TurboGears как о мощном фреймворке с богатым функционалом. Он поддерживает множество баз данных и форматов обмена данными, также поддерживает различные JavaScript-библиотеки и горизонтальное масштабирование данных.
Tornado – этот фреймворк выделяется на фоне остальных своей главной особенностью, а именно способностью решить проблему 10 тысяч соединений. Неблокирующая природа сервера, использующего Torando, позволяет ему легко выдерживать тысячи недлительных подключений, которые произведены в одно время.
Web2spy – этот фреймворк, как и некоторые другие, основывается на концепции RAD (rapid application development). Иными словами, при его разработке особое внимание было уделено оптимизации процесса создания проекта, чтобы программист мог как можно быстрее создать хороший продукт. Фреймворк имеет открытый исходный код и помогает создавать динамические сайты при помощи языка Python. Это полнофункциональный фреймворк, который содержит компоненты для всех основных функций.
Во второй части будут рассмотрены фреймворки следующих языков программирования: Ruby, Java, JavaScript.
Что выбрать для разработки фреймворк или CMS? Чем они вообще отличаются и какие преимущества и недостатки у фреймвоков и CMS.
Фреймворк от английского слова "каркас". Фреймворк - это надстройка над языком, набор библиотек. Хорошо отлаженных и прекрасно взаимодействующих между собой библиотек
CMS (Content Management System, система управления контентом)
CMS(ЦМС) – это, по сути, уже готовый сайт, который нужно донастроить под свои нужды.
Казалось бы, если фреймворк - это всего лишь набор библиотек, а CMS - это уже почти сайт, то к чему вообще этот глупый выбор? Но ведь если бы всё было так просто, то, очевидно, не было бы этой статьи и ты её не читал бы.
CMS значительно ускоряет разработку простого шаблонного сайта. У сайта сразу готова админка и её не надо писать отдельно, в отличии от разработки на фреймворке. Однако это скорость создания сайта достигается за счёт шаблонности, ограниченности или излишней универсальности CMS.
При желании расширить функционал, добавить что-то эдакое, возможно, придётся прямо воевать с CMS или идти на какие-то компромиссы. В случае с фреймворком, таких проблем нет. Да разработку уходит больше времени, однако любая задумка осуществима без каких-либо костылей.
В фреймворках зачастую только самый необходимые функции и хороший, отлаженный, отрефакторенный код. В CMS, особенно, если она предполагает сторонние модули, можно встретить дикий ад в коде и даже вредоносный код, который может, например добавлять ссылки на левые сайты в твой проект.
Ведя разработку с помощью фреймворка, ты сам строишь взаимодействие пользователя с функциями и данными и сам решаешь как это будет выводиться в браузер. В CMS это всё решили за тебя. Вероятно, это и неплохо, ведь если у разработчика недостаточно опыта, то с фреймворком или чистым языком можно наворотить такого, что в итоге CMS окажется очень хорошим вариантом.
А Framework даёт полную свободу действий. За нас написали основу, фундамент, а дальше бери и твори. Но для качественной разработки на фреймворке необходимо обладать достаточным уровнем, чтобы не создавать откровенной непотребщины или, что ещё хуже, дырявого продукта.
Буду подводить итоги.
Скорость. Шаблонное решение можно создать очень быстро.
Готовая админка. На многих популярных CMS достаточно удобная и понятная админка
Простота разработки. По большому счёту, чтобы создать простецкий сайт и навыками программирования и вёрстки обладать не обязательно.
Ограниченный функционал. Шаг влево, шаг вправо карается расстрелом. Функционал допилить возможно всегда, но, вероятно, это будет просто межгалактический костыль.
Избыточность. В погоне за универсальностью, разработчики CMS, чтобы угодить всем, закладывают столько функций, что скорее всего для одного проекта всё это не нужно. В итоге получаем много неиспользуемого кода.
Сайт на CMS всегда уступает в производительности хорошо написанному сайту на фреймворке.
При разработке корпоративных сайтов на большинстве проектов мы используем фреймворки Symfony или Node. js. Часто такие решения вызывают вопросы у клиентов.
Основной аргумент — с фреймворками работать сложнее, потому что они менее популярны. Соответственно, тяжелее найти разработчиков и стоимость их часа выше по сравнению с разработчиками, работающими на популярных CMS. Плюс, если не получится сработаться, потом будет сложно найти исполнителей, которые смогут разобраться в проекте.
Для того, чтобы развеять эти популярные мифы и сомнения, мы написали статью, в которой простым языком описали и сравнили CMS и фреймворки.
На CMS проще найти разработчиков
Да, верно, поскольку количество разработчиков, например, на «1 С-Битрикс» больше, чем на Symfony. Однако качество таких разработчиков хуже, поскольку порог вхождения ниже, требуется меньше квалификации, чем при работе с фреймворками. Таким образом, вы получаете больше неквалифицированных разработчиков.
Как другие разработчики будут работать с вашими решениями?
Также, как разработчики, которые работают с решениями на CMS. Наш опыт показывает, что если продукт разработан через «костыли» , то популярность CMS не спасет. Программист, который посмотрит на некачественный код, предпочтет сделать проект с нуля. И нет разницы, CMS это или фреймворк.
Что такое фреймворк
Если обратиться к истории самого слова «фреймворк», то этот неологизм появился в языке относительно недавно, примерно в начале XXI века. С английского слово “framework” можно перевести как «конструкция», «структура», «каркас», «корпус» или «остов». Понимание перевода слова ведет к понимаю сути фреймворка: это специальная программная среда выполнения, программный каркас, который облегчает разработку программ и объединение компонентов, так как уже содержит в себе некую основу, не меняющуюся от конфигурации к конфигурации часть, которую следует лишь наполнить сменными моделями или точками расширения.
В отличие от динамической библиотеки (DLL), которая предоставляет собой лишь набор ограниченных функций, фреймворк является каркасом, согласно которому будет строиться архитектура приложения, то есть он определяет взаимосвязь между компонентами. Более того, фреймворк может содержать много разных по тематике библиотек.
При этом фреймворки можно поделить на следующие виды:
- фреймворк программной системы;
- фреймворк приложения;
- фреймворк концептуальной модели.
В данном цикле в поле нашего зрения окажутся фреймворки, которые относятся к первому типу и помогают разрабатывать веб-проекты.
![Логотип PHP]()
PHP-фреймворки
Yii – фреймворк, название которого расшифровывается как “Yes, it is!”, существует уже более 8 лет и постоянно обновляется. У него широкие возможности: одна из самых высоких производительностей (по сравнению с другими фреймворками), кэширование, обработка ошибок, миграция баз данных, возможность использовать и объединяться с jQuery и многое другое. В отличие от других PHP-фреймворков, Yii можно изучить достаточно быстро, работа с ним стабильна и безопасна. Именно по этим причинам данный фреймворк часто советуют тем, кто только начинает свой путь в PHP-программировании.
Laravel – этот фреймворк часто лидирует в разнообразных опросах, касающихся PHP-фреймворков. Например, в 2013 году Laravel был назван самым многообещающим проектом 2014 года, а в 2015 году занял первые места в категориях «Фреймворк корпоративного уровня» и «Фреймворк для личных проектов». Laravel прост в освоении и отлично подходит для небольших и средних проектов, когда необходимо быстро и удобно написать код.
Symfony – этот фреймворк часто рекомендуют использовать для создания больших порталов, так как его можно назвать одним из самых стабильных PHP-фреймворков. Это гибкий и масштабируемый фреймворк со значительным функционалом. Symfony содержит полезные многоразовые компоненты, касающиеся безопасности, шаблонов, перевода, настройки форм и многого другого.
CodeIgniter – один из старейших фреймворков, первый публичный релиз которого состоялся в 2006 году. Этот фреймворк имеет массу преимуществ: быстрая установка, хорошая документация, малый вес; с ним вы можете легко реализовать задуманный проект. Именно поэтому некоторые начинают освоение фреймворков именно с CodeIgniter. Немаловажным фактом также являются регулярные релизы новых версий, в которых исправлены баги и добавлены новые возможности.
Phalcon PHP – написанный на языках программирования C, С++ и PHP фреймворк имеет открытый исходный код, а также предлагает разные версии для самых популярных операционных систем: Windows, Linux и Mac. Если взять во внимание тесты, то данный фреймворк является одним из самых производительных. Также Phalcon PHP можно использовать на собственных серверах.
Фреймворк
Фреймворк - это набор элементов, готовая структура, написанная на определенном языке программирования. Фреймворк дает каркас для будущего проекта.
Подойдет для проектов:
- с высокой нагрузкой;
- которые со временем меняются (под требования и тренды);
- специфических, которые не вписываются в рамки стандартных CMS;
- где есть четкое понимание задач и того, что должно получиться в итоге.
Плюсы
- Есть готовые элементы, которые можно использовать при разработке;
- высокая производительность;
- безопасность;
- отлаженность кода;
- гибкие решения, разработка ведется исходя из поставленных целей, можно найти решения для нестандартных задач;
- возможность использовать библиотеки и другие готовые решения.
Минусы
- Нужны опытные разработчики, разработка сложнее, чем при использовании CMS;
- административную часть нужно создавать самостоятельно;
- увеличивается время разработки, т.к. она сложнее;
- увеличивается и стоимость проекта;
- дороже поддержка сайта, сложнее найти тех, кто сможет поддерживать и администрировать.
Кратко о плюсах и минусах CMS и фреймворках
Фреймворк | CMS | |
---|---|---|
Скорость запуска | Средняя | Быстрая |
Возможность посмотреть демо-версию | Нет | Есть |
Скорость работы | Быстрая | Средняя |
Индивидуальные решения | Любые решения | Есть сложности и ограничения |
Стоимость | Бесплатно | Есть как платные, так и бесплатные решения |
Система управления сайтом | Разрабатывается индивидуально, очень удобная | Сложная |
Количество специалистов на рынке | Немного, но они качественные | Много, но много некачественных |
Обновляемость | Простая, не влияет на работу проекта | Средняя, могут возникнут проблемы после обновления |
Технологичность | Самые современные решения | Устаревшие технологии |
![Логотип HTML/CSS]()
HTML/CSS-фреймворки
Bootstrap (или Twitter Bootstrap) – один из самых известных и современных фреймворков, впервые анонсированный в 2011 году. Одно из главных свойств этого фреймворка – адаптивность. Используя Bootstrap, вы можете создать сайт с отзывчивым дизайном: ваш проект будет самостоятельно подстраиваться под размер экрана пользователя. Другие плюсы этого фреймворка: простота в использовании, наличие множества шаблонов и стилей, что значительно экономит время при разработке, согласующийся постраничный дизайн, открытое программное обеспечение. Bootstrap нельзя назвать только HTML/CSS-фреймворком, так как он включает в себя также готовые стили и плагины под jQuery (библиотека на JS).
Foundation – один из ведущих front-end-фреймворков на данный момент. В последних версиях авторы сделали упор на функционал для мобильных устройств. Семантический подход позволяет писать более чистый код на HTML и использовать SCSS. Этот фреймворк хорошо подходит для быстрого прототипирования.
Semantic UI – этот фреймворк, как и Bootstrap, поможет вам создать переносимые интерфейсы. Это достаточно молодой фреймворк, который постоянно развивается; он имеет множество различных кнопок, иконок, изображений, надписей и других элементов.
Uikit – фреймворк, обладающий легкой и модульной структурой. Выделяется на фоне остальных фреймворков двумя особенностями: во-первых, markdown (предварительный просмотр в реальном времени), во-вторых, синтаксическая подсветка для HTML.
Pure by Yahoo! – фреймворк, который содержит небольшие адаптивные CSS-модули, пригодные для использования в любом проекте. Как можно понять из названия, к этому фреймворку стоит обращаться тогда, когда вам нужно использовать некоторые возможности фреймворка, но в то же время вы не хотите использовать слишком тяжелый программный каркас.
Плюсы CMS
- 1 Можно быстро стартовать. Если к утру нужен сайт, то можно использовать CMS. С фреймворками так не получится.
- 2 Если используется CMS, то можно посмотреть демонстрационную версию сайта и увидеть, как им управлять.
Минусы CMS
- 1 Сложность в создании индивидуальных решений. Любые изменения должны вписываться в архитектуру CMS. Например, даже изменение цвета кнопки может добавить проблемы. Для решения таких проблем создаются «костыли» , т. е. решения в коде, которые ухудшают качество продукта и скорость работы.
- 2 Качество проекта. При работе с фреймворком разработчик сам выбирает технологии, которые следует использовать. При работе с CMS эти технологии заранее предопределены и разработчик должен уметь ими пользоваться. Поэтому программист, работающий с фреймворками, имеет разносторонний опыт и проект получается более продуманный.
- 3 Скорость. CMS содержит в себе компоненты, которые добавляют в код проекта дополнительные проверки. Фреймворк содержит только те компоненты, которые необходимы в проекте. Поэтому сайт на фреймворке работает быстрее.
- 4 Обновляемость. Проект, созданный на фреймворке не зависит от обновлений фреймворка. При обновлении проекта на CMS часть функционала сайта может перестать поддерживаться и потребовать дополнительных доработок.
- 5 Интерфейс. У CMS есть заранее созданный интерфейс, который сложно перенастроить. У вас будут даже те блоки и функции, которыми вы не пользуетесь. Система управления сайтом, разработанная на фреймворке, создана специально для проекта.
- 6 Стоимость. Большинство популярных в России CMS — платные, фреймворки — бесплатные.
Собственная разработка
Собственная разработка - это создание сайта с нуля. Сайт пишется, например, на чистом HTML или PHP. Весь функционал пишется с нуля.
Подойдет для проектов:
- нетипичных, новых, уникальных, которых еще нет в сети;
- без жесткого ограничения времени на разработку (и финансовых вложений);
- с оригинальным и сложным функционалом, нигде до этого не представленным.
Плюсы
- Можно создать проект с нуля строго под свои задачи;
- функциональность сайта напрямую зависит от поставленных целей, можно реализовать все, что душе угодно;
- полностью контролируется разработка;
- высокая производительность;
- в коде будет только то, что нужно для проекта.
Минусы
- Нужно полностью разработать сайт с нуля, что затратно по времени и ресурсам;
- разработчикам со стороны сложнее разобраться в проекте; тяжелее найти человека, который будет поддерживать сайт, если основной разработчик уйдет;
- необходимо найти квалифицированных специалистов, которые реализуют все задуманные специфические задачи;
- большой бюджет.
Как видите, каждый из этих путей разработки подходит для определенных проектов, и при выборе нужно определиться в первую очередь с тем, что вы хотите получить в итоге (а также за какое время и стоимость). После этого сделать выбор будет гораздо проще.
Что такое CMS и фреймворк?
CMS (Content Management System) — это система управления сайтом, на которой быстро можно разработать шаблонный сайт из готовых решений.
Фреймворк — это набор библиотек с необходимыми функциями, позволяющими создавать нестандартные решения, т. е. это инструмент для разработки.
CMS подходит тогда, когда нужно быстро запустить шаблонный сайт и не нужны индивидуальные решения. Фреймворк используется для продуманных и нестандартных решений без ограничений.
Читайте также: