Добавлен: 02.04.2023
Просмотров: 216
Скачиваний: 2
ВВЕДЕНИЕ
В данной работе речь пойдет о технологии «клиент-сервер». В 1980-х годах эта технология заменила централизованную систему управления вычислительным процессом на мейнфреймах. Благодаря повышенной жизнеспособности и высокой надежности вычислительной системы, опции работы пользователя с несколькими приложениями одновременно, прекрасной оперативности обработки информации, предоставлению пользователю высококачественного интерфейса, легкости масштабирования и другим возможностям этой весьма перспективной и далеко не исчерпывающей себя технологии, она получила свое дальнейшее развитие.
Позднее, при возникновении новых моделей структуры «Клиент-сервер» (RDA, DBS и AS), модель файлового сервера для локальных сетей (FS) с малым функционалом была упразднена.
Захватив нишу баз данных, технология «Клиент – сервер» стала основной технологией глобальной сети Internet. Технология Intranet появилась в результате внедрения идей сети Internet в среду корпоративных систем. Различие этой технологии от технологии «Клиент-сервер» заключается в том, что она направлена не на данные, а на информацию в ее окончательно готовом к использованию виде. Сконструированные на основе технологии Intranet, вычислительные системы содержат в себе центральные серверы информации и распределенные компоненты представления информации конечному пользователю (программы-поисковики, или браузеры). В Intranet взаимодействие между клиентом и сервером осуществляется с помощью технологий web.
Приобретая все большее распространение, технология «Клиент-сервер» сама по себе не предоставляет универсальных решений, лишь давая обобщенное представление об организации современной распределенной информационной системе. В то же время, различные программные продукты и даже виды программного обеспечения реализовывают технологию Intranet с весьма существенными различиями.
Данная тема была выбрана мной в следствии постоянного присутствия технологии «Клиент-сервер» в моей работе, будь то «Банк-клиент», тонкие «терминальные» клиенты, 1С: предприятие и т.д.
Суть технологии «клиент-сервер»
Определение сервер и клиент
Правильное решение предприятий, имеющих крупный «парк» компьютеров – это модель «клиент-сервер». Как правило в такой сети отдельный компьютер подключается к одному или нескольким мощным компьютерам, которые называются серверами.
Сервер - это компьютер, или выполняющаяся на нём программа, которая предоставляет клиентам доступ к общим ресурсам и управляет этими ресурсами[1].
Клиент - пользователь (получатель) услуг и/или ресурсов, которые предоставляет сервер[2].
Общие принципы организации технологии «клиент-сервер»
В общем случае для организации работы пользователей сети с информационными ресурсами, распределенными по различным компьютерам, необходимы три составляющих:
- программа, установленная на компьютере пользователя, которая может осуществлять сетевой запрос с целью получения объекта, и предназначенная для его обработки (например, просмотра, изменения или печати документа);
- программа, установленная, как правило, на компьютере, где расположен информационный объект, которая может осуществлять по запросу поиск и пересылку объекта, а также упорядочивание доступа к нему нескольких пользователей;
- правила (протокол) взаимодействия между этими программами.
Технология взаимодействия, в которой одна программа запрашивает выполнение какой-либо совокупности действий ("запрашивает услугу"), а другая ее выполняет, называется технологией "клиент-сервер"[3]. Участники такого взаимодействия называются соответственно клиентом (client) и сервером (server) (см. рис.1). Достаточно часто клиентом (или сервером) называют компьютеры, на которых функционирует то или иное клиентское (или серверное) программное обеспечение.
Запрос
Ответ
Сервер
Рабочая станция
Рис. 1. Клиент -сервер
Следует особо отметить, что набор действий, понимаемых как запрашиваемая услуга, - это не обязательно чтение (получение) объекта. В том числе это может быть сохранение (запись), пересылка объекта и т.д.
Архитектура «клиент-сервер»
Роль клиента и сервера в архитектуре
Роль серверов состоит в обеспечение централизованной защиты и управлении трафиком, а так же в предоставление клиентам ресурсов: информации, приложений и доступа к устройствам совместного пользования (например, к принтерам)[4]. В клиент - серверной среде в роли клиентов выступают настольные ПК (именно ПК, а не неинтеллектуальные терминалы!) под управлением любой операционной системы. Клиент, как правило, использует собственные вычислительные мощности для обработки информации, полученной от сервера, но полагается на сервер в части предоставления необходимых данных и приложений. Такое распределение ролей в обработке информации называется клиентской (front - end) и серверной (back - end) обработки[5].
Наряду с успешным функционированием в собственной «родной» среде, сети модели клиент - сервер могут работать с микрокомпьютерами и мэйнфреймами. Именно эта гибкость вкупе с достаточно низкой (по сравнению с традиционными решениями) стоимостью и обуславливает привлекательность клиент - серверных сетей. Работая в такой среде на компьютере - клиенте, возможно использование трех разных методов обработки информации: автономной работы, взаимодействия с другими ПК сети и подключения к серверу или мэйнфрейму для доступа к хранящейся там информации[6].
Двухуровневая архитектура
Компоненты сети, чаще всего, не равноправны: у одних есть доступ к ресурсам (например, принтер, процессор, система управления базой данных (СУБД), файловая система и так далее), другие имеют возможность обращаться к этим ресурсам.
Технология «Клиент – сервер» - это архитектура программного комплекса, в которой происходит распределение прикладной программы по двум логически различным компонентам (клиент и сервер), взаимодействующим по схеме «запрос-ответ» и решающим свои определенные задачи[7] (см. рис. 2).
Запрос к базе данных
Ответ
Сервер
Рабочая станция
Манипуляция с БД
БД
Рис. 2. Архитектура «Клинт-Сервер»
Компьютер (или программа), управляющий и/или владеющий каким-либо ресурсом, называют сервером этого ресурса[8].
Компьютер (или программа), запрашивающий и пользующийся каким-либо ресурсом, называют клиентом этого ресурса[9].
Сервер и клиент могут располагаться как на одном компьютере (ПК), так и на разных ПК в сети. Также может возникать такая ситуация, когда некоторый программный блок будет одновременно выполнять функции сервера по отношению к одному блоку и клиента по отношению к другому.
Основной принцип технологии «Клиент-сервер» заключается в разделении функций приложения как минимум на три группы:
- модули интерфейса с пользователем;
По-другому эту группу называют логикой представления. Через эту группу пользователи взаимодействуют с приложением. Ее задача состоит в том, чтобы обеспечить средства для наиболее эффективного обмена информацией между пользователем и информационной системой, независимо от конкретных характеристик логики представления (интерфейс командной строки, сложные графические пользовательские интерфейсы, интерфейсы через посредника).[10]
- модули хранения данных;
Эту группу по-другому называют бизнес-логикой. Бизнес-логика определяет, для чего конкретно предназначено приложение (например, прикладные функции, характерные для данной предметной области). Разделение приложения по границам между программами обеспечивает естественную основу для распределения приложения на нескольких компьютерах.[11]
- модули обработки данных (функции управления ресурсами);
Эту группу по-другому называют логикой доступа к данным или алгоритмами доступа к данным. Они исторически рассматривались как специфический для конкретного приложения интерфейс к механизму постоянного хранения данных наподобие файловой системы или СУБД. За счет модулей обработки данных организуется специфический для приложения интерфейс к СУБД. За счет интерфейса приложение управляет соединениями с базой данных и запросами к ней (перевод специфических для конкретного приложения запросов на язык SQL, получение результатов и перевод этих результатов обратно в специфические для конкретного приложения структуры данных)[12].
Независимо от двух других, каждая из этих групп может быть реализована. Как пример, не изменяя программ, используемых для хранения и обработки данных, можно изменить интерфейс с пользователем таким образом, что одни и те же данные будут отображаться в виде таблиц, графиков или гистограмм. Очень простые приложения часто имеют все три части в единственной программе. Подобное разделение соответствует функциональным границам.
Выделяются следующие компоненты, в соответствии с разделением функций в любом приложении:
- компонент представления данных;
- прикладной компонент;
- компонент управления ресурсом[13].
В двухуровневой архитектуре клиент-сервер распределяется три основные части приложения по двум физическим модулям. Как правило, прикладной компонент находиться на сервере (например, сервере базы данных), компонент представления данных - на стороне клиента, а компонент управления ресурсом распределяется между клиентской и серверной частями[14]. В этом и заключается главный недостаток классической двухуровневой архитектуры.
При установке и сопровождении, в классической (двухуровневой) архитектуре при разбиении алгоритмов обработки данных разработчики обязаны иметь полную информацию о последних изменениях, внесенных в систему, и понимать эти изменения, что создает значительные сложности при разработке клиент-серверных систем, из-за чего необходимо тратить серьезные усилия на согласование действий разных групп специалистов[15]. В действиях разработчиков часто возникают расхождения, а это затрудняет развитие системы и необходимо изменять уже готовые и проверенные элементы.
Во избежание диссонанса различных элементов архитектуры были разработаны две модификации двухуровневой архитектуры «Клиент – сервер»: «Толстый клиент» («Тонкий сервер») и «Тонкий клиент» («Толстый сервер»).
В этих архитектурах разработчики попытались выполнять обработку данных на одной из двух физических частей - либо на стороне клиента («Толстый клиент»), либо на сервере («Тонкий клиент).
Каждый подход имеет свои минусы. В первом случае идет крайне большая нагрузка на сеть, потому что по ней передаются необработанные, избыточные данные. Помимо этого, затрудняется поддержание рабочей системы и ее изменение, ведь изменение алгоритма вычислений или исправление ошибки требует одновременной полной замены всех интерфейсных программ, а иначе неизбежно возникнут ошибки или разрозненность данных. Так же появляется проблема описания встроенных процедур и их отладки, когда вся обработка данных выполняется на сервере. Так же существенным недостатком является отсутствие возможности переноса системы с обработкой информации на сервере на другую платформу (ОС)[16].
При разработки двухуровневой классической архитектуры «Клиент – сервер», стоит помнить следующее:
- архитектура «Толстый сервер» точная копия архитектуры «Тонкий клиент»[17] (рисунок 3);
Клиенты
Данные
Сервер
Рис.3. Архитектура «Тонкий клиент»
Передача запроса от клиента на сервер, обработка запроса сервером и передача результата клиенту. При этом архитектуры имеют следующие недостатки:
- усложняется реализация, так как языки типа SQL не приспособлены для разработки подобного ПО и нет хороших средств отладки[18];
- производительность программ, написанных на языках типа SQL, значительно ниже, чем созданных на других языках, что имеет важное значение для сложных систем;
- программы, написанные на СУБД-языках, обычно работают недостаточно надежно; ошибка в них может привести к выходу из строя всего сервера баз данных;
- получившиеся таким образом программы полностью непереносимы на другие системы и платформы[19].
- архитектура «Тонкий сервер» копия архитектуры «Толстый клиент» (рисунок 4).
На стороне клиента происходит обработка запроса, то есть происходит передача клиенту всех необработанных данных с сервера. При этом архитектуры имеют следующие недостатки:
- усложняется обновление ПО, поскольку его замену нужно производить одновременно по всей системе;