В этом уроке мы рассмотрим отношения между клиентами и серверами. Архитектура клиент/сервер предлагает неограниченное количество возможностей связи, и именно это делает возможным Интернет. Мы рассмотрим базовое понимание модели клиент/сервер, которая позже будет использоваться для вызова API. В задачи этого урока не входит рассмотрение исчерпывающего материала по архитектуре клиент/сервер — вместо этого мы сосредоточимся на основных принципах взаимодействия клиент/сервер.
Вы сможете:
Модель клиент-сервер коммуникационных технологий представляет собой набор распределенной архитектуры приложений и сетевых операций, которые управляют рабочей нагрузкой между поставщиками услуги, называемыми серверами , и инициатором запроса услуги, называемым клиентами .
Хотя модель клиент-сервер может использоваться программами на отдельном компьютере, мы сосредоточимся на аспекте, касающемся сетевых сред. В этом случае клиент устанавливает соединение с сервером через локальную сеть (LAN), глобальную сеть (WAN), например Интернет. Вы когда-нибудь играли в Xbox Live или пользовались PlayStation Network? Ваш Xbox One является клиентом, и когда он входит в сеть, он связывается с серверами Xbox Live для получения игровых ресурсов, таких как обновления, видео и демо-версии игр.
Типичную многоуровневую архитектуру клиент-сервер, которую большинство из нас использует в повседневной жизни, можно показать ниже.
Клиент — это компьютерное аппаратное устройство или программное обеспечение, которое запрашивает услугу, предоставляемую сервером. Сервер часто (но не всегда) располагается на отдельном физическом компьютере.
Сервер — это физический компьютер, предназначенный для запуска служб для удовлетворения потребностей клиентов. В зависимости от запущенной службы это может быть файловый сервер, сервер базы данных, домашний медиа-сервер, сервер печати, сервер электронной почты или веб-сервер .
Идея взаимодействия клиента и сервера по сети — это то, что делает возможным просмотр веб-сайтов и взаимодействие с веб-приложениями (такими как Gmail, Facebook, LinkedIn). Эта модель представляет собой способ описания взаимных отношений между клиентом и сервером в веб-приложении и управляет передачей информации между компьютерами.
Давайте посмотрим, как выглядит базовое веб-приложение, которое принимает запрос от веб-клиента и обрабатывает его соответствующим образом.
Веб-приложение (Веб-приложение) — это прикладная программа, которая хранится на удаленном сервере и доставляется через Интернет через интерфейс браузера. Веб-сервисы по определению являются веб-приложениями, и многие, хотя и не все, веб-сайты содержат веб-приложения. Любой компонент веб-сайта, выполняющий какую-либо функцию для пользователя, квалифицируется как веб-приложение. Поисковая система Google представляет собой веб-приложение, однако ее основная концепция мало чем отличается от телефонного справочника, позволяющего искать имена или номера.
Большинство веб-приложений фактически используют интерфейс браузера для взаимодействия, т. е. конечные пользователи запрашивают доступ и информацию/услуги от этих приложений через современный интерфейс веб-браузера. Существуют сотни способов создания и настройки веб-приложения, но большинство из них имеют одну и ту же базовую структуру: веб-клиент, веб-сервер и база данных.
Клиент — это то, с чем взаимодействует конечный пользователь. Код «клиентской стороны» фактически отвечает за большую часть того, что на самом деле видит пользователь. За запрос некоторой информации в виде веб-страницы клиентская сторона может нести ответственность за: включает в себя:
Большинство этих задач выполняются с помощью технологий, подобных HTML/CSS/JavaScript, для структурирования информации, стиля страницы и предоставления интерактивных объектов для навигации и фокусировки.
Веб-сервер в веб-приложении — это то, что слушает запросы, поступающие от клиентов. Когда вы настраиваете сервер HTTP (протокол передачи гипертекста — язык Интернета), мы настраиваем его на прослушивание номера порта. Номер порта всегда связан с IP-адресом компьютера. Вы можете думать о портах как об отдельных каналах на компьютере, которые мы можем использовать для выполнения различных задач: один порт может просматривать сайт www.facebook.com, а другой — получать вашу электронную почту. Это возможно, поскольку каждое из приложений (веб-браузер и почтовый клиент) используют разные номера портов.
После того как вы настроили HTTP-сервер для прослушивания определенного порта, сервер ожидает клиентских запросов, поступающих на этот конкретный порт. После аутентификации клиента сервер выполняет любые действия, указанные в запросе, и отправляет любые запрошенные данные через ответ HTTP.
Базы данных являются основой веб-архитектуры. База данных SQL/NoSQL или аналогичный тип базы данных — это место для хранения информации, позволяющее легко получать к ней доступ, управлять ею и обновлять ее. Например, если вы создаете сайт социальной сети, вы можете использовать базу данных для хранения информации о ваших пользователях, сообщениях, комментариях и т. д. Когда посетитель запрашивает страницу, данные, вставленные на страницу, поступают из базы данных сайта. позволяя пользователям в режиме реального времени взаимодействовать с такими сайтами, как Facebook, или такими приложениями, как Gmail.
На примере изображения выше мы можем увидеть вышеупомянутую настройку в действии. Браузер отправляет запрос на веб-сервер, вызывая его домен, например www.google.com. В зависимости от того, кто является запрашивающим, сервер собирает необходимую информацию для базы данных SQL. Эта информация упаковывается в HTML-код и отправляется обратно клиенту. Веб-браузер считывает информацию о структурировании и стиле, встроенную в HTML, и соответствующим образом отображает страницу пользователю.
В Интернете можно найти множество подробностей об архитектуре клиент/сервер и о том, как они себя проявляют. Мы немного больше сосредоточимся на идеях, изложенных в этом разделе, настроив клиент и выполняя запросы на Python. Эти навыки помогут нам запрашивать данные с серверов для наших аналитических экспериментов. Вот несколько дополнительных ресурсов для вас, если вы хотите глубже изучить модель клиент-сервер и то, как она настроена для различных архитектур.
В этом уроке мы рассмотрели основы модели клиент-сервер и сосредоточились на том, как эта модель реализуется для веб-приложений. Мы рассмотрели роль веб-клиентов, веб-серверов и баз данных, в которых хранится информация о клиентах. В следующих уроках мы увидим, как реализовать эти идеи с помощью Python!