Как выбрать веб-фреймворк

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

Делу время, фреймворку час

И сразу важная информация для тех, кто планирует изучать какой-нибудь фреймворк, делая на нём боевой проект.

Есть большая разница между личным сайтом про котиков, который вы неспешно пилите по выходным, и срочным заказом от клиента веб-студии. Эта разница – количество времени, которое вы готовы потратить на проект.

Изучение чего-то нового всегда занимает некоторое время. Плюс в реальности перед нами часто встают задачи, которые слабо, а то и вовсе не освещаются в материалах для начинающих. Плюс по неопытности мы совершаем ошибки. Плюс... В общем, вы уже поняли: первичную оценку сроков в случае использования нового инструмента можно смело умножать на три. Умножили? Всё ещё вписываетесь в сроки? Тогда отлично. В противном случае отложите знакомство.

Предположим, что со временем у нас всё хорошо, и продолжим.

Не PHP единым

Прежде всего, нужно определиться с языком программирования. Здесь нет никаких рекомендаций, кроме вашего собственного опыта/опыта вашей команды и требований будущего проекта.

С опытом всё понятно. Это знания синтаксиса языка, его возможностей и ограничений. Если есть время (см. предыдущий пункт), можно изучить и совершенно новый язык.

Многие веб-разработчики, начавшие свою профессиональную деятельность с изучения PHP, остаются верными ему и спустя много лет. Да, PHP прост в изучении. Да, он практически универсален. Однако этому языку полно альтернатив. В некоторых случаях гораздо выгоднее использовать что-то другое. Тут и пригодится знание требований проекта.

Вот несколько примеров. Если вы планируете веб-сервис, который будет работать в реальном времени (например, чат или многопользовательскую игру), то почитайте о Node.js или Erlang. Хотите быстрого процесса разработки и простоты кода? Обратите внимание на Ruby. В корпоративных приложениях, где требуется защита пользовательских данных, прекрасно показывают себя решения на базе Java J2EE. Если вашему приложению нужны высокая скорость выполнения и многопоточность, то, возможно, вас заинтересует набирающий популярность язык Go.

Knee-deep in frameworks

Теперь найдём фреймворки для выбранного языка. Загляните на эту страницу википедии – там перечислено большинство фреймворков для разных языков программирования. На странице также есть таблицы сравнений фреймворков, откуда можно почерпнуть массу полезной информации.

Глаза разбегаются, не правда ли? С одной стороны, такое количество доступных вариантов немного пугает. С другой стороны, это означает, что на рынке есть инструменты на любой вкус и цвет. А раз так, то среди возможных вариантов вы с большой долей вероятности найдёте Тот Самый Фреймворк, который надолго станет вашим верным помощником.

Дальше нам нужно вооружиться гуглом и посетить официальные сайты фреймворков, а также сайты комьюнити – сообществ, образовавшихся вокруг каждого инструмента. Что мы хотим узнать в первую очередь:

  • размер и активность комьюнити. Чем больше комьюнити, тем популярнее фреймворк. Чем активнее сообщество, тем проще и быстрее найти помощь.
  • качество и доступность документации. Больше документации – проще освоение инструмента. Если только эта документация не написана дубовым языком, мешающим обучению. Если вы не в ладах с английским, уделите особое внимание поиску русскоязычной документации (кстати, то же относится и к комьюнити).

Хотя бы по диагонали просмотрите маркетинговые материалы: как они позиционируют фреймворк, какие особенности выделяют.

Нелишним будет ознакомиться со списком компаний, использующих фреймворк. (Уже одно наличие этого списка говорит о том, что инструменту доверяют.) Какие услуги оказывают эти компании? Похожи ли эти услуги на те, что будут оказывать ваши приложения?

В ходе поисков не забывайте прислушиваться к себе. Комфорт и удовольствие от работы с инструментом, который вам нравится, ни с чем не сравнимы.

10 критериев выбора фреймворка от создателей Symfony2

На сайте фреймворка Symfony2 перечислены следующие десять критериев выбора подходящего веб-фреймворка.

  1. Популярность и размер комьюнити
    Чем более известен и популярен фреймворк, тем дольше он будет оставаться «на плаву», развиваясь и обрастая новыми идеями, плагинами и т.д.
  2. Философия
    Это самая суть фреймворка – фундаментальный критерий, помогающий удостовериться, этот ли фреймворк нужен вам. Инструмент, разработанный профессионалами для собственных нужд, скорее всего, угодит пожеланиям других профессионалов.
    Этот пункт следует пояснить. В своих маркетинговых материалах разработчики большинства фреймворков описывают философию продукта довольно шаблонно. Как правило, это «удобный инструмент», «ускоряющий время разработки», использующий «лучшие практики программирования», расширяемый и тому подобное. Но по-настоящему важно вот что. Некоторые фреймворки предлагают новичкам комфортную среду для быстрого старта, тогда как другие «долго запрягают» и требуют хорошего знания языка/ООП/шаблонов проектирования, но зато обладают широчайшим набором возможностей.
  3. Устойчивость
    При выборе фреймворка удостоверьтесь, что создатели будут поддерживать его разработку в течение продолжительного времени. Это упростит сопровождение и модернизацию ваших проектов.
  4. Поддержка
    Ещё один критерий, который не должен быть упущен из виду – насколько легко будет найти ответы на свои вопросы и получить помощь. Узнайте, какого рода поддержка доступна. Издатель? Комьюнити (списки рассылки, IRC и т.п.)? Сервисные компании (разработка, поддержка, обучение)?
  5. Технические приёмы
    Чтобы не оказаться в ловушке, всегда предпочтительнее выбрать интероперабельное решение – такое, которое использует лучшие практики в терминах разработки (шаблоны проектирования).
    Что понимать здесь под интероперабельным решением? Во-первых, это такое внутреннее устройство системы, которое основано на слабом связывании (компоненты фреймворка не зависят друг от друга) и грамотно использует шаблоны проектирования. Во-вторых, это способность системы к взаимодействию с другими системами. Фреймворки реализуют эту способность при помощи стандартных форматов данных, внешних интерфейсов (API) и вызова удалённых процедур (RPC).
  6. Безопасность
    Любое приложение потенциально уязвимо. Чтобы снизить риск, всегда лучше выбрать фреймворк, обеспечивающий функции безопасности (например, управление межсайтовым скриптингом).
  7. Документация
    Необходимо оценить объём и качество существующей литературы по фреймворку. Инструмент, у которого хорошая документация, проще использовать и улучшать.
  8. Лицензия
    Лицензии важны просто потому, что они могут существенно влиять на ваши приложения. Например, приложение, основанное на фреймворке с лицензией GPL, обязательно подлежит распространению по этой лицензии. С другой стороны, это не относится к фреймворку с лицензией MIT.
  9. Наличие ресурсов на рынке труда
    Возможно, вы захотите, чтобы на время разработки (либо дольше) вас окружала команда специалистов, знающих данный фреймворк – для сопровождения и модернизации. Другими словами, удостоверьтесь, что на рынке труда есть специалисты с навыками, которых требует используемый вами инструмент.
  10. Попробуйте его!
    Вот именно! Не удовлетворяйтесь одними только интернет-обзорами, комментариями и слухами, как хорошими, так и плохими. Потестировав фреймворк самостоятельно, вы сможете составить о нём собственное мнение. Также вы удостоверитесь, комфортно ли вам работать с этим инструментом.

Напоследок

От выбора фреймворка зависит многое, но не всё. Если в процессе разработки окажется, что выбранный инструмент не совсем подходит для текущего проекта, не нужно отчаиваться. В конце концов, фреймворк – лишь каркас, задающий правила построения приложений. Из затруднительных ситуаций всегда можно выйти, используя обычные библиотеки функций и средства языка. Возможно, получившийся код будет не слишком опрятным, зато вы сумеете закончить проект.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Scroll Up