Что-то, с которым я боролся, когда я начал разработку веб-сайтов, и я также вижу много новых DEV борьбы с борьбой: какой «сервер» на самом деле способен?
Я уже отдал его с прикрытием фото; Но почему бы не смотреть на него сверху вниз, а не слева направо 😅 (и я буду говорить о каждой части более подробно)
Сервер — это: программное обеспечение, которое начинается по запросу, работает с использованием информации в запросе и данных из более длительного хранения без дальнейшего ввода, завершение выполнения путем обновления сохраненных данных и возврата ответа.
Эта модель ейдирует три основных заблуждения:
- Нет обработки или исполнения после ответ
- Нет обработки или исполнения до запрос
- Нет прерывания или взаимодействия пользователя Во время процесс
Выше три вещи могут Только быть достигнутым с использованием аспекта «хранения» на диаграмме для координации что-то еще достичь этого. Чем лучше мы понимаем, что что-то еще это полностью отдельный процесс , тем лучше подготовлено, чтобы справиться с опасностями в этих моделях. Только Способ сделать любой из вышеперечисленных трех вещей с «хранением».
Что такое «хранение»?
Я использую это как подстановку для любого ненулительного хранилища данных.
Чаще всего реляционная база данных. Но это также может быть база данных документов, магазин Key-value, даже в магазине в памяти, как Redis * или просто файлы на локальном жестком диске. В больших или нуждающихся приложениях более одного можно использовать, но мы можем психически смешивать их все вместе в «хранилище».
Это текущее состояние становится в верхней части, и обновления выходят на другую сторону (если что-то нужно обновить).
* Магазины памяти обычно считаются «волатильными» по сравнению с жесткими дисками, но до длины среднего запроса-ответа, магазин, похожий на Redis, сравнительно сохраняет данные для EONS.
Запрос
Первая большая половина «LifeCycle запроса-ответного отклика». Ничего, я повторяю Ничего , происходит по адресу http без запроса, чтобы начать его.
Запрос может иметь все виды информации, но основные моменты:
- Глагол — ака
Получить
,Пост
,Поставить
,Патч
,Удалить
, так далее. каждый имеет значение; Пожалуйста, используйте их соответствующим образом - Хозяин — как
www.buymeacoffee.com.
- Путь — сларистые биты, как
/Kallmanation
; Но также содержит необработанные параметры запроса, такие как? Via = Kallmanation
- Различные заголовки — всевозможные метаданные о запросе, в основном выглядят по мере необходимости; Но стоит упомянуть здесь:
- Печенье — то, что мы всегда должны «принимать»; Просто куча маленьких кусочков текста Запросница отслеживает для сервера
- Тело — не по всем запросам; Обычно JSON, но может быть любой текст для сервера для использования
Без данных в хранилище или где-то в этом запросе (в основном в cookie) сервер не может знать об этом и по его мнению, что информация не существует и никогда не существовал.
Ответ
Конец «LifeCycle запроса-ответного отклика». Действительно, Конец , Финито. Ничего не происходит по адресу HTTP после того, как ответ был возвращен.
Как запросы, ответы имеют все виды информации, но большие части:
- Статус — 200 Для ОК 401 Для несанкционированного, 418 Я чайник и т. Д.; Пожалуйста, используйте соответствующий статус
- Заголовки — снова все виды метаданных, посмотрим по мере необходимости
- Cookie — специфический заголовок может сообщить запросу отправить данное cookie с любыми будущими запросами (они также могут быть установлены JavaScript)
- Тело — HTML/CSS/JS/JSON/XML/и т. Д./etc. все, что мы хотим отправить обратно
Чтобы быть немного более педантичным и техническим: сервер приложений не совсем имеет всю базу данных, заполненную в нем по каждому запросу. Вместо этого некоторая предварительная обработка должна использовать информацию о запросе для сформулировании запроса к хранению, чтобы загрузить только необходимые данные.
Этот «запрос» может быть обычным старым запросом SQL. Но это может быть просто найти правильный файл на диске по имени и пути. Или это может быть запрос на отдельный веб-сервис управления хранением (например, в базе данных AS-A-A-Service). После того, как данные будут выявлены, остальная часть сервера продолжается, так как она сделала в более простой умственной модели.
Получить еще более техническую; Я никогда не видел серверное приложение, написанное в таких различных шагах извлечения всех данных, данные процесса, обновлять данные, возвратный ответ. Получение, обработка и обновление обычно затаивается все вместе (иногда справедливо, частей неправильно). Но, по-прежнему, с внешней точки зрения, запросчик не мог воспринимать реальную разницу между этой технической техникой и более контролируемой умственной моделью, построенной выше. Поэтому я считаю, что это очень полезная модель сервера приложений.
Оригинал: «https://dev.to/kallmanation/my-mental-model-of-a-server-4cop»