stringtranslate.com

Веб-фреймворк

Веб-фреймворк ( WF ) или фреймворк веб-приложений ( WAF ) — это программный фреймворк , предназначенный для поддержки разработки веб-приложений , включая веб-сервисы, веб-ресурсы и веб-API . Веб-фреймворки предоставляют стандартный способ создания и развертывания веб-приложений во всемирной паутине . Веб-фреймворки нацелены на автоматизацию накладных расходов, связанных с обычными действиями, выполняемыми в веб-разработке . Например, многие веб-фреймворки предоставляют библиотеки для доступа к базам данных , шаблонные фреймворки и управление сеансами , и они часто способствуют повторному использованию кода . [1] Хотя они часто нацелены на разработку динамических веб-сайтов , они также применимы к статическим веб-сайтам . [2]

История

Поскольку дизайн Всемирной паутины не был изначально динамическим, ранний гипертекст состоял из вручную закодированных текстовых файлов HTML , которые публиковались на веб-серверах . Любые изменения в опубликованных страницах должны были выполняться автором страниц. В 1993 году был введен стандарт Common Gateway Interface (CGI) для взаимодействия внешних приложений с веб-серверами, чтобы обеспечить динамическую веб-страницу , отражающую вводимые пользователем данные. [3]

Однако первоначальные реализации интерфейса CGI обычно оказывали неблагоприятное воздействие на нагрузку сервера, поскольку каждый запрос запускал отдельный процесс . [4] Более поздние реализации используют постоянные процессы среди других методов для уменьшения объема ресурсов сервера и предлагают общее повышение производительности. [ необходима ссылка ]

В 1995 году впервые появились полностью интегрированные среды разработки серверов и языков, а также были введены новые веб-языки, такие как ColdFusion , PHP и Active Server Pages . [ необходима ссылка ]

Хотя подавляющее большинство языков для создания динамических веб-страниц имеют библиотеки, помогающие решать общие задачи, веб-приложениям часто требуются специальные библиотеки для определенных задач, таких как создание HTML (например, Jakarta Faces ). [ необходима цитата ]

В конце 1990-х годов начали появляться зрелые фреймворки «полного стека», которые часто объединяли несколько библиотек, полезных для веб-разработки , в единый связный программный стек для использования веб-разработчиками. [ необходима цитата ]

Типы архитектур фреймворков

Большинство веб-фреймворков основаны на шаблоне модель-представление-контроллер (MVC) . [ требуется ссылка ]

Модель–представление–контроллер (MVC)

Многие фреймворки следуют архитектурному шаблону MVC, чтобы разделить модель данных на бизнес-правила («контроллер») и пользовательский интерфейс («представление»). Это обычно считается хорошей практикой, поскольку это модуляризует код , способствует повторному использованию кода и позволяет применять несколько интерфейсов. В веб-приложениях это позволяет представлять различные представления, например, обслуживать разные веб-страницы для мобильных и настольных браузеров или предоставлять машиночитаемые интерфейсы веб-сервисов .

Основанный на push-уведомлениях против основанный на pull-уведомлениях

Большинство фреймворков MVC следуют архитектуре на основе push, также называемой «основанной на действиях». Эти фреймворки используют действия, которые выполняют требуемую обработку, а затем «проталкивают» данные в слой представления для отображения результатов. [5] Альтернативой этому является архитектура на основе pull, иногда также называемая «основанной на компонентах». Эти фреймворки начинаются со слоя представления, который затем может «извлекать» результаты из нескольких контроллеров по мере необходимости. В этой архитектуре несколько контроллеров могут быть задействованы с одним представлением.

Трехуровневая организация

В трехуровневой организации приложения структурированы вокруг трех физических уровней: клиент, приложение и база данных. [6] [7] [8] [9] База данных обычно представляет собой СУРБД . Приложение содержит бизнес-логику, работающую на сервере, и взаимодействует с клиентом с помощью HTTP . [10] Клиент в веб-приложениях представляет собой веб-браузер, который запускает HTML, сгенерированный прикладным уровнем. [11] [12] Этот термин не следует путать с MVC, где, в отличие от трехуровневой архитектуры, считается хорошей практикой держать бизнес-логику подальше от контроллера, «среднего уровня». [13] [14]

Рамочные приложения

Фреймворки создаются для поддержки разработки интернет-приложений на основе одного языка программирования, начиная от инструментов общего назначения, таких как Zend Framework и Ruby on Rails, которые расширяют возможности определенного языка, до программируемых пакетов на родном языке, созданных вокруг определенного пользовательского приложения, такого как системы управления контентом (CMS), некоторые инструменты мобильной разработки и некоторые инструменты портала. [15]

Универсальные веб-фреймворки

Веб-фреймворки должны функционировать в соответствии с архитектурными правилами браузеров и протоколов , таких как HTTP , который не имеет состояния . Веб-страницы обслуживаются сервером и затем могут быть изменены браузером с помощью JavaScript . У каждого подхода есть свои преимущества и недостатки. [ необходима цитата ]

Изменения на стороне сервера обычно требуют обновления страницы, но позволяют использовать любой язык и использовать больше вычислительной мощности. Изменения на стороне клиента позволяют обновлять страницу небольшими порциями, что похоже на настольное приложение, но ограничено JavaScript и выполняется в браузере пользователя, который может иметь ограниченную вычислительную мощность. Обычно используется некоторая смесь этих двух вариантов. [16] Приложения, которые интенсивно используют JavaScript и обновляют только части страницы, называются одностраничными приложениями и обычно используют клиентскую веб-инфраструктуру JavaScript для организации кода. [ необходима цитата ]

На стороне сервера

Клиентская сторона

Примерами являются Backbone.js , AngularJS , Angular , Ember.js , ReactJS , jQuery UI , Svelte и Vue.js. [17 ]

Функции

Фреймворки обычно устанавливают поток управления программой и позволяют пользователю фреймворка «подключаться» к этому потоку, выставляя различные события. [18] Этот шаблон проектирования « инверсии управления » считается определяющим принципом фреймворка и приносит пользу коду, обеспечивая общий поток для команды, который каждый может настраивать схожим образом. [18] Например, некоторые популярные «микрофреймворки», такие как Ruby Sinatra (который вдохновил Express.js ), допускают «промежуточные» хуки до и после HTTP-запросов. Эти функции промежуточного программного обеспечения могут быть любыми и позволяют пользователю определять ведение журнала, аутентификацию и управление сеансами, а также перенаправление. [19]

Система веб-шаблонов

Кэширование

Веб-кэширование — это кэширование веб - документов с целью снижения использования полосы пропускания , нагрузки на сервер и воспринимаемой « задержки ». Веб-кэш хранит копии проходящих через него документов; последующие запросы могут быть удовлетворены из кэша при соблюдении определенных условий. Некоторые прикладные фреймворки предоставляют механизмы для кэширования документов и обхода различных этапов подготовки страницы, таких как доступ к базе данных или интерпретация шаблона. [ необходима цитата ]

Безопасность

Некоторые веб-фреймворки поставляются с фреймворками аутентификации и авторизации , которые позволяют веб-серверу идентифицировать пользователей приложения и ограничивать доступ к функциям на основе некоторых определенных критериев. Drupal — один из примеров, который обеспечивает доступ к страницам на основе ролей и предоставляет веб-интерфейс для создания пользователей и назначения им ролей. [ необходима цитата ]

Доступ к базе данных, отображение и настройка

Многие веб-фреймворки создают унифицированный API для бэкэнда базы данных, позволяя веб-приложениям работать с различными базами данных без изменения кода и позволяя программистам работать с концепциями более высокого уровня. Кроме того, некоторые объектно-ориентированные фреймворки содержат инструменты отображения для предоставления объектно-реляционного отображения , которое отображает объекты в кортежи . [20]

Некоторые фреймворки минимизируют конфигурацию веб-приложений за счет использования интроспекции и/или следования известным соглашениям. Например, многие фреймворки Java используют Hibernate в качестве слоя сохранения, который может генерировать схему базы данных во время выполнения, способную сохранять необходимую информацию. Это позволяет разработчику приложения проектировать бизнес-объекты без необходимости явно определять схему базы данных. Такие фреймворки, как Ruby on Rails, также могут работать в обратном направлении, то есть определять свойства объектов модели во время выполнения на основе схемы базы данных. [20]

Другие функции, которые могут предоставлять веб-фреймворки, включают поддержку транзакций [21] и инструменты миграции баз данных . [20]

URL-сопоставление

URL- сопоставление или маршрутизация фреймворка — это механизм, с помощью которого фреймворк интерпретирует URL-адреса. Некоторые фреймворки, такие как Drupal и Django, сопоставляют предоставленный URL с предопределенными шаблонами, используя регулярные выражения , в то время как некоторые другие используют методы переписывания для перевода предоставленного URL в тот, который будет распознаваться базовым движком. Другой метод — это обход графа , например, используемый Zope , где URL-адрес разлагается на шаги, которые обходят граф объектов (моделей и представлений). [ необходима цитата ]

Система сопоставления URL-адресов, которая использует сопоставление с шаблоном или перезапись для маршрутизации и обработки запросов, позволяет использовать более короткие и « дружественные URL-адреса », что упрощает сайт и позволяет лучше индексировать его поисковыми системами. Например, URL-адрес, заканчивающийся на «/page.cgi?cat=science&topic=physics», можно изменить на просто «/page/science/physics». Это упрощает запоминание, чтение и запись URL-адреса и предоставляет поисковым системам более подробную информацию о структурной схеме сайта. Подход обхода графа также приводит к созданию дружественных URL-адресов. Более короткий URL-адрес, такой как «/page/science», как правило, существует по умолчанию, поскольку это просто более короткая форма более длинного обхода до «/page/science/physics». [ необходима цитата ]

АЯКС

Ajax , сокращение от « Асинхронный JavaScript и XML », — это метод веб-разработки для создания веб-приложений. Цель состоит в том, чтобы сделать веб-страницы более отзывчивыми, обмениваясь небольшими объемами данных с сервером за кулисами, так что вся веб-страница не должна перезагружаться каждый раз, когда пользователь запрашивает изменение. Это направлено на повышение интерактивности, скорости, удобства обслуживания и использования веб-страницы . [22]

Из-за сложности программирования 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 гораздо более похожей на разработку настольных приложений. [ необходима цитата ]

Веб-сервисы

Некоторые фреймворки предоставляют инструменты для создания и предоставления веб-сервисов. Эти утилиты могут предлагать аналогичные инструменты, как и остальная часть веб-приложения. [23]

Веб-ресурсы

Ряд новых фреймворков Web 2.0 RESTful теперь предоставляют инфраструктуру архитектуры, ориентированной на ресурсы (ROA), для создания коллекций ресурсов в своего рода онтологии семантической паутины , основанной на концепциях из Resource Description Framework (RDF). [ необходима ссылка ]

Смотрите также

Ссылки

  1. ^ Multiple (wiki). "Web application framework". Docforge . Архивировано из оригинала 2015-07-23.
  2. ^ "Лучшие генераторы статических сайтов с открытым исходным кодом". StaticGen .
  3. ^ "CGI: Common Gateway Interface". Архивировано из оригинала 2009-04-09.
  4. ^ "CGI". www.ibm.com . Получено 2021-05-07 .
  5. ^ Томсон, Крис (29 октября 2003 г.). "Разъяснение по MVC= Pull и MVC Push" . Получено 29 июля 2007 г.
  6. ^ Microsoft. "Трехуровневое распределение" . Получено 2011-09-19 .
  7. ^ Oracle. "clustering_concepts_10en" (PDF) . Получено 2011-09-19 .
  8. ^ Роберт Р. Перковски. "Введение в веб-разработку". Архивировано из оригинала 2013-11-07.
  9. ^ IBM. "Использование Client Access Express в трехуровневой среде" . Получено 19 сентября 2011 г.
  10. ^ Oracle. "Понимание трехуровневой архитектуры" . Получено 19 сентября 2011 г.
  11. ^ Microsoft. "Прагматическая архитектура: слои" . Получено 19 сентября 2011 г.
  12. ^ Arokia. "3-х уровневая веб-архитектура" . Получено 2011-09-19 .
  13. ^ "ASP.NET MVC Controller Best Practices". Архивировано из оригинала 2011-10-11 . Получено 2011-09-19 .
  14. ^ Джеймис Бак. "Худой контролер, толстая модель". Архивировано из оригинала 2015-05-16.
  15. ^ "Начало работы с веб-фреймворками". Журнал Wired . Получено 2018-04-02 .
  16. ^ KLIMUSHYN, Mel (6 апреля 2015 г.). «Архитектура веб-приложений – клиентская сторона против серверной стороны». Atomic Spin . Получено 2016-03-06 .
  17. ^ "AngularJS против Backbone.js против Ember.js". www.airpair.com . Получено 2016-06-04 .
  18. ^ ab Fowler, Martin. "bliki: InversionOfControl". martinfowler.com . Получено 2016-03-06 .
  19. ^ Сюэ, Цян. «Capital One Engineering – Философии, сформировавшие успешные фреймворки». www.capitalone.io . Получено 06.03.2016 .
  20. ^ abc "Active Record Basics". Ruby on Rails . Получено 20 марта 2021 г. Object Relational Mapping, обычно называемое аббревиатурой ORM, — это метод, который соединяет многофункциональные объекты приложения с таблицами в системе управления реляционными базами данных... Active Record автоматически создает методы, позволяющие приложению читать и обрабатывать данные, хранящиеся в его таблицах.
  21. ^ "Active Record Transactions". Ruby on Rails . Получено 20 марта 2021 г.
  22. ^ "Что такое AJAX". www.dlsweb.rmit.edu.au . Получено 2021-05-07 .
  23. ^ Максимилиан, Э. М. (2006). "Учебник 4: Веб-сервисы на Rails: использование Ruby и Rails для разработки веб-сервисов и мэшапов". Международная конференция IEEE по веб-сервисам 2006 г. (ICWS'06) . стр. xliii. doi :10.1109/ICWS.2006.139. ISBN 0-7695-2669-1.