stringtranslate.com

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

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

История

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

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

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

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

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

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

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

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

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

На основе push и на основе pull

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

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

В трехуровневой организации приложения структурированы вокруг трех физических уровней: клиента, приложения и базы данных. [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=physical», можно изменить на просто «/page/science/physical». Это облегчает людям запоминание, чтение и запись URL-адреса, а также предоставляет поисковым системам лучшую информацию о структурной структуре сайта. Подход с обходом графа также имеет тенденцию приводить к созданию дружественных URL-адресов. Более короткий URL-адрес, например «/page/science», как правило, существует по умолчанию, поскольку это просто более короткая форма более длинного перехода к «/page/science/physical». [ нужна цитата ]

АЯКС

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

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

Веб-сервисы

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

Веб-ресурсы

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

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

Рекомендации

  1. ^ Несколько (вики). «Среда веб-приложения». Докфорж . Архивировано из оригинала 23 июля 2015 г.
  2. ^ «Лучшие генераторы статических сайтов с открытым исходным кодом» . СтатикГен .
  3. ^ «CGI: Общий интерфейс шлюза» . Архивировано из оригинала 9 апреля 2009 г.
  4. ^ "Компьютерная графика". www.ibm.com . Проверено 7 мая 2021 г.
  5. ^ Томсон, Крис (29 октября 2003 г.). «Разъяснение по поводу MVC = Pull и MVC Push» . Проверено 29 июля 2007 г.
  6. ^ Майкрософт. «Трехуровневое распределение» . Проверено 19 сентября 2011 г.
  7. ^ Оракул. «clustering_concepts_10en» (PDF) . Проверено 19 сентября 2011 г.
  8. ^ Роберт Р. Перкоски. «Введение в веб-разработку». Архивировано из оригинала 07.11.2013.
  9. ^ IBM. «Использование Client Access Express в трехуровневой среде» . Проверено 19 сентября 2011 г.
  10. ^ Оракул. «Понимание трехуровневой архитектуры» . Проверено 19 сентября 2011 г.
  11. ^ Майкрософт. «Прагматическая архитектура: многослойность» . Проверено 19 сентября 2011 г.
  12. ^ Арокия. «Трёхуровневая веб-архитектура» . Проверено 19 сентября 2011 г.
  13. ^ «Лучшие практики контроллера ASP.NET MVC» . Архивировано из оригинала 11 октября 2011 г. Проверено 19 сентября 2011 г.
  14. ^ Джеймис Бак. «Тощий контролер, толстая модель». Архивировано из оригинала 16 мая 2015 г.
  15. ^ «Начало работы с веб-фреймворками» . Проводной журнал . Проверено 2 апреля 2018 г.
  16. ^ КЛИМУШИН, Мел (6 апреля 2015 г.). «Архитектура веб-приложений: клиентская и серверная стороны». Атомный спин . Проверено 06 марта 2016 г.
  17. ^ «AngularJS против Backbone.js против Ember.js» . www.airpair.com . Проверено 4 июня 2016 г.
  18. ^ аб Фаулер, Мартин. «блики: InversionOfControl». martinfowler.com . Проверено 06 марта 2016 г.
  19. ^ Сюэ, Цян. «Capital One Engineering - Философия, сформировавшая успешные структуры». www.capitalone.io . Проверено 06 марта 2016 г.
  20. ^ abc «Основы активной записи». Рубин на рельсах . Проверено 20 марта 2021 г. Реляционное сопоставление объектов, обычно называемое аббревиатурой ORM, представляет собой метод, который соединяет богатые объекты приложения с таблицами в системе управления реляционной базой данных... Active Record автоматически создает методы, позволяющие приложению читать и манипулировать данными, хранящимися в нем. свои таблицы.
  21. ^ «Активные записи транзакций». Рубин на рельсах . Проверено 20 марта 2021 г.
  22. ^ «Что такое AJAX» . www.dlsweb.rmit.edu.au . Проверено 7 мая 2021 г.
  23. ^ Максимилиан, EM (2006). «Урок 4: Веб-сервисы на Rails: использование Ruby и Rails для разработки веб-сервисов и коллажей». 2006 Международная конференция IEEE по веб-сервисам (ICWS'06) . стр. xliii. дои : 10.1109/ICWS.2006.139. ISBN 0-7695-2669-1.