Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГАК-2026.docx
Скачиваний:
1
Добавлен:
16.06.2026
Размер:
2.66 Mб
Скачать

1.2. Принцип работы

  1. Клиент инициирует соединение и отправляет запрос серверу.

  2. Сервер принимает запрос, обрабатывает его (возможно, обращаясь к другим серверам или базам данных).

  3. Сервер отправляет ответ клиенту.

  4. Клиент получает ответ и отображает его пользователю или обрабатывает дальше.

1.3. Преимущества клиент-серверной архитектуры

  • Централизованное управление — данные и бизнес-логика хранятся на сервере, что упрощает обновление и обслуживание.

  • Безопасность — можно контролировать доступ к данным на сервере.

  • Масштабируемость — можно увеличивать мощность сервера (вертикальное масштабирование) или добавлять новые серверы (горизонтальное).

  • Разделение ответственности — клиент отвечает за интерфейс, сервер — за данные и логику.

1.4. Недостатки

  • Единая точка отказа — если сервер выходит из строя, клиенты не могут работать.

  • Нагрузка на сервер — при большом количестве клиентов сервер может не справиться (требуется масштабирование).

  • Сетевые задержки — клиент зависит от качества сети.

1.5. Примеры

  • Веб-приложения: браузер (клиент) — веб-сервер (сервер) — СУБД (тоже сервер).

  • Электронная почта: почтовый клиент (Outlook) — почтовый сервер (Exchange).

  • Файловые серверы: клиент запрашивает файл с файлового сервера.

Часть 2. REST (Representational State Transfer)

2.1. Определение

REST — это архитектурный стиль для проектирования распределённых систем, в первую очередь веб-сервисов (API). Он был предложен Роем Филдингом в его докторской диссертации (2000 год).

REST определяет набор ограничений (принципов), которым должна следовать система, чтобы считаться RESTful.

2.2. Основные принципы REST

1. Клиент-сервер (Client-Server)

Разделение клиента и сервера. Клиент не заботится о хранении данных, сервер — о пользовательском интерфейсе. Это улучшает переносимость и масштабируемость.

2. Отсутствие состояния (Stateless)

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

Пример: При каждом запросе клиент отправляет токен аутентификации (например, JWT), а сервер проверяет его, не запоминая, что клиент "залогинен".

3. Кэширование (Cacheable)

Ответы сервера должны явно указывать, можно ли их кэшировать и на какой срок. Это позволяет клиентам и промежуточным прокси сохранять копии ответов, снижая нагрузку на сервер.

4. Единообразие интерфейса (Uniform Interface)

Фундаментальный принцип, который упрощает архитектуру. Включает несколько подпринципов:

  • Идентификация ресурсов — каждый ресурс (объект) идентифицируется с помощью URI (например, /users/123).

  • Манипуляция ресурсами через представления — сервер возвращает представление ресурса (обычно JSON или XML), а клиент отправляет представление для изменения.

  • Самоописывающие сообщения — сообщения содержат всю информацию о том, как их обрабатывать (MIME-типы, заголовки).

  • HATEOAS (Hypermedia as the Engine of Application State) — приложение должно управляться гипермедиа (ссылками). Клиент переходит по ссылкам, которые предоставляет сервер. На практике HATEOAS часто не реализуют.