Ответ
Клиент-серверная архитектура организуется в различные многоуровневые (tier) модели в зависимости от разделения ответственности.
Ключевые модели:
-
Двухзвенная архитектура (2-Tier) Прямое взаимодействие клиента с сервером базы данных.
- Клиент (Presentation + Business Logic) ↔ Сервер БД (Data Tier)
- Пример: Толстый клиент (десктоп-приложение), подключающийся напрямую к PostgreSQL.
-
Трехзвенная архитектура (3-Tier) Наиболее распространенная модель с четким разделением слоев.
- Презентационный слой (Frontend): Отображает UI (браузер, мобильное приложение).
- Слой бизнес-логики (Backend): Обрабатывает запросы, выполняет правила приложения.
- Слой данных (Database): Хранит и управляет данными.
// Пример слоя бизнес-логики (Node.js/Express) app.post('/api/orders', authenticateUser, (req, res) => { // 1. Валидация данных (бизнес-правило) const { items } = req.body; if (!items || items.length === 0) { return res.status(400).json({ error: 'Корзина пуста' }); } // 2. Обращение к слою данных db.query('INSERT INTO orders ...', [items], (error, result) => { if (error) { /* обработка ошибки БД */ } // 3. Ответ презентационному слою res.status(201).json({ orderId: result.insertId }); }); });
-
N-звенная архитектура (N-Tier) Расширение 3-tier, где слой бизнес-логики или данных может быть разбит на несколько независимых сервисов (например, отдельный сервис кеширования, сервис аутентификации, микросервисы).
Смежные модели:
- Тонкий клиент (Thin Client): Минимальная логика на клиенте (веб-браузер, терминал).
- Толстый клиент (Fat Client): Большая часть логики выполняется на стороне клиента (десктоп-приложения, SPA с тяжелой клиентской логикой).
- Одноранговая сеть (Peer-to-Peer, P2P): Альтернативная архитектура, где узлы равноправны и могут быть как клиентами, так и серверами.