Что такое SPA и MPA?

Сегодня мы поговорим о том, что такое SPA и какой от него толк. Сразу замечу, что говорить мы будем не о водных процедурах, а о том SPA, который Single Page Application (одно-страничное веб-приложение). Что это такое, чем оно отличается от MPA (Multi Page Application) и для чего все это нужно — читайте в этой заметке.

История веб-разработки началась с появлением веб-приложения, объединяющего нескольких статических страниц, связанных друг с другом ссылками. Но вскоре появился тег ‘form’, можно считать, с того самого времени зародилась эра веб-разработки.

Немного из истории развития веб-приложений

От статических страниц к MPA

Сегодня существует огромный спрос на сложные веб-приложения, которые день ото дня все больше вытесняют с рынка настольные программы. Хотя в последнее время приложения, работающие под браузером, постепенно начинают уступать свою популярность мобильным приложениям, на сегодняшний день существуют два основных паттерна разработки веб-приложений — SPA (Single Page Applications) и MPA (Multi Page Applications).

MPA — это традиционное веб-приложение. При таком подходе каждый раз, когда приложение запрашивает данные либо отправляет их на сервер, оно вынуждено получать новую страницу в полном объеме, а затем визуализировать ее в браузере.

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

Генерация сложных страниц на сервере, передача их клиенту через интернет и визуализация в браузере занимают продолжительное время и потому сокращает удобство использования ресурса, увеличивая время ожидания.

С появлением AJAX приложения стали работать быстрее

В начала 2000-х годов MPA был усовершенствован с появлением AJAX, который позволяет обновлять только часть страницы, а не всю страницу целиком. С одной стороны, это позволило улучшить производительность, с другой же — усложнило веб-страницу.

И вот, на рынке появился SPA

Спустя 10 лет возник паттерн SPA. На самом деле, SPA — это эволюция шаблона MPA + AJAX. При таком подходе только каркас веб-страницы строится на сервере, все остальное генерируется средствами JavaScript.

SPA запрашивает разметку и данные раздельно, и визуализирует результаты непосредственно в браузере. Это стало возможным благодаря новым front-end — фреймворкам, реализующим шаблон MVVM, таким как AngularJS, DST Platform и KnockoutJS.

SPA: достоинства и недостатки

Итак, давайте посмотрим, какие достоинства и недостатки имеет SPA по сравнению с MPA.

Достоинства SPA по отношению к MPA:

Более быстрая загрузка страниц;

Улучшенное восприятие пользовательского интерфейса, поскольку загрузка данных с сервера происходит в фоновом режиме;

Нет необходимости писать код на сервере для визуализации страницы;

Разделение на Front-end и Back-end — разработку;

Упрощенная разработка под мобильные приложения; вы можете повторно использовать один и тот же серверный код для веб-приложения и мобильное приложение;

Тем не менее, у этой чудесной технологии есть еще и ряд недостатков.

Недостатки SPA по отношению к MPA:

Тяжелые клиентские фреймворки, которые нужно загружать на каждый клиент;

Веб-формы не компилируются, а потому их сложнее отлаживать и они содержат больше уязвимостей, которыми могут воспользоваться злоумышленники;

SEO (Search Engine Optimization) — SPA усложняет оптимизацию сайта под поисковые движки. Поскольку большая часть веб-страницы строится на стороне клиента, боты поисковых систем видят страницу совершенно иначе, чем пользователь;

А что, если создать гибридное приложение?

Итак, почему бы нам не использовать какой-нибудь гибридный вариант? Было бы здорова разрабатывать на MPA (как на более безопасном шаблоне), где некоторые страницы были бы реализованы как SPA, не правда ли?

Такой вариант возможен, но нужно четко осознавать, насколько правильно будет использовать его для конкретного приложения. Иначе вы рискуете создать приложение, которое будет совмещать недостатки обоих шаблонов:

Приложение может получиться медленным, ввиду того, что часть страниц будет формироваться на сервере, а для реализации части SPA понадобится установка клиентских фреймворков на клиентскую машину;

Более сложная разработка — вам придется использовать два фреймворка — MVVM для клиента и MVC для сервера;

Front-end и Back-end будут сильно связаны;

Вы не сможете использовать тот же самый backend для мобильных приложений.

Подведем итоги

Итак, какой шаблон использовать и когда? Я бы рекомендовал не смешивать SPA и MPA для разработки конкретного приложения. Каждый из этих паттернов хорош для своей области применения, но их совмещение не особо выгодно.

Рекомендую изучить уроки по Asp.Net5, в которых вы научитесь создавать приложения под SPA и MPA на новейшем бесплатном IDE Visual Studio.

Что такое SPA и MPA?
Получить консультацию у специалистов DST
Напишите нам прямо сейчас, наши специалисты расскажут об услугах и ответят на все ваши вопросы.
Комментарии
RSS
14:41
+5
Большое спасибо за подробную статью о SPA и MPA и в целом развитии веб приложений, это было очень интересно и познавательно.
04:10
+3
о pwa.
pwa это не гибрид чего то с чемто. pwa это набор букв сотрясающих воздух, потому что за ними не стоит ничего — ни одной технологии.
pwa может стать совершенно любой сайт с прицепленным к нему файлом манифеста и воркером, что по умолчанию должно быть и так у любого нормального проекта.
нет ничего что может делать якобы pwa, чего не может делать обычный типичный проект.
16:01
+2
SPA и PWA — это веб-сайты, которые постепенно смещают со своих позиций классические MPA. Так происходит из-за того, что они более простые в разработке, быстрее работают и нравятся пользователям. Однако у них есть слабое место — SEO-оптимизация. Пока еще не все браузеры могут с ними нормально работать, поэтому, чтобы сделать такие приложения дружественными для сео, нужно прибегать к ряду ухищрений. MPA-сайты в этом плане более простые и надежные.
16:03
+1
Хотелось бы по подробней узнать про преимущества и недостатки одностраничных (spa) и многостраничных (pwa) веб-приложений
Существует три основных подхода к разработке веб-приложений: одностраничные (SPA), многостраничные (MPA) и прогрессивные (PWA). Они выделяются среди других подходов простотой разработки, удобством для пользователей и широкими возможностями для развития бизнеса.

Рассказываем, чем отличаются компоненты MPA, SPA и PWA, какие у них преимущества и недостатки, что из них выбрать и для каких задач.
Одностраничные приложения

SPA или Single Page Application — это одностраничное веб-приложение, которое загружается на одну HTML-страницу. Благодаря динамическому обновлению с помощью JavaScript, во время использования не нужно перезагружать или подгружать дополнительные страницы. На практике это означает, что пользователь видит в браузере весь основной контент, а при прокрутке или переходах на другие страницы, вместо полной перезагрузки нужные элементы просто подгружаются.

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

Такого эффекта удается добиться с помощью продвинутых фреймворков JavaScript: Angular, React, Ember, Meteor, Knockout.

Примеры динамических приложений: Gmail, Google Maps, Facebok, GitHub, Meduza.
Преимущества

— Высокая скорость — все ресурсы загружаются за одну сессию, а во время действий на странице данные просто меняются, что очень экономит время;
— гибкость и отзывчивость пользовательского интерфейса — за счет того, что веб-страница всего одна, проще построить насыщенный интерфейс, хранить сведения о сеансе, управлять состояниями представлений и анимацией;
— упрощенная разработка — код можно начинать писать с файла file://URL, не используя сервер, не нужен отдельный код для рендера страницы на стороне сервера;
— кэширование данных — приложение отправляет всего один запрос, собирает данные, а после этого может функционировать в offline-режиме.

Недостатки

— Seo оптимизация требует решений в виде серверного рендеринга — из-за того, что контент загружается при помощи технологии AJAX, которая подразумевает динамическое изменение содержания станицы, а для оптимизации важна устойчивость;
— нагрузка на браузер — из-за того, что клиентские фреймворки тяжелые, они довольно долго загружаются;
— необходима поддержка JavaScript — без JS нельзя полноценно пользоваться полным функционалом приложения;
— утечка памяти в Java Script — из-за плохой защиты, SPA больше подвержена действиям злоумышленников и утечке памяти.

Многостраничные приложения

MPA или Multi Page Application — это многостраничные приложения, которые работают по традиционной схеме. Это означает, что при каждом незначительном изменении данных или загрузке новой информации страница обновляется. Такие приложения тяжелее, чем одностраничные, поэтому их использование целесообразно только в тех случаях, когда нужно отобразить большое количество контента.
Преимущества

— Простая SEO оптимизация — можно оптимизировать каждую из страниц приложения под нужные ключевые запросы;
— привычность для пользователей — за счет простого интерфейса и классической навигации.

Недостатки

— Тесная связь между бекендом и фронтендом, поэтому их не получается развивать параллельно; сложная разработка — требуют использования фреймворков как на стороне клиента, так и на стороне сервера, что увеличивает сроки и бюджет разработки.
— сложная разработка — требуют использования фреймворков как на стороне клиента, так и на стороне сервера, что увеличивает сроки и бюджет разработки.

SPA и MPA. Что выбрать?

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

Целесообразен, если:

— есть необходимость в многофункциональном, насыщенном пользовательском интерфейсе;
— есть необходимость в интерфейсе API — использовании готовых блоков для построения приложения.

Выбор MPA

Целесообразен, если:

— приложения используются только для чтения информации;
— есть необходимость в использовании приложения в браузерах без поддержки JavaScript.

Зачем нужны PWA

Прогрессивные приложения или Progressive Web Application взаимодействуют с пользователем, как приложение. Они могут устанавливаться на главный экран смартфона, отправлять push-уведомления и работать в офлайн-режиме.

Пример: Google Docs.
Преимущества

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

Недостатки

Не все браузеры поддерживают основные функции таких приложений (например, Firefox и Edge).
Вам может быть интересно
В мире есть много способов программирования. Но один из самых популярных и эффективных — это объектно-ориентированная методология или ООП. Она отличается от других подходов своей уникальной стру...
Название PHP расшифровывается как гипертекстовый препроцессор и обозначает серве...
Прежде чем мы узнаем для чего и как придумали объе...
Что такое программное обеспечение для разработки п...
В этой статье от разработчиков компании DST Global...
В этой статье разработчики компании DST Global опи...
В программировании существует такое понятие, как «...
REST API (Representational State Transfer Applicat...
Frontend- и backend-разработка тесно связаны между...
После перехода в мир IT и активной работы там мне ...
Значение интерфейсов прикладного программирования(...

Новые комментарии

Если такие вопросы задаются при собеседовании человека с >3 лет реального опы...
Создаётся впечатление, что вопросы типа «QA vs QC» и «верификация vs валидация» ...
Есть общеизвестные лучшие практики для создания эффективных кластеров Kubernetes...

Заявка на услуги DST

Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.

Адрес

Ижевск, ул. Воткинское шоссе, д. 170 Е, Технопарк Нобель, офис 1117

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон