Из Википедии, бесплатной энциклопедии
  (Перенаправлено из сопоставления URL-адресов )
Перейти к навигации Перейти к поиску

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

История [ править ]

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

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

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

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

В конце 1990-х начали появляться зрелые, «полные» фреймворки, которые часто собирали несколько библиотек, полезных для веб-разработки, в единый сплоченный программный стек для использования веб-разработчиками. Примеры этого включают ASP.NET , Java EE , WebObjects , web2py , OpenACS , Catalyst , Mojolicious , Ruby on Rails , Laravel , Grails , Django , Zend Framework , Sails.js , Yii , [5] CakePHP , [6]и Symfony . [ необходима цитата ]

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

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

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

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

На основе выталкивания и вытягивания [ править ]

Большинство фреймворков MVC следуют архитектуре на основе push, также называемой «основанной на действиях». Эти платформы используют действия, которые выполняют необходимую обработку, а затем «проталкивают» данные на уровень представления для визуализации результатов. [7] Django , Ruby on Rails , Symfony , Spring MVC , Stripes , Sails.js , CodeIgniter [8] - хорошие примеры этой архитектуры. Альтернативой этому является архитектура на основе вытягивания, иногда также называемая «компонентной». Эти структуры начинаются с уровня представления, который затем может «извлекать» результаты из нескольких контроллеров по мере необходимости. В этой архитектуре несколько контроллеров могут быть задействованы в одном представлении.Поднимать, Tapestry , JBoss Seam , JavaServer Faces и Wicket являются примерами архитектур на основе pull. Play , Struts , RIFE и ZK поддерживают вызовы контроллеров приложений на основе push и pull. [ необходима цитата ]

Трехуровневая организация [ править ]

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

Рамочные приложения [ править ]

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

Фреймворки для веб-сайтов общего назначения [ править ]

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

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

На стороне сервера [ править ]

  • Apache Wicket
  • ASP.NET Core
  • CakePHP
  • Катализатор
  • CodeIgniter
  • CppCMS
  • Джанго
  • Колба
  • Jam.py
  • Yii
  • Laravel
  • Mojolicious
  • Рубин на рельсах
  • Sails.js
  • Symfony
  • Spring MVC
  • Wt (веб-инструментарий)
  • Zend Framework [20]

На стороне клиента [ править ]

Примеры включают Backbone.js , AngularJS , угловой , EmberJS , ReactJS и Vue.js . [21]

Dash - это платформа Python , R и Julia с открытым исходным кодом для создания аналитических веб- приложений . Тот же JavaScript (т.е. React) используется на стороне клиента, независимо от внутреннего языка.

Дискуссионные форумы, вики и веб-журналы [ править ]

  • WikiBase / WikiWikiWeb [ необходима ссылка ]

Особенности [ править ]

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

Система веб-шаблонов [ править ]

Кеширование [ править ]

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

Безопасность [ править ]

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

Доступ к базе данных, отображение и конфигурация [ править ]

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

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

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

Сопоставление 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 [ править ]

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

Из-за сложности программирования Ajax в JavaScript существует множество фреймворков Ajax, которые имеют дело исключительно с поддержкой Ajax. Некоторые фреймворки Ajax даже встроены как часть более крупных фреймворков. Например, библиотека jQuery JavaScript включена в Ruby on Rails. [ необходима цитата ]

С повышенным интересом к разработке полнофункциональных веб-приложений « Web 2.0 » сложность программирования непосредственно на Ajax и JavaScript стала настолько очевидной, что появилась технология компиляторов, позволяющая разработчикам кодировать на языках высокого уровня, таких как Java, Python и Рубин. Первым из этих компиляторов был Morfik, за которым последовал Google Web Toolkit с портами на Python и Ruby в форме Pyjs и RubyJS через некоторое время. Эти компиляторы и связанные с ними библиотеки наборов виджетов делают разработку мультимедийных приложений Ajax более похожей на разработку настольных приложений. [ необходима цитата ]

Веб-сервисы [ править ]

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

Интернет-ресурсы [ править ]

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

См. Также [ править ]

  • Сравнение веб-фреймворков
  • Богатое веб-приложение
  • Список полнофункциональных фреймворков веб-приложений
  • Список фреймворков веб-сервисов
  • Сервер приложений
  • Сравнение серверов приложений
  • Фреймворк приложения
  • Безопасность приложений
  • Соглашение важнее конфигурации
  • Не повторяйся (СУХОЙ)
  • Стек решений
  • Фреймворк для веб-приложений для нескольких телефонов

Ссылки [ править ]

  1. ^ Несколько (вики). «Фреймворк веб-приложений» . Докфорж . Архивировано из оригинала на 2015-07-23.
  2. ^ «Лучшие генераторы статических сайтов с открытым исходным кодом» . StaticGen .
  3. ^ «CGI: Общий интерфейс шлюза» . Архивировано из оригинала на 2009-04-09.
  4. ^ "CGI" . www.ibm.com . Проверено 7 мая 2021 .
  5. ^ "Yii PHP Framework" .
  6. ^ "CakePHP" .
  7. ^ Томсон, Крис (2003-10-29). «Разъяснение по MVC = Pull и MVC Push» . Проверено 29 июля 2007 .
  8. ^ «Каковы фундаментальные различия между Struts и JSF» . Struts.apache.org. 2011-02-14 . Проверено 14 июня 2013 .
  9. ^ Microsoft. «Трехуровневая раздача» . Проверено 19 сентября 2011 .
  10. ^ Оракул. "clustering_concepts_10en" (PDF) . Проверено 19 сентября 2011 .
  11. ^ Роберт Р. Перкоски. «Введение в веб-разработку» . Архивировано из оригинала на 2013-11-07.
  12. ^ IBM. «Использование Client Access Express в трехуровневой среде» . Проверено 19 сентября 2011 .
  13. ^ Оракул. «Понимание трехуровневой архитектуры» . Проверено 19 сентября 2011 .
  14. ^ Microsoft. «Прагматическая архитектура: наслоение» . Проверено 19 сентября 2011 .
  15. ^ Арокия. «Трехуровневая веб-архитектура» . Проверено 19 сентября 2011 .
  16. ^ «Лучшие практики контроллера ASP.NET MVC» . Архивировано из оригинала на 2011-10-11 . Проверено 19 сентября 2011 .
  17. ^ Джеймис Бак. «Тощий контролер, толстая модель» . Архивировано из оригинала на 2015-05-16.
  18. ^ «Начало работы с веб-фреймворками» . Проводной журнал . Проверено 2 апреля 2018 .
  19. ^ КЛИМУШИН, Мел. «Архитектура веб-приложений - на стороне клиента или на стороне сервера» . Атомный спин . Проверено 6 марта 2016 .
  20. ^ "Главная - Zend Framework" . framework.zend.com . Проверено 9 февраля 2020 .
  21. ^ «AngularJS против Backbone.js против Ember.js» . www.airpair.com . Проверено 4 июня 2016 .
  22. ^ a b Фаулер, Мартин. «блики: InversionOfControl» . martinfowler.com . Проверено 6 марта 2016 .
  23. ^ Сюэ, Цян. «Capital One Engineering - философии, которые сформировали успешные рамки» . www.capitalone.io . Проверено 6 марта 2016 .
  24. ^ a b c «Основы Active Record» . Рубин на рельсах . Проверено 20 марта 2021 года . Объектно-реляционное сопоставление, обычно называемое аббревиатурой ORM, представляет собой метод, который связывает богатые объекты приложения с таблицами в системе управления реляционными базами данных ... Active Record автоматически создает методы, позволяющие приложению читать и управлять данными, хранящимися в нем. свои таблицы.
  25. ^ «Операции с активной записью» . Рубин на рельсах . Проверено 20 марта 2021 года .
  26. ^ "Что такое AJAX" . www.dlsweb.rmit.edu.au . Проверено 7 мая 2021 .
  27. Перейти ↑ Maximilien, EM (19 декабря 2006 г.). «Веб-сервисы на Rails: использование Ruby и Rails для разработки веб-сервисов и гибридных приложений» . IEEE Xplore . Чикаго. DOI : 10.1109 / ICWS.2006.139 . ISBN 0-7695-2669-1.