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

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

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

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

Добавлен: 26.06.2023

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

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

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

ВВЕДЕНИЕ

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

Основной принцип технологии "клиент-сервер" заключается в разделении функций приложения на три группы:

  • ввод и отображение данных (взаимодействие с пользователем);
  • прикладные функции, характерные для данной предметной области;
  • функции управления ресурсами (файловой системой, базой даных и т.д.)

Поэтому, в любом приложении выделяются следующие компоненты:

  • компонент представления данных
  • прикладной компонент
  • компонент управления ресурсом

Связь между компонентами осуществляется по определенным правилам, которые называют "протокол взаимодействия".

Технология  «клиент-сервер» пришла на смену централизованной схеме управления вычислительным процессом на мейнфреймах еще в 80-х годах прошлого века. Благодаря высокой живучести и надежности вычислительной системы, легкости масштабирования, возможности одновременной работы пользователя с несколькими приложениями, высокой оперативности обработки информации, обеспечению пользователя высококачественным интерфейсом и другим возможностям эта весьма перспективная и далеко не исчерпавшая себя технология получила свое дальнейшее развитие. 
       Со  временем малофункциональную модель файлового сервера для локальных сетей (FS) заменили появившиеся одна за одной модели структуры «Клиент- сервер» (RDA, DBS и AS).
       Заняв нишу баз данных, технология «Клиент – сервер» стала основной технологией глобальной сети Internet. Далее, в результате перенесения идей сети Internet в среду корпоративных систем, появилась технология Intranet. В отличие от технологии «Клиент-сервер» эта технология ориентирована не на данные, а на информацию в ее окончательно готовом к потреблению виде. Вычислительные системы, построенные на основе Intеrnet, имеют в своем составе центральные серверы информации и распределенные компоненты представления информации конечному пользователю (программы-навигаторы, или браузеры). Взаимодействие между клиентом и сервером в Intеrnet происходит при помощи web – технологий.[1]
       На  сегодняшний день технология «Клиент-сервер» получает все большее распространение, однако сама по себе она не предлагает универсальных рецептов. Она лишь дает общее представление о том, как должна быть организована современная распределенная информационная система. В то же время реализации этой технологии в конкретных программных продуктах и даже в видах программного обеспечения различаются весьма существенно.  


ГЛАВА 1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

    1. Основные понятия серверов

Сервер (от англ. server обслуживающий). В зависимости от предназначения существует несколько определений понятия сервер.

1. Сервер (сеть) — логический или физический узел сети обслуживающий запросы к одному адресу и/или доменному имени (смежным доменным именам) состоящий из одного или системы аппаратных серверов на котором выполняются один или система серверных программ

2. Сервер (программное обеспечение) — программное обеспечение принимающее запросы от клиентов (в архитектуре клиент-сервер).

3. Сервер (аппаратное обеспечение) — компьютер (или специальное компьютерное оборудование) выделенный и/или специализированный для выполнения определенных сервисных функций.

4. Сервер в информационных технологиях — программный компонент вычислительной системы выполняющий сервисные функции по запросу клиента предоставляя ему доступ к определённым ресурсам.[2]

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

В зависимости от того, в какой мере человек владеет навыками работы на компьютере и какие операции собирается выполнять на нем,  он выбирает подходящий для себя компьютер. Например, для офисного компьютера важно, чтобы он был не очень дорогим и мог работать с типовыми офисными приложениями. Для семьи, где дети любят компьютерные игры, а взрослые – фильмы,  желательно выбрать компьютер, который будет достаточно мощным, и способным воспроизводить разные медиа-данные. Однако, с любым персональным компьютером работает один пользователь. 
Иное дело – сервер. Сервер - компьютер, на который установлено специальное программное обеспечение. Именно оно дает возможность оказывать услуги другим устройствам, подключенным к серверу, - сразу нескольким компьютерам, принтерам, факсам и т.д. Устройства, подключенные к серверу, называют клиентами.
Наличие сервера позволяет предприятию выполнять более масштабные задачи, нежели это возможно при использовании обычного компьютера.
Именно от качества сервера зависит успешность работы всей сети предприятия и возможность выполнения тех целей и задач, которые стоят перед ним.  В зависимости от задач компании и нужно выбирать сервер.[3]
Самая главная характеристика сервера – это его производительность, которая зависит от нескольких параметров:


  • во-первых, от типа и производительности процессоров;
  • во-вторых, от объема и типа оперативной памяти;
  • в-третьих, от производительности дисковой подсистемы.

Например, чем больше процессоров составляют начинку сервера и чем больше ядер в каждом из них, тем больше мощность всей сети. В принципе, выбирая конфигурацию сервера, нужно обязательно предусмотреть возможность расширения его через некоторое время, если возникнет потребность. Для этого нужно позаботиться о наличии процессоров, памяти и пр. устройств, совместимых с уже имеющимися.  
Вторая важная характеристика сервера – его управляемость. Имеется ввиду, что должны быть обеспечены такие функции, как удаленные мониторинг и диагностика. Т.е. желательно, чтобы сервером можно было управлять на расстоянии: включать и перезагружать, диагностировать и исправлять неполадки даже в выключенном состоянии (при условии, что он подключен к электрической сети).[4]
Первые две характеристики – производительность и управляемость – в значительной мере влияют на надежность сервера, что подразумевает не только физическую его надежность и качественную сборку, но и программную, которая состоит в стабильной работе всех программ.
Кроме перечисленного, следует обратить внимание на масштабируемость сервера, что позволяет значительно увеличить его  мощность в плане производимых операционной системой вычислительных операций.  Иными словами, масштабируемость означает, что система имеет способность увеличивать мощность в случае увеличения рабочей нагрузки без снижения таких показателей, как надежность и отказоустойчивость. 

1.2. Модель клиент-сервер


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

Процессы, реализующие некоторую службу, например службу файловой системы или базы данных называются серверами (servers). Процессы, запрашивающие службы у серверов путем посылки запроса и последующего ожидания ответа от сервера называются клиентами (clients) .[5]

По такой схеме могут быть построены системы обработки данных на основе СУБД почтовые и другие системы. Мы будем говорить о базах данных и системах на их основе. И здесь удобнее будет не просто рассматривать клиент-серверную архитектуру, а сравнить ее с другой - файл-серверной.


В файл-серверной системе данные хранятся на файловом сервере (например ,Novell NetWare или Windows NT Server) а их обработка осуществляется на рабочих станциях на которых, как правило,функционирует одна из так называемых "настольных СУБД" - Access FoxPro Paradox и т.п..[6]

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

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

Рис 1. Сравнение файл-серверной и клиент-серверной моделей

В клиент-серверной системе функционируют (как минимум) два приложения - клиент и сервер, делящие между собой те функции, которые в файл-серверной архитектуре целиком выполняет приложение на рабочей станции. Хранением и непосредственным манипулированием данными занимается сервер баз данных, в качестве которого может выступать Microsoft SQL Server Oracle Sybase и т.п..[8]

Формированием пользовательского интерфейса занимается клиент для построения которого можно использовать целый ряд специальных инструментов а также большинство настольных СУБД. Логика обработки данных может выполняться как на клиенте, так и на сервере. Клиент посылает на сервер запросы сформулированные, как правило, на языке SQL. Сервер обрабатывает эти запросы и передает клиенту результат (разумеется, клиентов может быть много)[9].

Таким образом, непосредственным манипулированием данными занимается один процесс. При этом обработка данных происходит там же, где данные хранятся - на сервере что исключает необходимость передачи больших объемов данных по сети.[10]

Что дает архитектура клиент-сервер?

Посмотрим на данную архитектуру с точки зрения потребностей бизнеса. Какие же качества привносит клиент-сервер в информационную систему?


Надежность - сервер баз данных осуществляет модификацию данных на основе механизма транзакций который придает любой совокупности операций объявленных как транзакция следующие свойства:

Атомарность - при любых обстоятельствах будут либо выполнены все операции транзакции либо не выполнена ни одна; целостность данных при завершении транзакции;

Независимость - транзакции инициированные разными пользователями не вмешиваются в дела друг друга;

Устойчивость к сбоям - после завершения транзакции ее результаты уже не пропадут. Механизм транзакций, поддерживаемый сервером баз данных, намного более эффективен чем аналогичный механизм в настольных СУБД т.к. сервер централизованно контролирует работу транзакций. Кроме того, в файл-серверной системе сбой на любой из рабочих станций может привести к потере данных и их недоступности для других рабочих станций, в то время как в клиент-серверной системе сбой на клиенте практически никогда не сказывается на целостности данных и их доступности для других клиентов.

Масштабируемость - способность системы адаптироваться к росту количества пользователей и объема базы данных при адекватном повышении производительности аппаратной платформы без замены программного обеспечения.[11]

Общеизвестно, что возможности настольных СУБД серьезно ограничены - это пять-семь пользователей и 30-50 Мб соответственно. Цифры разумеется представляют собой некие средние значения в конкретных случаях они могут отклоняться как в ту так и в другую сторону. Что наиболее существенно эти барьеры нельзя преодолеть за счет наращивания возможностей аппаратуры.

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

Безопасность - сервер баз данных предоставляет мощные средства защиты данных от несанкционированного доступа невозможные в настольных СУБД. При этом права доступа администрируются очень гибко - до уровня полей таблиц. Кроме того можно вообще запретить прямое обращение к таблицам осуществляя взаимодействие пользователя с данными через промежуточные объекты - представления и хранимые процедуры. Так что администратор может быть уверен - никакой слишком умный пользователь не прочитает то что ему читать неположено.

Гибкость - в приложении работающем с данными можно выделить три логических слоя:

-пользовательского интерфейса;