Добавлен: 28.06.2023
Просмотров: 168
Скачиваний: 9
Архитектура «клиент-сервер»
Использование технологии «клиент – сервер» предполагает наличие некоторого количества компьютеров, объединенных в сеть, один из которых выполняет особые управляющие функции (является сервером сети).
Так, архитектура « клиент – сервер « разделяет функции приложения пользователя (называемого клиентом) и сервера. Приложение-клиент формирует запрос к серверу, на котором расположена БД, на структурном языке запросов SQL (Structured Query Language), являющемся промышленным стандартом в мире реляционных БД. Удаленный сервер принимает запрос и переадресует его SQL-серверу БД. SQL-сервер – специальная программа, управляющая удаленной базой данных. SQL-сервер обеспечивает интерпретацию запроса, его выполнение в базе данных, формирование результата выполнения запроса и выдачу его приложению-клиенту. При этом ресурсы клиентского компьютера не участвуют в физическом выполнении запроса; клиентский компьютер лишь отсылает запрос к серверной БД и получает результат, после чего интерпретирует его необходимым образом и представляет пользователю. Так как клиентскому приложению посылается результат выполнения запроса, по сети «путешествуют» только те данные, которые необходимы клиенту. В итоге снижается нагрузка на сеть. Поскольку выполнение запроса происходит там же, где хранятся данные (на сервере), нет необходимости в пересылке больших пакетов данных. Кроме того, SQL-сервер, если это возможно, оптимизирует полученный запростаким образом, чтобы он был выполнен в минимальное время с наименьшими накладными расходами. Архитектура системы представлена на Рисунке 2[13].
Все это повышает быстродействие системы и снижает время ожидания результата запроса. При выполнении запросов сервером существенно повышается степень безопасности данных, поскольку правила целостности данных определяются в базе данных на сервере и являются едиными для всех приложений, использующих эту БД. Таким образом, исключается возможность определения противоречивых правил поддержания целостности. Мощный аппарат транзакций, поддерживаемый SQL-серверами, позволяет исключить одновременное изменение одних и тех же данных различными пользователями и предоставляет возможность откатов к первоначальным значениям при внесении в БД изменений, закончившихся аварийно[14].
Рисунок 2 Архитектура «клиент – сервер»
Итак, в результате работа построена следующим образом:
База данных в виде набора файлов находится на жестком диске специально выделенного компьютера (сервера сети).
СУБД располагается также на сервере сети.
Существует локальная сеть, состоящая из клиентских компьютеров, на каждом из которых установлено клиентское приложение для работы с БД.
На каждом из клиентских компьютеров пользователи имеют возможность запустить приложение. Используя предоставляемый приложением пользовательский интерфейс, он инициирует обращение к СУБД, расположенной на сервере, на выборку/обновление информации. Для общения используется специальный язык запросов SQL, т.е. по сети от клиента к серверу передается лишь текст запроса.
СУБД инкапсулирует внутри себя все сведения о физической структуре БД, расположенной на сервере.
СУБД инициирует обращения к данным, находящимся на сервере, в результате которых на сервере осуществляется вся обработка данных и лишь результат выполнения запроса копируется на клиентский компьютер. Таким образом СУБД возвращает результат в приложение.
Приложение, используя пользовательский интерфейс, отображает результат выполнения запросов[15].
Рассмотрим, как выглядит разграничение функций между сервером и клиентом.
Функции приложения-клиента:
- Посылка запросов серверу.
- Интерпретация результатов запросов, полученных от сервера.
- Представление результатов пользователю в некоторой форме (интерфейс пользователя).
Функции серверной части:
- Прием запросов от приложений-клиентов.
- Интерпретация запросов.
- Оптимизация и выполнение запросов к БД.
- Отправка результатов приложению-клиенту.
- Обеспечение системы безопасности и разграничение доступа.
- Управление целостностью БД.
- Реализация стабильности многопользовательского режима работы[16].
В архитектуре «клиент – сервер» работают так называемые «промышленные» СУБД. Промышленными они называются из-за того, что именно СУБД этого класса могут обеспечить работу информационных систем масштаба среднего и крупного предприятия, организации, банка. К разряду промышленных СУБД принадлежат MS SQL Server, Oracle, Gupta, Informix, Sybase, DB2, InterBase и ряд других.
Как правило, SQL-сервер обслуживается отдельным сотрудником или группой сотрудников (администраторы SQL-сервера). Они управляют физическими характеристиками баз данных, производят оптимизацию, настройку и переопределение различных компонентов БД, создают новые БД, изменяют существующие и т.д., а также выдают привилегии (разрешения на доступ определенного уровня к конкретным БД, SQL-серверу) различным пользователям.
Рассмотрим основные достоинства данной архитектуры по сравнению с архитектурой «файл-сервер»:
- Существенно уменьшается сетевой трафик.
- Уменьшается сложность клиентских приложений (большая часть нагрузки ложится на серверную часть), а, следовательно, снижаются требования к аппаратным мощностям клиентских компьютеров.
- Наличие специального программного средства – SQL-сервера – приводит к тому, что существенная часть проектных и программистских задач становится уже решенной.
- Существенно повышается целостность и безопасность БД[17].
К числу недостатков можно отнести более высокие финансовые затраты на аппаратное и программное обеспечение, а также то, что большое количество клиентских компьютеров, расположенных в разных местах, вызывает определенные трудности со своевременным обновлением клиентских приложений на всех компьютерах-клиентах. Тем не менее, архитектура « клиент – сервер « хорошо зарекомендовала себя на практике, в настоящий момент существует и функционирует большое количество БД, построенных в соответствии с данной архитектурой[18].
Технология «клиент-сервер»
2.1 Классическая двухуровневая архитектура «клиент-сервер»
Как правило, части сети не являются равноправными полностью: некоторые обладают доступом к различным ресурсам (например – сканер, матрица, СУБД и др.), другие же обладают возможностью обращения к таким ресурсам.
Технология «клиент-сервер» представляет собой архитектуру программного комплекса, внутри которой осуществляется распределение прикладной программы по двум логически различным компонентам (клиент и сервер), которые взаимодействуют согласно схеме «запрос-ответ» и решают некоторые задачи (рисунок 3)[19].
Рисунок 3 Архитектура «Клиент – сервер»
Компьютер или программный продукт, который управляет и владеет некоторым ресурсом, называется сервером этого некоторого ресурса.
Клиентом называют такой компьютер или программу, который запрашивает и использует некоторый ресурс.
Сервер и клиент могут располагаться как на одном компьютере, так и на разных компьютерах, соединенных сетью. Кроме того, возможно возникновение такой ситуации, когда некая программа или их блок будут одновременно реализовывать функции сервера по отношению по отношению к одному блоку и функции клиента по отношению к другому.
Основной принцип технологии «Клиент-сервер» заключается в разделении функций приложения как минимум на три группы:
- модули интерфейса с пользователем;
Группа модулей интерфейса с пользователем также может быть названа логикой представления. Посредством взаимодействия с логикой представления пользователи могут успешно работать с приложением. Вне зависимости от определенных характеристик модулей интерфейса с пользователем, их задача состоит в обеспечении средств для максимально эффективного и оперативного обмена данными между пользователем и системой.
- модули хранения данных;
Группу модулей хранения данных также можно назвать бизнес-логикой. Модули хранения данных определяют конкретное предназначение приложения. Разделение приложения по границам между программами обеспечивает естественную основу для распределения приложения на нескольких компьютерах.
- модули обработки данных (функции управления ресурсами);
Данная группа также именуется логикой доступа к данным или алгоритмами доступа к данным. Алгоритмы доступа к данным исторически рассматривались как специфический для конкретного приложения интерфейс к механизму постоянного хранения данных наподобие файловой системы или СУБД. При помощи модулей обработки данных организуется специфический для приложения интерфейс к СУБД. При помощи интерфейса приложение управляет соединениями с базой данных и запросами к ней (перевод специфических для конкретного приложения запросов на язык SQL, получение результатов и перевод этих результатов обратно в специфические для конкретного приложения структуры данных)[20].
Каждая из перечисленных групп может быть претворена в жизнь вне зависимости от остальных. Так, не осуществляя изменения программ, применяемых для хранения и обработки данных, можно реализовать изменения интерфейса с пользователем таким образом, что одна и та же информация будет отображаться в виде таблиц, графиков или гистограмм. Очень простые приложения часто способны собрать все три части в единственную программу, и подобное разделение соответствует функциональным границам.
В соответствии с разделением функций в любом приложении можно выделить следующие компоненты:
- компонент представления данных;
- прикладной компонент;
- компонент управления ресурсом[21].
В классической архитектуре клиент-сервер приходится распределять три основные части приложения по двум физическим модулям. Обычно прикладной компонент располагается на сервере (например, сервере базы данных), компонент представления данных - на стороне клиента, а компонент управления ресурсом распределяется между клиентской и серверной частями. В этом заключается основной недостаток классической двухуровневой архитектуры.
В двухзвенной архитектуре при разбиении алгоритмов обработки данных разработчики должны иметь полную информацию о последних изменениях, внесенных в систему, и понимать эти изменения, что создает большие сложности при разработке клиент-серверных систем, их установке и сопровождении, поскольку необходимо тратить значительные усилия на координацию действий разных групп специалистов. В действиях разработчиков часто возникают противоречия, а это тормозит развитие системы и вынуждает изменять уже готовые и проверенные элементы.
Чтобы избежать несогласованности различных элементов архитектуры были созданы две модификации двухзвенной архитектуры «Клиент – сервер»: «Толстый клиент» («Тонкий сервер») и «Тонкий клиент» («Толстый сервер»).
В данных архитектурах разработчики попытались выполнять обработку данных на одной из двух физических частей - либо на стороне клиента («Толстый клиент»), либо на сервере («Тонкий клиент).
Каждый подход имеет свои недостатки. В первом случае неоправданно перегружается сеть, потому что по ней передаются необработанные, а значит, избыточные данные. Кроме того, усложняется поддержка системы и ее изменение, так как замена алгоритма вычислений или исправление ошибки требует одновременной полной замены всех интерфейсных программ, а иначе могут возникнуть ошибки или несогласованность данных. Если же вся обработка информации выполняется на сервере, то возникает проблема описания встроенных процедур и их отладки. Систему с обработкой информации на сервере абсолютно невозможно перенести на другую платформу (ОС), что является серьезным недостатком[22].
Есди все-таки разрабатывается двухуровневая классическая архитектура «Клиент – сервер», то необходимо помнить, что архитектура «Толстый сервер» аналогична архитектуре «Тонкий клиент» (Рисунок 4).