Объясните, что такое сервер? | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Python Developer. Professional
-3%
Разработчик на Spring Framework
-5%
iOS Developer. Professional
-8%
Golang Developer. Professional
-6%
Базы данных
-12%
Agile Project Manager
-5%
Android Developer. Professional
-11%
Microservice Architecture
-5%
C++ Developer. Professional
-5%
Highload Architect
-6%
JavaScript Developer. Basic
-8%
Kotlin Backend Developer C# Developer. Professional Team Lead Алгоритмы и структуры данных Разработчик программных роботов (RPA) на базе UiPath и PIX Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов Vue.js разработчик VOIP инженер NoSQL Супер-практикум по использованию и настройке GIT Symfony Framework iOS Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool"
Инфраструктура
DevOps практики и инструменты
-12%
Базы данных
-12%
Network engineer. Basic
-10%
Network engineer
-4%
Экcпресс-курс «ELK»
-10%
Инфраструктурная платформа на основе Kubernetes
-6%
Administrator Linux.Basic Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Разработчик IoT
-13%
Основы Windows Server Разработчик программных роботов (RPA) на базе UiPath и PIX Reverse-Engineering. Professional Внедрение и работа в DevSecOps Administrator Linux. Advanced Infrastructure as a code in Ansible Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Экспресс-курс «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Объясните, что такое сервер?

Java_Deep_1.08_site.png

Да, довольно провокационный вопрос. Ведь есть разработчики сервера, есть серверные приложения, есть курсы по серверной разработке. А сам предмет разработки это что?

Понятие слишком обширное и интуитивно понятное всем, кто с ним сталкивался. И всё-таки, если попробовать дать определение серверу, то должно получиться что-то такое:

«Сервер – это система программ, которая отвечает на запросы».

То есть, нет сервера без запросов и ответов. Клиенты посылают серверу запросы, сервер что-то в себе читает, вычисляет или меняет и возвращает клиентам ответы.

Может ли сервер посылать запросы клиенту? В общем случае, может. Нотификация пользователя о событиях на сервере неотъемлемая часть, например, любого игрового сервера. Пользователь должен своевременно узнать о том, что ему в голову пришло… копье противника. И отрисовать красиво это событие. Сервер должен сам уведомить клиента о событии, не дожидаясь запроса от клиента.

Теперь рассмотрим веб-сервер: что это такое?

Очевидно это сервер, определение которому мы уже дали выше. Но что значит приставка «веб»? К счастью для нас, это понятие уже не такое абстрактное, как сервер, и у него есть определение на Wikipedia.

«Веб-сервер – сервер, который обрабатывает запросы по протоколу HTTP».

Ответы, очевидно, тоже отправляет по этому же протоколу. Если вы пишите клиент-серверное приложение, в котором клиент это браузер, а сервер это… веб-сервер. То протокол общения между ними определён.

Может ли веб-сервер уведомить клиента о событии? Нет. Протокол не позволяет это сделать. Веб-сервер может только отвечать на запросы. Нет запросов, нет ответов.

Как же быть разработчику браузерных игр? Без уведомления клиента динамические игры невозможны. Обмануть протокол? Да, это можно сделать. Можно продолжать использовать HTTP, но «подписать» клиент на события на сервере. Названия подходов и технологий здесь: ajax, long polling или websockets. WebSockets, правда, уже не HTTP, но это предмет уже следующей заметки.

Есть вопрос? Напишите в комментариях!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться