Веб-фреймворк
( Веб-фреймворк 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] Альтернативой этому является архитектура на основе извлечения, которую иногда также называют «компонентной». Эти платформы начинаются со слоя представления, который затем может «извлекать» результаты из нескольких контроллеров по мере необходимости. В этой архитектуре несколько контроллеров могут быть задействованы в одном представлении.
Трехуровневая организация
[ редактировать ]В трехуровневой организации приложения структурированы вокруг трех физических уровней: клиента, приложения и базы данных . [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]
Дискуссионные форумы, вики и блоги
[ редактировать ]- WikiBase/ WikiWikiWeb [ нужна ссылка ]
Функции
[ редактировать ]Платформы обычно устанавливают поток управления программой и позволяют пользователю платформы «подключаться» к этому потоку, предоставляя различные события. [18] Этот шаблон проектирования « инверсия управления » считается определяющим принципом структуры и приносит пользу коду, обеспечивая общий поток для команды, который каждый может настроить одинаковым образом. [18] Например, некоторые популярные «микрофреймворки», такие как Sinatra от Ruby (который вдохновил 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]
Веб-ресурсы
[ редактировать ]Ряд новых Web 2.0 инфраструктур RESTful теперь предоставляют инфраструктуру ресурсно-ориентированной архитектуры (ROA) для создания коллекций ресурсов в своего рода семантической сети онтологии , основанной на концепциях Resource Description Framework (RDF). [ нужна ссылка ]
См. также
[ редактировать ]- Сравнение веб-фреймворков на основе JavaScript (клиентская сторона)
- Сравнение серверных веб-фреймворков
- Сервер приложений
- Платформа приложения
- Безопасность приложений
- Соглашение важнее конфигурации
- Не повторяйся (СУХОЙ)
- Список фреймворков веб-сервисов
- Богатое веб-приложение (устарело)
- Стек решений
- Платформа мобильной разработки
Ссылки
[ редактировать ]- ^ Несколько (вики). «Среда веб-приложения» . Докфорж . Архивировано из оригинала 23 июля 2015 г.
- ^ «Лучшие генераторы статических сайтов с открытым исходным кодом» . СтатикГен .
- ^ «CGI: Общий интерфейс шлюза» . Архивировано из оригинала 9 апреля 2009 г.
- ^ «Компьютерная графика» . www.ibm.com . Проверено 7 мая 2021 г.
- ^ Томсон, Крис (29 октября 2003 г.). «Разъяснение по поводу MVC = Pull и MVC Push» . Проверено 29 июля 2007 г.
- ^ Майкрософт. «Трёхуровневое распределение» . Проверено 19 сентября 2011 г.
- ^ Оракул. «clustering_concepts_10en» (PDF) . Проверено 19 сентября 2011 г.
- ^ Роберт Р. Перкоски. «Введение в веб-разработку» . Архивировано из оригинала 07.11.2013.
- ^ ИБМ. «Использование Client Access Express в трехуровневой среде» . Проверено 19 сентября 2011 г.
- ^ Оракул. «Понимание трехуровневой архитектуры» . Проверено 19 сентября 2011 г.
- ^ Майкрософт. «Прагматическая архитектура: многослойность» . Проверено 19 сентября 2011 г.
- ^ Арокия. «Трёхуровневая веб-архитектура» . Проверено 19 сентября 2011 г.
- ^ «Рекомендации по использованию контроллера ASP.NET MVC» . Архивировано из оригинала 11 октября 2011 г. Проверено 19 сентября 2011 г.
- ^ Джеймис Бак. «Тощий контролер, толстая модель» . Архивировано из оригинала 16 мая 2015 г.
- ^ «Начало работы с веб-фреймворками» . Проводной журнал . Проверено 2 апреля 2018 г.
- ^ КЛИМУШИН Мел (6 апреля 2015 г.). «Архитектура веб-приложений: клиентская и серверная стороны» . Атомный спин . Проверено 06 марта 2016 г.
- ^ «AngularJS против Backbone.js против Ember.js» . www.airpair.com . Проверено 4 июня 2016 г.
- ^ Перейти обратно: а б Фаулер, Мартин. «блики: InversionOfControl» . martinfowler.com . Проверено 06 марта 2016 г.
- ^ Сюэ, Цян. «Capital One Engineering – Философия, которая сформировала успешные структуры» . www.capitalone.io . Проверено 06 марта 2016 г.
- ^ Перейти обратно: а б с «Основы активной записи» . Рубин на рельсах . Проверено 20 марта 2021 г.
Реляционное сопоставление объектов, обычно называемое аббревиатурой ORM, представляет собой метод, который соединяет богатые объекты приложения с таблицами в системе управления реляционной базой данных... Active Record автоматически создает методы, позволяющие приложению читать и манипулировать данными, хранящимися внутри. свои таблицы.
- ^ «Активные записи транзакций» . Рубин на рельсах . Проверено 20 марта 2021 г.
- ^ «Что такое AJAX» . www.dlsweb.rmit.edu.au . Проверено 7 мая 2021 г.
- ^ Максимилиан, EM (2006). «Урок 4: Веб-сервисы на Rails: использование Ruby и Rails для разработки веб-сервисов и коллажей». 2006 Международная конференция IEEE по веб-сервисам (ICWS'06) . стр. xliii. дои : 10.1109/ICWS.2006.139 . ISBN 0-7695-2669-1 .