Введение
Программная база для поддержки разработки веб-сайтов Web framework (WF) или web application framework (WAF) - это программная база, предназначенная для поддержки разработки веб-приложений, включая веб-сервисы, веб-ресурсы и веб-API. Веб-фреймворки обеспечивают стандартный способ создания и развертывания веб-приложений в World Wide Web. Цель веб-фреймворков - автоматизировать накладные расходы, связанные с обычными действиями, выполняемыми в веб-разработке. Например, многие веб-фреймворки предоставляют библиотеки для доступа к базам данных, фреймворки шаблонов и управления сеансами, и они часто способствуют повторному использованию кода. Хотя они часто нацелены на разработку динамических веб-сайтов, они также применимы к статическим веб-сайтам.
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and deploy web applications on the World Wide Web. Web frameworks aim to automate the overhead associated with common activities performed in web development. For example, many web frameworks provide libraries for database access, templating frameworks, and session management, and they often promote code reuse. Although they often target development of dynamic web sites, they are also applicable to static websites.
История
Поскольку дизайн Всемирной паутины не был динамичным, ранний гипертекст состоял из текстовых файлов HTML, которые были опубликованы на веб-серверах. Любые изменения в опубликованных страницах должны были быть выполнены автором страниц. В 1993 году был введен стандарт Common Gateway Interface (CGI) для взаимодействия внешних приложений с веб-серверами, чтобы обеспечить динамическую веб-страницу, которая отражала входные данные пользователя. Однако первоначальные реализации интерфейса CGI обычно оказывали неблагоприятное влияние на нагрузку сервера, поскольку каждый запрос запускал отдельный процесс. Более поздние реализации используют постоянные процессы среди других методов для уменьшения отпечатка в ресурсах сервера и повышения общей производительности. В 1995 году впервые появились полностью интегрированные среды разработки серверов и языков, а также были введены новые веб-языки, такие как ColdFusion, PHP и Active Server Pages. Хотя подавляющее большинство языков для создания динамических веб-страниц имеют библиотеки, чтобы помочь с общими задачами, веб-приложения часто требуют конкретных библиотек для конкретных задач, таких как создание HTML (например, Jakarta Faces). В конце 1990-х годов начали появляться зрелые фреймворки "полного стека", которые часто собирали несколько библиотек, полезных для веб-разработки, в единый сплоченный стек программного обеспечения для веб-разработчиков.
Типы архитектур рамок
Большинство веб-фреймворков основаны на модели "модель-смотр-контроллер" (MVC).
Контроллер модели (MVC)
Многие фреймворки следуют архитектурному шаблону MVC, чтобы разделить модель данных на бизнес-правила ("контроллер") и пользовательский интерфейс ("смотр"). Это обычно считается хорошей практикой, поскольку она модулирует код, способствует повторному использованию кода и позволяет применять несколько интерфейсов. В веб-приложениях это позволяет представлять различные представления, например, обслуживать различные веб-страницы для мобильных браузеров и настольных браузеров или предоставлять машиночитаемые интерфейсы веб-сервисов.
На основе толчки против на основе тяги
Большинство фреймворков MVC следуют архитектуре, основанной на подталкивании, также называемой "базирующейся на действиях". Эти фреймворки используют действия, которые выполняют требуемую обработку, а затем "выталкивают" данные на уровень просмотра, чтобы отобразить результаты. Альтернативной для этого является архитектура на основе тяги, иногда также называемая "на основе компонентов". Эти структуры начинаются с уровня просмотра, который затем может "вытаскивать" результаты из нескольких контроллеров по мере необходимости. В этой архитектуре несколько контроллеров могут быть вовлечены в один вид.
Трехуровневая организация
В трехуровневой организации приложения структурированы вокруг трех физических уровней: клиент, приложение и база данных. База данных обычно представляет собой СУБДР. Приложение содержит бизнес-логику, работает на сервере и общается с клиентом с помощью HTTP. Клиент веб-приложений - это веб-браузер, который запускает HTML, генерируемый приложением. Термин не следует путать с MVC, где, в отличие от трехуровневой архитектуры, считается хорошей практикой держать бизнес-логику подальше от контроллера, "среднего слоя".
Рамочные заявки
Фреймворки создаются для поддержки создания интернет-приложений на основе одного языка программирования, начиная от инструментов общего назначения, таких как Zend Framework и Ruby on Rails, которые расширяют возможности конкретного языка, до программируемых пакетов на родном языке, построенных вокруг конкретного пользовательского приложения, таких как системы управления контентом (CMS), некоторые инструменты мобильной разработки и некоторые инструменты портала.
Общецелевые веб-страницы
Веб-фреймворки должны функционировать в соответствии с архитектурными правилами браузеров и протоколами, такими как HTTP, который не имеет статуса. Веб-страницы предоставляются сервером, а затем могут быть изменены браузером с помощью JavaScript. У каждого из этих подходов есть свои преимущества и недостатки. Изменения на странице на стороне сервера обычно требуют обновления страницы, но позволяют использовать любой язык и использовать больше вычислительной мощности. Изменения на стороне клиента позволяют обновлять страницу небольшими кусками, которые напоминают настольное приложение, но ограничены JavaScript и запускаются в браузере пользователя, который может иметь ограниченную вычислительную мощность. Обычно используется смесь этих двух веществ. Приложения, которые используют JavaScript и обновляют только части страницы, называются одностраничными приложениями и обычно используют веб-фреймворк JavaScript на стороне клиента для организации кода.
Клиентская сторона
Примеры включают в себя Backbone. js, AngularJS, Angular, Ember. Я не знаю, что это такое. js, ReactJS, jQuery UI, Svelte и Vue. - Что?
Особенности
Фреймворки обычно устанавливают поток управления программой и позволяют пользователю фреймворка "включаться" в этот поток, выявляя различные события. Эта модель проектирования "инверсии управления" считается определяющим принципом структуры и приносит пользу коду, обеспечивая общий поток для команды, который каждый может настраивать аналогичными способами.
Кэширование
Веб-кэширование - это кэширование веб-документов для уменьшения использования пропускной способности, нагрузки на сервер и воспринимаемой "задержки". В веб-кэше хранятся копии документов, проходящих через него; последующие запросы могут быть удовлетворены из кэша, если выполнены определенные условия. Некоторые прикладные фреймворки предоставляют механизмы кэширования документов и обхода различных этапов подготовки страницы, таких как доступ к базе данных или интерпретация шаблонов.
Безопасность
Некоторые веб-фреймворки поставляются с аутентификацией и авторизацией, которые позволяют веб-серверу идентифицировать пользователей приложения и ограничивать доступ к функциям на основе определенных критериев. Друпал - это один из примеров, который обеспечивает доступ к страницам на основе ролей и предоставляет веб-интерфейс для создания пользователей и назначения им ролей.
Доступ к базе данных, отображение и конфигурация
Многие веб-фреймворки создают единый API для бэкенда базы данных, позволяя веб-приложениям работать с различными базами данных без изменений кода и позволяя программистам работать с концепциями более высокого уровня. Кроме того, некоторые объектно-ориентированные фреймворки содержат инструменты отображения для предоставления объектно-реляционного отображения, которое отображает объекты в tuples. Некоторые фреймворки минимизируют конфигурацию веб-приложений с помощью интроспекции и/или следуя хорошо известным конвенциям. Например, многие Java-фреймворки используют Hibernate в качестве уровня стойкости, который может генерировать схему базы данных во время выполнения, способную сохранять необходимую информацию. Это позволяет разработчику приложений проектировать бизнес-объекты без необходимости явно определять схему базы данных. Фреймворки, такие как Ruby on Rails, также могут работать в обратном направлении, то есть определять свойства объектов модели во время выполнения на основе схемы базы данных. и инструменты миграции баз данных. Из-за сложности программирования Ajax в JavaScript существует множество Ajax фреймворков, которые исключительно занимаются поддержкой Ajax. Некоторые фреймворки Ajax даже встроены в состав более крупных фреймворков. Например, библиотека jQuery JavaScript включена в Ruby on Rails. С ростом интереса к разработке богатых веб-приложений "Web 2.0" сложность программирования непосредственно в Ajax и JavaScript стала настолько очевидной, что в игру вошла компиляторная технология, позволяющая разработчикам кодировать на языках высокого уровня, таких как Java, Python и Ruby. Первым из этих компиляторов был Morfik, за которым последовал Google Web Toolkit, с портами на Python и Ruby в виде Pyjs и RubyJS, которые последовали через некоторое время. Эти компиляторы и связанные с ними библиотеки наборов виджетов делают разработку богатых медиа приложений Ajax гораздо более похожей на разработку настольных приложений.
Веб-сервисы
Некоторые фреймворки предоставляют инструменты для создания и предоставления веб-сервисов. Эти утилиты могут предлагать аналогичные инструменты, как и остальная часть веб-приложения.
Веб-ресурсы
Ряд новых RESTful фреймворков Web 2.0 теперь предоставляют ресурсоориентированную архитектуру (ROA) для создания коллекций ресурсов в некоей семантической онтологии Web, основанной на концепциях из Resource Description Framework (RDF).