Когда вы открываете профиль, магазин или страницу курса, браузер обычно не хранит всю нужную информацию сам.
Он обращается к другим частям приложения и просит их выполнить работу.
Упрощённо большинство веб-приложений можно представить как три части:
Клиент → Сервер → База данных
А полученный результат проходит путь обратно:
База данных → Сервер → Клиент
Клиент
Клиент — программа, с которой непосредственно взаимодействует пользователь.
Например:
- браузер;
- мобильное приложение;
- десктопное приложение.
Когда вы нажимаете кнопку «Открыть профиль», браузер может отправить серверу запрос:
«Покажи данные моего профиля».
Клиент отвечает прежде всего за то, что видит пользователь и какие действия он отправляет системе.
Сервер
Сервер получает запрос от клиента и решает, что с ним делать.
Он может:
- проверить, кто отправил запрос;
- проверить, разрешено ли это действие;
- обработать полученные данные;
- обратиться к базе данных;
- сформировать ответ.
Например, сервер может проверить, действительно ли пользователь вошёл в аккаунт, прежде чем отдавать ему сохранённый профиль.
Сервер часто содержит основную логику приложения — правила того, что разрешено и как должна работать система.
База данных
База данных используется для информации, которую необходимо сохранить.
Например:
1Пользователь2Имя: Alex3Пройдено уроков: 124Опыт: 450 XPДаже если пользователь закроет браузер и вернётся завтра, эти данные должны остаться.
В базе могут храниться:
- аккаунты;
- настройки;
- товары;
- уроки;
- прогресс обучения;
- комментарии;
- заказы.
Что такое запрос и ответ
Клиент и сервер обмениваются сообщениями.
Клиент отправляет запрос:
1Дай мне профиль пользователяСервер выполняет необходимые действия и возвращает ответ:
1Имя: Alex2Уровень: 53XP: 450После этого клиент отображает полученную информацию на экране.
Как открывается сохранённый профиль
Представим, что пользователь нажал кнопку «Мой профиль».
Происходит примерно следующее:
11. Браузер отправляет запрос2 ↓32. Сервер получает и проверяет его4 ↓53. Сервер запрашивает профиль в базе данных6 ↓74. База данных возвращает найденную запись8 ↓95. Сервер формирует ответ10 ↓116. Браузер показывает профильВажно: браузер обычно не подключается напрямую к рабочей базе данных.
Если позволить каждому клиенту самостоятельно изменять базу, пользователь потенциально смог бы попытаться изменить чужие данные или обойти правила приложения.
Именно сервер контролирует, какие операции разрешены.
Связь с предыдущим уроком
В первом уроке мы использовали модель:
Данные → Инструкции → Результат
Теперь мы можем увидеть её внутри веб-приложения:
Запрос пользователя → обработка на сервере → данные из базы → ответ пользователю
Позже мы увидим, что похожий принцип существует и в блокчейне, хотя устройство системы там будет другим.
Задание
Пользователь открывает сохранённый профиль.
Расположите действия клиента, сервера и базы данных в правильном порядке — от первого запроса до ответа браузеру.
Один из доступных блоков описывает действие, которого в нормальной архитектуре происходить не должно.