Файл: Технология «клиент-сервер» (Клиент- серверная архитектура).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 27.05.2023

Просмотров: 914

Скачиваний: 9

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ


Современный мир постоянно в поисках изменений. Все совершенствуется и меняется. Хотя еще пару десятилетий назад – ни кто и не мог подумать о том, как техника, а в частности персональный компьютер, станет частью жизни практически каждого человека.

Практически ни одно пусть то большое, или совсем маленькое предприятие, не обходится без использования компьютера и его возможностей.

Прогресс в сфере компьютерных технологий не стоит на месте. Результатом эволюции компьютерных технологий можно назвать компьютерные сети. Именно появление сетей стало шагом в новый этап развития компьютерных технологий.

На самом деле компьютерные сети- это не что то новое и непонятное. Компьютерные сети появились уже очень давно, но они были очень примитивными. В сравнении с современными сетевыми технологиями, в то время скорость работы сети была ничтожно мала. Но для того времени это было огромным достижением.

Улучшающаяся аппаратная часть сетей, влекла за собой улучшение и сетевого программного обеспечения. По прошествии некоторого времени, необходимо было уже улучшение самих технологий, а не только развитие ПО и аппаратуры.

Такой технологией стала технология «клиент-сервер», которая дает право пользователю сети получить очень быстрый доступ к ресурсам.

Именно об этой технологии и пойдет речь в данной курсовой работе.

Цель моей курсовой работы – раскрыть главные черты технологии «клиент-сервер».

1. Клиент- серверная архитектура

1.1 Основные понятия

Архитектура информационной системы - концепция, которая определяет структуру , модель, выполняемые функции и взаимосвязь компонентов информационной системы.

Клиент-сервер (Client-server) — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), которые называются серверами, и заказчиками услуг, называемыми клиентами.

Сервер — это программа, которая представляет какие-то услуги другим программам и которая обслуживает запросы клиентов на получение ресурсов определенного вида.

Клиент — это программа, которая использует услугу, представляемую программой сервера. Зачастую многие пользователи клиентом или сервером просто называют компьютер, на котором работает какая-либо из этих программ. По сути, клиент и сервер — это роли, которые исполняют программы. Клиенты и сервера физически ни как могут находиться на одном компьютере. Одна и та же программа может быть как клиентом, так и сервером одновременно.


1.2 История

Самым важным недостатком компьютеров считается их маленькая вычислительная мощность, а также надежность. К тому же, отрицательным моментом является еще и необходимость приобретения добавочных аппаратных средств, которые убирают изолированность разных компьютеров друг от друга.

Обычно, любой пользователь хочет видеть свой компьютер с самыми лучшими свойствами и высокой вычислительной мощностью.

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

В связи с этим пользователям приходится знакомиться с двумя разными ОС ( на больших компьютерах, как правило, устанавливается операционная система типа: MVS, VMS, VM, UNIX. Персональные компьютеры используют в свою очередь операционную систему типа: MS DOS/MS Windows, OS/2 или Mac.).

По результатам опроса самых крупных представителей трехсот фирм США, которые в своей работе используют ПК, оказалось, 81% принимавших участие в опросе людей, используют доступ не к одному единственному ПК, а к нескольким. Для решения проблемы использования нескольких ПК, стали появляться локальные сети, объединяющие несколько ПК. Для связи и корректной работы компьютеров в сети, стали использоваться специально предназначенные операционные системы, к примеру, NetWare фирмы Novell. Данная система позволяла совместно пользоваться разными файлами, которые содержались в разных узлах всей сети. Такая технология получила название файл-сервер. Но, к сожалению, данная технология крайне наделена недостатками. Использую технологию файл-сервер, нельзя говорить о конфиденциальности доступа и целостности данных. Используя сеть, файлы, необходимые пользователю, передаются целиком, несмотря на то, что иногда для пользователя нужна только определенная часть файла. В следствие этого, сеть перегружается и снижается производительность системы. Еще одним недостатком системы файл-сервер можно считать надежность системы в целом. К примеру, в случае, какой либо аварии на одной из работающих станций, в момент передачи или записи данных, приводит к их искажению и потере. Обеспечивая непротиворечивость данных, приходится блокировать файлы, а это также способствует замедлению в работе.

Естественным желанием десяти специалистов в области вычислительной техники было совместить преимущества персональных компьютеров и мощных центральных компьютеров. Первым шагом в этом направлении было использование персональных компьютеров в качестве интеллектуальных терминалов. При таком подходе в персональном компьютере, соединенном с центральным компьютером, запускается специальное программное обеспечение, которое позволяет этому персональному компьютеру работать в режиме эмуляции терминала. При этом мы получаем архитектуру, которая реализует все достоинства архитектуры с мощным центральным компьютером, однако, кроме всего прочего, персональный компьютер может использоваться и самостоятельно, по своему прямому назначению. Теперь нет необходимости иметь на столе два дисплея,хотя большинство недостатков, которые присущи архитектуре с центральным компьютером, все еще сохраняется. Кроме того, хотя персональные компьютеры, имеющие дисплеи с картой VGA, позволяют работать с графикой, однако использовать их в качестве графического терминала большой центральной машины некомфортно. Задача выполняется в центральном компьютере и по проводам передаются графические образы экрана. Эти образы довольно велики и скорость смены изображения на экране может быть достаточно низкой. Следующим этапом в решении описанной выше проблемы явилось использование архитектуры клиент-сервер. В такой архитектуре все компьютеры сети разделены на 2 группы: клиенты и серверы. Компьютер- сервер - это мощный компьютер с большой оперативной памятью и большим количеством дискового пространства. На нем хранится база данных и выполняется сложная обработка, которая требует больших вычислительных ресурсов. На компьютерах-клиентах выполняются первичная обработка данных при вводе, форматирование данных, а также окончательная (финишная) обработка данных, которые извлечены из сервера. В качестве компьютеров-клиентов обычно используются персональные 11 компьютеры типа IBM PC или Macintosh. Преимущества архитектуры клиент-сервер очевидны. Каждый тип компьютера используется по своему назначению, а это значит, что обеспечивается более полное использование возможностей компьютеров. На компьютерах-клиентах работают знакомые пользователям PC пакеты, которые позволяют предоставлять результаты работы всей системы в удобном для анализа и принятия решений виде. На этих компьютерах легко можно реализовать дружественный пользовательский интерфейс приложения, которые используют графику, цвет, звук, работу с окнами и мышью и т.д. Компьютер-клиент позволяет быстро выполнять ввод и первичный контроль данных. Для финишной обработки данных могут использоваться те редакторы или пакеты электронных таблиц, которые пользователь считает наиболее удобными. В качестве компьютеров - клиентов могут одновременно использоваться компьютеры разных типов с различными операционными системами. Архитектура клиент-сервер позволяет реализовать распределенную обработку, поскольку часть работы (интерфейс с пользователем, финишная обработка) выполняется на компьютере-клиенте, а часть - на компьютере- сервере. Это позволяет уменьшить загрузку сервера и улучшить его работу, а также увеличить число клиентов, которые одновременно работают с сервером. Наиболее часто архитектура клиент-сервер применяется для приложений, которые созданы с использованием систем управления базами данных (СУБД). Дальнейшим развитием архитектуры клиент-сервер явилось использование в сети не одного, а нескольких серверов баз данных. Это позволило перейти от работы с локальной БД к работе с распределенной БД. Причем работа с распределенной базе данных (БД) "прозрачна" для пользователя, т.е. он работает с ней так же, как с локальной БД, не задумываясь о том, на каком сервере лежат его данные. Пользователь 12 обращается к одному из серверов, тот, не найдя у себя нужных данных, автоматически обращается к другим серверам. Многосерверная архитектура сегодня представляется очень перспективной. Она позволяет заменить одну мощную центральную машину на несколько менее мощных и, следовательно, более дешевых, и еще больше распараллелить обработку данных. Кроме того, такая архитектура повышает надежность системы, поскольку при выходе из строя одного из серверов все приложения, которые работают с данными других серверов, могут продолжать работу. При выходе из строя части локальной или глобальной сети система может попытаться найти иной путь к нужному серверу (по другим ветвям сети). Кроме того, на локальных серверах могут храниться данные, которые наиболее часто используются в данном узле, что позволяет свести к минимуму передачу данных по сети от сервера к серверу.


2. Клиент-серверная архитектура применительно к базам данных

2.1 Понятие архитектуры клиент-сервер.

Такую систему как клиент-сервер можно охарактеризовать присутствием двух самостоятельных и взаимодействующих между собою процессоров – клиента и сервера. Они могут выполняться на различных компьютерах, при этом обмениваясь данными в сети. Такая схема может использоваться для построения системы обработки данных на основе систем управления базами данных, а также почтовые и иные системы.

Говоря о системе файл- сервер, можно сказать, что она также использует технологию клиент- сервер, но, если смотреть со стороны архитектуры прикладных программ, самым важным является то, какого именно рода ресурсы предоставляет клиентам сервер. В файл-серверной системе данные хранятся на файловом сервере (к примеру, Novell NetWare или Windows NT Server), а их обработка происходит на рабочих станциях, на которых, как правило, функционирует одна из, так называемых, "настольных СУБД" - Access, FoxPro, Paradox и т.д. Приложение на рабочей станции "отвечает за все", а именно, за логическую обработку данных, формирование пользовательского интерфейса, и за непосредственное манипулирование данными. Файловый сервер предоставляет услуги только самого низкого уровня - открытие, закрытие и модификацию файлов, именно файлов, а не базы данных. База данных существует только в "мозгу" рабочей станции. Исходя из этого, непосредственным манипулированием данными занимается несколько независимых и несогласованных между собой процессов. Однако, кроме того, чтобы осуществить любой обработки (поиск, модификация, суммирование и т.д.) все данные необходимо передать по сети с сервера на рабочую станцию.

Рисунок 1 - Архитектура файл-сервер

В системах управления предприятием такое понятие архитектуры как клиент-сервер связывается с разделением любой прикладной программы на 3 основных слоя или компонента.

К эти трем компонентам относятся:

- компонент представления (визуализации) данных

- компонент прикладной логики

- компонент управления БД

На самом деле, любая программа, которая компьютеризирует выполнение той или иной прикладной задачи, должна обмениваться информацией с пользователем, осуществлять собственно обработку этой информации в рамках автоматизации того или иного бизнес-процесса, и, наконец, хранить данные, которые используются в программе, на том или ином постоянном носителе. Чертой, которая позволяет отнести прикладную программу к архитектуре клиент-сервер, является то, что хотя бы один из трех ее компонентов полностью выполняется на другом компьютере, и взаимодействие между компонентами на разных компьютерах осуществляется через ту или иную сетевую среду посредством передачи запросов на получение того или иного ресурса. Так как клиент-серверная архитектура является обычным случаем клиент- серверной технологии, в ней всегда обязательно присутствует и сервер и клиент. Соответственно, выделяют клиентскую и серверную стороны приложения. Клиентская сторона приложения функционирует на рабочем месте пользователя, в роли которого в подавляющем числе случаев выступает персональный компьютер. Серверная сторона функционирует на специализированном комплексе, который включает в себя мощные аппаратные средства, требуемый набор стандартного программного обеспечения, систему управления базами данных и конечно же структуры данных.


2.2 Двухуровневая клиент-серверная архитектура

Двухуровневая клиент- серверная архитектура получила свое распространение в начале 1990-х годов в связи с ростом рынка персональных компьютеров и в следствие снижения спроса на мэйнфреймы. Первое время вышеперечисленные системы основывались на классической двухуровневой клиент-серверной архитектуре (Two-tier architecture). Под клиент-серверным приложением в этом случае понимается информационная система, которая основана на использовании серверов баз данных. Схематически такую архитектуру можно представить, как показано на рисунке 2.

Рисунок 2 - Классическое представление архитектуры "клиент-сервер"

Компанией Gartner Group, которая специализируется в области исследования информационных технологий, была предложена следующая классификация двухзвенных моделей взаимодействия клиент-сервер (двухзвенными эти модели называются из-за того, что три компонента приложения различным образом распределяются между двумя узлами):

Рисунок 3 - Двухзвенная модель клиент- сервер

Исторически первой появилась модель распределенного представления данных, которая реализовывалась на универсальной ЭВМ с подключенными к ней неинтеллектуальными терминалами. Управление данными и взаимодействие с пользователем при этом объединялись в одной программе, на терминал передавалась только "картинка", которая формировалась на центральном компьютере. Далее, с появлением персонального компьютера и локальных сетей, были реализованы модели доступа к удаленной базе данных. Какое- то время базовой для сетей ПК была архитектура файлового сервера. При этом один из компьютеров является файловым сервером, на клиентах выполняются приложения, в которых совмещены компонент представления и прикладной компонент (СУБД и прикладная программа). Протокол обмена при этом представляет набор низкоуровневых вызовов операций файловой системы. Такая архитектура, которая реализуется, обычно, при помощи персональных СУБД имеет очевидные недостатки - высокий сетевой трафик и отсутствие унифицированного доступа к ресурсам. Когда появились первые специализированные серверы баз данных, появилась возможность иной реализации модели доступа к удаленной базе данных. В этом случае ядро СУБД функционирует на сервере, протокол обмена обеспечивается с помощью языка SQL. Такой подход по сравнению с файловым сервером ведет к уменьшению загрузки сети и унификации интерфейса "клиент-сервер". Тем не менее, сетевой трафик остается достаточно высоким, кроме того, по-прежнему невозможно удовлетворительное администрирование приложений, так как в одной программе совмещаются различные функции. Чуть позже была разработана концепция активного сервера, который использовал механизм хранимых процедур. Это дало возможность части прикладного компонента перенестись на сервер (модель распределенного приложения). Процедуры хранятся в словаре базы данных, разделяются между несколькими клиентами и выполняются на том же компьютере, что и SQL-сервер. Плюсами такого подхода считается:


- возможность централизованного администрирования прикладных функций

- значительное снижение сетевого трафика (т.к. передаются не SQLзапросы, а вызовы хранимых процедур).

К недостаткам относятся:

- ограниченность средств разработки хранимых процедур по сравнению с языками общего назначения (C и Pascal).

На практике, как правило, принято использовать смешанный подход:

- простейшие прикладные функции выполняются хранимыми процедурами на сервере;

-более сложные прикладные функции реализуются на клиенте непосредственно в прикладной программе.

На стороне клиента выполняется код приложения, в который обязательно входят компоненты, которые поддерживают интерфейс с конечным пользователем, которые производят отчеты, которые выполняют иные специфичные для приложения функции. Клиентская часть приложения взаимодействует с клиентской частью программного обеспечения управления базами данных, которая, фактически, является индивидуальным представителем СУБД для приложения. Интерфейс между клиентской частью приложения и клиентской частью сервера баз данных, обычно, основан на использовании языка SQL. Поэтому такие функции, как, к примеру, предварительная обработка форм, которые предназначены для запросов к базе данных, или формирование результирующих отчетов выполняются в коде приложения. Наконец, клиентская часть сервера баз данных, используя средства сетевого доступа, обращается к серверу баз данных, передавая ему текст оператора языка SQL. В продуктах практически всех компаний сервер получает от клиента текст оператора на языке SQL. Сервер производит компиляцию полученного оператора. Затем (в случае успешного завершения компиляции) происходит выполнение оператора. Разработчики и пользователи информационных систем, которые основаны на архитектуре "клиент-сервер", очень часто бывают неудовлетворенны постоянно присутствующими сетевыми накладными расходами, которые следуют из потребности обращаться от клиента к серверу с каждым последующим запросом. На практике довольно распространена ситуация, когда для очень эффективной работы отдельной клиентской составляющей информационной системы в действительности требуется только малая часть общей базы данных. Это и приводит к идее поддержки локального кэша общей базы данных на стороне каждого клиента. Фактически, концепция локального кэширования базы данных является обычным случаем концепции реплицированных баз данных. Как и в общем случае, для поддержки локального кэша базы данных программное обеспечение рабочих станций должно содержать компонент управления базами данных – упрощенный вариант сервера баз данных, который, к примеру, может не обеспечивать многопользовательский режим доступа. Отдельной проблемой является обеспечение согласованности (когерентности) кэшей и общей базы данных. Тут существует возможность разных решений – от автоматической поддержки согласованности за счет средств базового программного обеспечения управления базами данных до полного перекладывания этой задачи на прикладной уровень. Преимуществами данной архитектуры являются: