Клиент-сервер
Клиент-сервер — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами.
Это один из архитектурных шаблонов программного обеспечения, а такде доминирующая концепция в создании распределенных сетевых приложений и предполагает взаимодействие и обмен данными между ними. Она предполагает следующие основные компоненты:
- набор серверов, которые предоставляют информацию или другие услуги программам, обращающимся к ним;
- набор клиентов, которые используют сервисы, предоставляемые серверами;
- сеть, которая обеспечивает взаимодействие между клиентами и серверами.
Серверы являются независимыми друг от друга. Клиенты также функционируют параллельно и независимо друг от друга. Нет жесткой привязки клиентов к серверам. Более чем типичной является ситуация, когда один сервер одновременно обрабатывает запросы от разных клиентов; с другой стороны, клиент может обращаться то к одному серверу, то к другому. Клиенты должны знать о доступных серверах, но могут не иметь никакого представления о существовании других клиентов.
Клиент и сервер[править]
Очень важно ясно представлять, кто или что рассматривается как «клиент». Можно говорить о клиентском компьютере, с которого происходит обращение к другим компьютерам. Можно говорить о клиентском и серверном программном обеспечении. Наконец, можно говорить о людях, которые желают с помощью соответствующего программного и аппаратного обеспечения получить доступ к той или иной информации.
Общепринятым является положение, что клиенты и серверы — это прежде всего программные модули. Чаще всего они находятся на разных компьютерах, но бывают ситуации, когда обе программы — и клиентская, и серверная, физически размещаются на одной машине; в такой ситуации сервер часто называется локальным.
Обязанности и взаимодействие[править]
Модель клиент-серверного взаимодействия определяется прежде всего распределением обязанностей между клиентом и сервером. Логично можно отделить три уровня операций:
- уровень представления данных, который по сути представляет собой интерфейс пользователя и отвечает за представление данных пользователю и ввод от него управляющих команд;
- прикладной уровень, который реализует основную логику приложения и на котором осуществляется необходимая обработка информации;
- уровень управления данными, который обеспечивает хранение данных и доступ к ним.
Двухуровневая клиент-серверная архитектура предполагает взаимодействие двух программных модулей — клиентского и серверного. В зависимости от того, как между ними распределяются приведенные выше функции, различают:
- модель тонкого клиента, в рамках которой вся логика приложения и управления данными сосредоточена на сервере. Клиентская программа обеспечивает только функции уровня представления;
- модель толстого клиента, в которой сервер только управляет данными, а обработка информации и интерфейс пользователя сосредоточены на стороне клиента. Толстыми клиентами часто также называют устройства с ограниченной мощностью: карманные компьютеры, мобильные телефоны и др.
Примеры[править]
Типичным примером клиент-серверного взаимодействия является WWW. Существует огромное количество вебсерверов, на которых размещается та или иная информация. В простейшем случае эта информация представляет собой набор вебстраниц, которые могут храниться на сервере в виде файлов, размеченных с помощью языка разметки HTML. Но ситуация, как правило, является более сложной; значительная часть вебресурсов на современном этапе является динамическими, то есть они не существуют в заранее подготовленном виде, а создаются непосредственно в процессе обработки запроса от пользователя.
Для того, чтобы человек, работающий в Интернете, мог просмотреть ту или иную страницу, на её компьютере должно быть установлено соответствующее программное обеспечение. Программы для просмотра вебстраниц называются браузерами (веб-обозревателями). Наиболее распространенные браузеры: Google Chrome, Internet Explorer, Firefox, Safari и Opera.
Но, кроме браузеров, к серверам могут обращаться и другие клиенты, а именно — автономные программы. Они могут предполагать взаимодействие с человеком, а могут работать в полностью автоматическом режиме. Типичным классом таких программ являются роботы, предназначенные для автоматического просмотра веб-ресурсов. В частности, роботы являются важным элементом поисковых систем и используются ими для просмотра страниц и сбора информации о них.
Для запроса к вебсерверу клиентская программа должна задать расположение компьютера, на котором размещается серверная программа, название нужного документа и, возможно, другие данные, которые специфицируют запрос. Сеть обеспечивает нахождение сервера и передачу ему клиентского запроса. Серверные программы обрабатывают этот запрос, ответ пересылается по сети клиенту.
Трехуровневая архитектура[править]
Трехуровневая клиент-серверная архитектура, которая начала развиваться с середины 90-х годов, предполагает отделение прикладного уровня от управления данными. Отделяется отдельный программный уровень, на котором сосредотачивается прикладная логика приложения. Программы промежуточного уровня могут функционировать под управлением специальных серверов приложений, но запуск таких программ может осуществляться и под управлением обычного вебсервера. Наконец, управление данными осуществляется сервером данных.
Для работы с системой пользователь использует стандартное программное обеспечение — обычный браузер. Это избавляет его от необходимости загружать и инсталлировать специальные программы (хотя иногда такая необходимость все-таки возникает). Но пользователю следует предоставить в распоряжение интерфейс, который позволил бы ему взаимодействовать с системой и формировать запросы к ней. Формы, определяющие этот интерфейс, размещаются на веб-страницах и загружаются вместе с ними.
Веб-обозреватель формирует запрос и пересылает его на сервер, который осуществляет обработку. При необходимости сервер вызывает серверные программные модули, которые обеспечивают обработку запроса и в случае необходимости обращаются к серверу данных. Сервер данных осуществляет операции с данными, хранящимися в системе и составляющими её информационную основу. В частности, он может осуществить выборку из информационной базы в соответствии с запросом и передать её модулю промежуточного уровня для дальнейшей обработки. Данные, с которыми работает сервер данных, чаще всего организованы как реляционная база данных.
Чаще всего вебсервер и серверные модули промежуточного уровня размещаются на одном компьютере, хотя и представляют собой отдельные и логически независимые программные модули.
Примеры[править]
На современном этапе для программирования модулей промежуточного уровня используется язык серверных сценариев PHP, а для управления данными — система управления базами данных MySQL. Таким образом, связку PHP-MySQL следует рассматривать как стандартный инструмент для создания сравнительно простых интерактивных веб-сайтов и систем электронной коммерции; около 90 % коммерческих систем сегодня[когда ?] создается именно на этой основе. Вместе с тем как средства управления данными, так и middleware-средства могут быть самыми разнообразными. Так, для создания серверных приложений, кроме PHP, широко применяются Java, Perl, Python. Вообще, технологии создания распределенных, в частности веб-приложений, стремительно развиваются. Следует упомянуть о технологиях EJB (Enterprise Java Beans), CORBA, а также о .NET — сравнительно новой инициативе компании Microsoft. Для хранения данных и их передачи часто используется так называемая расширяемая язык разметки XML (Extensible Markup Language).
Литература[править]
- Коржов Валерий Многоуровневые системы клиент-сервер рус.. Издательство Открытые системы (1997-06-17). Архивировано из первоисточника 28 августа 2011. Проверено 31 января 2010.
- Арбузов С. Г. Банківська енциклопедія / С. Г. Арбузов, Ю. В. Колобов, В. І. Міщенко, С. В. Науменкова. — Київ : Центр наукових досліджень Національного банку України : Знання, 2011. — 504 с. — (Інституційні засади розвитку банківської системи України). — ISBN 978-966-346-923-2.
- Термінологічний словник з питань запобігання та протидії легалізації (відмиванню) доходів, одержаних злочинним шляхом, фінансуванню тероризму, фінансуванню розповсюдження зброї масового знищення та корупції / А. Г. Чубенко, М. В. Лошицький, Д. М. Павлов, С. С. Бичкова, О. С. Юнін. — Київ : Ваіте, 2018. — 826 с. — ISBN 978-617-7627-10-3.