Файл: ВАРИАНТЫ АРХИТЕКТУРЫ КЛИЕНТ-СЕРВЕР (технология клиент-сервер).pdf

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

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

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

Добавлен: 28.04.2023

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

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

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

ВВЕДЕНИЕ

Ни для кого не секрет, что информационные технологии являются основой современного общества.

Инфромация, вращающаяся в обществе, по праву является важнейшим ресурсом современности.

Для обработки больших объемов информации люди привыкли использовать различные приложения, установленные на компьютерах. Однако, чем больший объем требуется обработать, тем большее количество ресурсов нужно затратить.

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

Все о чем выше говорилось объясняет актуальность рассматриваемой темы.

Цель данной работы – изучить разные варианты архитектуры клиент-сервер.

Для достижения поставленной цели необходимо решить некоторые задачи:

  • изучить литературу по заданной теме;
  • изучить историю возникновения технологии;
  • описать идею технологии;
  • рассмотреть варианты архитектуры;
  • изучить развитие технологии.

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

1. Технология клиент-сервер

1.1. История

Под архитектурой информационной системы (ИС) как правило понимают концепцию, определяющую модель, структуру, выполняемые функции и взаимосвязь элементов ИС.

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

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

Клиент — это программа, которая пользуется услугами, представляемыми сервером .

Зачастую под терминами «клиент» и «сервер» люди понимают компьютер, на котором функционирует какая-либо из этих программ. В действиетльности, клиент и сервер — это всего лишь роли, исполняемые программами. Физически клиенты и серверы могут даже размещаться на одном компьютере. Более того, даже одна и та же программа может одновременно являться и клиентом, и сервером.


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

Как правило, пользователям компьютеров требуется высокая вычислительная мощность, поэтому там, где для выполнения сложных вычислений применяются мощные изолированные центральные компьютеры с терминалами, их пользователям периодически приходится ходить на персональные компьютеры для редактирования текстов или выполнения задач, использующих электронные таблицы. Это заставляет пользователей освоить 2 различные операционные системы (на больших машинах обычно установлены OC MVS, VMS, VM, UNIX, а на персональных - MS DOS/MS Windows, OS/2 или Mac) и не решает задачи совместного использования данных.

В результате опроса представителей трехсот крупнейших компаний США, использующих персональные компьютеры, выяснилось, что для 81% опрошенных требуется доступ к данным более чем одного компьютера.

Чтобы решить эту задачу, персональные компьютеры начали объединять в локальные сети и устанавливать на них специальные операционные системы, например, NetWare, для совместного использования компьютерами сети файлов, размещенных в различных узлах. Такая технология получила название «файл-сервер».

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

Чтобы данные не противоречили в подобных системах необходимо блокировать файлы, что является причиной замедления работы. Естественное желание специалистов в области вычислительной техники - совместить преимущества персональных компьютеров и мощных центральных компьютеров. Первый шаг в данном направлении - использование персональных компьютеров в роли интеллектуальных терминалов. В данном случае в персональном компьютере, который соединен с центральным компьютером, запускается специальное программное обеспечение, позволяющее этому персональному компьютеру работать в режиме эмуляции терминала. Значит получается архитектура, реализующая все преимущества архитектуры с мощным центральным компьютером, но, за исключением того, что персональный компьютер может использоваться и самостоятельно. В результате отсутствует необходимость двух дисплеев, однако есть недостатки, присущих архитектуре с центральным компьютером, их большенство. Кроме того, даже персональные компьютеры, имеющие дисплеи с картой VGA, и предоставляющие возможность работы с графикой, не могут применяться в качестве графических терминалов большой центральной машины. Данная задача реализуется центральным компьютером, в результате чего графические образы экрана передаются по проводам. Эти образы достаточно велики и скорость смены изображений на экране может быть очень низкой.


Следующий шаг в решении описанной выше проблемы - использование клиент-серверной архитектуры. В данном случае все компьютеры сети делятся на две группы: клиенты и серверы. Компьютер-сервер это мощный компьютер с большой оперативной памятью и большим объемом жесткого диска. Он хранит базу данных, а также отвечает за сложную обработку, требующую больших вычислительных ресурсов. На клиентских компьютерах выполняются такие операции как первичная обработка данных при вводе, форматирование данных, а также окончательная обработка данных, полученных с сервера. В качестве клиентских компьютеров чаще всего применяются персональные компьютеры типа IBM PC или Macintosh. Достоинства такого подхода очевидны. Каждый тип компьютера используется по своему назначению, таким образом достигается более полное использование возможностей компьютеров.

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

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

Наиболее часто клиент-серверная архитектура применяется для приложений, созданных с использованием систем управления базами данных (СУБД) .

1.2. Архитектура

Проблема выбора между распределенной и централизованной моделями предоставления вычислительных ресурсов сегодня считается одной из ключевых проблем организации вычислительных систем. В качестве примера данной борьбы можно рассмотреть статью Джона Лесли Кинга «Централизованные и децентрализованные вычислительные системы: организационные соображения и варианты управления» 1983 г. До середины 70-х годов прошлого столетия по причине высокой стоимости телекоммуникационного оборудования и относительно невысокой мощности вычислительных систем преобладала централизованная модель. В конце 70-х годов в результате возникновения клиент-серверной архитектуры, обеспечивающей предоставление ресурсов мейнфреймов конечным пользователям посредством удаленного соединения, появились системы разделения времени и удаленных терминалов. Последующее развитие телекоммуникационных систем и появление персональных компьютеров послужило развитием клиент-серверной парадигмы обработки данных.


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

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

Рисунок 1 - Обобщенное взаимодействие между клиентом и сервером

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

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

При этом возникает еще одна проблема - клиент не способен определить, действительно ли первоначальное сообщение с запросом было потеряно или ошибка произошла в процессе передачи ответа. Если потерялся ответ, повторная посылка запроса может привести к повторному выполнению операции. Если операция представляла собой что-то важное, например, «снять тысячу рублей с моего банковского счета», понятно, что было бы гораздо лучше, если бы вместо повторного выполнения операции клиент получал уведомление о произошедшей ошибке. С другой стороны, если операция была «сообщите мне, сколько денег у меня осталось», запрос прекрасно можно было бы послать повторно. Нетрудно заметить, что у этой проблемы нет однозначного решения.


В качестве альтернативы во многих системах клиент-сервер применяется надежный протокол с установкой соединения. Хотя данное решение по причине его относительно низкой производительности не слишком хорошо подходит для локальных сетей, оно прекрасно зарекомендовало себя в глобальных системах, для которых ненадежность является «врожденным» свойством соединений. Так, практически все прикладные протоколы сети Интернет основаны на надежных соединениях по протоколу TCP/IP. В этих случаях всякий раз, когда клиент запрашивает службу, он сперва должен установить соединение с сервером. Сервер обычно использует для посылки ответного сообщения то же самое соединение, после чего оно разрывается. В данном случае проблема заключается в том, что установка и разрыв соединения в смысле затрачиваемого времени и ресурсов относительно дороги, особенно если сообщения с запросом и ответом невелики.

1.3. Разделение приложений по уровням

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

  • уровень представления (пользовательского интерфейса) - содержит все необходимое для непосредственного общения с пользователем, например, для управления дисплеем. Данный уровень обычно реализуется на стороне клиента. Он включает в себя программы, при помощи которых пользователь может взаимодействовать с приложением. Сложность программ, входящих в пользовательский интерфейс, весьма различна. Простейший вариант программы пользовательского интерфейса представляет собой символьный дисплей. Чаще всего подобные интерфейсы применяются при работе с мэйнфреймами. В том случае, когда мэйнфрейм контролирует все взаимодействия (в том числе работу с клавиатурой и монитором), нельзя говорить о модели клиент-сервер. Однако в большинстве случаев пользовательские терминалы производят некоторую локальную обработку, осуществляя, например, эхо-печать вводимых строк или предоставляя интерфейс форм, в котором можно отредактировать введенные данные до их пересылки на главный компьютер. Стоит отметить, что современные пользовательские интерфейсы гораздо более функциональны;
  • уровень бизнес-логики (обработки) - содержит непосредственно приложения. Под бизнес-логикой здесь понимается совокупность правил, принципов и зависимостей поведения объектов предметной области системы. В качестве синонима данного понятия может использоваться термин "логика предметной области" (Domain Logic). Бизнес-логика представляет собой реализацию предметной области (например, бухгалтерского учета, методов управления предприятием и т.п.) в рамках информационной системы. Сюда относятся, например, формулы расчета ежемесячных выплат по ссудам (в финансовой индустрии), автоматизированная отправка сообщений электронной почты руководителю проекта по окончании выполнения частей задания всеми подчиненными (в системах управления проектами), отказ от отеля при отмене рейса авиакомпанией (в туристическом бизнесе) и т. д.
  • уровень данных - данные, с которыми происходит работа. Уровень данных содержит программы, которые отвечают за предоставление данных обрабатывающим их приложениям. Характерной чертой этого уровня является требование сохранности. Данное требование оворит о том, что когда приложение не работает, данные должны сохраняться в определенном месте в расчете на последующее использование. В простейшем варианте уровень данных реализуется за счет файловой системы, но чаще для его реализации применяется база данных. В модели клиент-сервер уровень данных обычно находится на стороне сервера. Кроме простого хранения информации уровень данных также отвечает за поддержание целостности данных для различных приложений. Для базы данных поддержание целостности означает, что метаданные, например, описания таблиц, ограничения и специфические метаданные приложений, также должны храниться на этом уровне. Обычно в деловой среде уровень данных организуется в форме реляционной базы данных. Ключевым моментом здесь является независимость данных. Данные организуются независимо от приложений таким образом, чтобы изменения в их организации не влияли на приложения, а приложения не влияли на организацию данных. Применение реляционных баз данных в модели клиент-сервер помогает отделить уровень обработки от уровня данных, рассматривая обработку и данные независимо друг от друга. Стоит отметить, что существует широкий класс приложений, для которых реляционные базы данных не являются лучшим выбором. Отличительной чертой этих приложений является работа со сложными типами данных, которые проще моделировать в понятиях объектов, а не отношений. Примеры таких типов данных – от простых наборов прямоугольников и окружностей до проекта самолета в случае систем автоматизированного проектирования. Также и мультимедийным системам гораздо проще работать с видео- и аудиопотоками, используя специфичные для них операции, чем с моделями этих потоков в виде реляционных таблиц. В тех случаях, когда операции с данными гораздо проще выразить в понятиях работы с объектами, имеет смысл реализовать уровень данных средствами объектно-ориентированных баз данных. Подобные базы данных не только поддерживают организацию сложных данных в форме объектов, но и хранят реализации операций над этими объектами. Таким образом, часть функциональности, приходившейся на уровень обработки, в этом случае переносится на уровень данных [10].