Что такое фреймворк?
Фреймворк — это сконцентрированный опыт разработчиков (программистов), проявленный в виде множества наработанных скриптов, функций, классов, методов, шаблонов, алгоритмов, подсистем, документаций и т.п.
Сайт или веб-приложение обычно состоит из двух логических частей:
- серверная часть (back-end)
- клиентская часть (front-end)
Серверная часть находится на физическом/виртуальном хостинге в виде исполняемой программы и серверных скриптов, взаимодействует с диском сервера (хостинга), базой данных, работает с сетевым окружением. Серверная часть принимает, обрабатывает и хранит данные от пользователя (клиента). Серверная часть отдаёт данные пользователю (клиенту). Такие процессы явным образом не видны пользователю (клиенту).
Говоря бытовым языком:
- Cерверная часть (back-end) - это то, что под капотом автомобиля, то есть то, что не видно, пока не заглянешь туда и не начнёшь с этим разбираться.
- Клиентская часть (front-end) - это интерфейс, то есть корпус и салон автомобиля, приборная панель, руль, педали, лобовое окно, магнитола. Клиентская часть - это всё то, что пользователь наблюдает в окне своего браузера, тексты, картинки, аудио и видео материалы, поля ввода, кнопочки, формы для заполнения данных, окна. За отрисовку интерфейса отвечают клиентские (браузерные) скрипты и технологии: HTML, CSS, JavaScript, Flash.
В связи с таким естественным логическим разделением, также разделяются фреймворки и специалисты. Нередко можно увидеть название вакансий и резюме "В компанию такую-то требуется Front-end разработчик.", "Требуется Back-End программист" или "Ищу работу Full-stack разработчиком".
BlueWhale является back-end и front-end фреймворком.
Ниже приведены подсистемы, которые имеются почти в любом back-end фреймворке в том или ином виде, в большей или меньшей степени функциональности.
Примечание: Перечисленные ниже подсистемы имеются во фреймворке BlueWhale. Некоторые в минимальном виде.
В списке лишь технические подсистемы, а существуют ещё подсистемы для решения бизнес-задач, так называемая бизнес-логика.
Составные части back-end фреймворков
- Подсистема работы с базой данных. Безопасное выполнение запросов, защита от SQL-injection.
- Подсистема кэширования данных.
- Механизм сессий и разделения на пользователей.
- Механизм оптимизации загрузки страниц: объединение и сжатие CSS и JavaScript.
- Подсистема профайлинга и отладки.
- Подсистема мультиязычности/локализации/интернационализации (i18n).
- Подсистема многосайтовости, разделение конфигураций.
- Модульность.
- Подсистема шаблонизации.
- Подсистема построение меню.
- Работа с древовидными данными, вложенные множества (Nested Sets).
- Подсистема роутинга, поддержка ЧПА (Человеко-Понятые Адреса).
- Организация кода и файлов под MVC-модель.
- Формирование пользовательских форм и элементов управления (кнопочки, поля ввода, раскрывающиеся списки, слайдеры и т.п.).
- Обработка внешних данных, валидация, обработка форм.
- JavaScript API.
- Функции безопасности, для предотвращения XSS, CSRF и т.п.
Чем удобнее реализованы подсистемы, чем понятнее и приятнее (для программиста) выполнена архитектура фреймворка, тем выше эффективность работы исполнителя (программиста) над проектом.