Архитектура клиент-сервер

В клиент-серверной архитектуре логика (или код), составляющая приложение, распределяется между двумя или более компонентами: клиентом, запрашивающим выполнение некой работы (например, веб-приложение Gmail, работающее в браузере), и одним или несколькими серверами, удовлетворяющими этот запрос (например, сервис отправки почты, работающий на компьютерах Google в облаке). В этом примере исходящие письма отправляются клиентом (веб-приложением, работающим в браузере) на сервер (компьютеры Gmail, которые пересылают их получателям).

Этот подход отличается от автономных приложений (например, десктопных), которые выполняют всю работу в одном месте. Например, текстовый процессор Microsoft Word может быть установлен на персональный компьютер и работать только на нем.

Какую проблему решает

Архитектура клиент-сервер решает серьезную проблему, с которой сталкиваются автономные приложения: регулярное обновление. Чтобы обновить автономное приложение, пользователям необходимо загрузить и установить последнюю версию. А теперь представьте, что для просмотра каталога товаров Amazon вам необходимо сначала загрузить его себе на компьютер!

Как именно решает проблему

Когда логика приложения реализована на удаленном сервере или в сервисе, операторы могут обновлять ее, не меняя логику на стороне клиента. Поэтому обновления можно производить гораздо чаще. Хранение данных на сервере позволяет различным клиентам видеть одни и те же данные и совместно их использовать. Рассмотрим разницу между онлайновым текстовым процессором и традиционным офлайновым, который работает на локальном компьютере. В первом случае ваши файлы находятся на стороне сервера и могут быть доступны другим пользователям, которые просто скачивают их с сервера. Во втором случае (когда Интернет не был доступен повсеместно) файлы приходилось копировать на съемные носители (дискеты!) и передавать каждому пользователю по отдельности.


Последнее изменение October 27, 2023: [ru] Localize client-server-architecture.md (b3fe985)