Добавлен: 04.04.2023
Просмотров: 115
Скачиваний: 1
ВВЕДЕНИЕ
Известно, что основой современного общества являются информационные технологии.
Информация, циркулирующая в обществе, по праву считается ценнейшим ресурсом.
Для обработки больших объемов данных люди уже давно используют компьютеры с различными приложениями, установленными на них. При этом, чем больший объем данных необходимо обработать, тем большее количество ресурсов на это будет затрачено.
Технология клиент-сервер позволила людям ускорить процесс обработки данных за счет использования более мощного вычислителя – сервера. Благодаря этому даже слабые компьютеры могли быстро получить результат обработки данных путем подключения к серверу.
Все вышесказанное объясняет актуальность рассматриваемой темы.
Цель данной работы – изучить технологию клиент-сервер.
Для достижения поставленной цели необходимо решить ряд задач:
- изучить литературу по заданной теме;
- изучить историю возникновения технологии;
- описать идею технологии;
- рассмотреть возможные варианты архитектуры;
- изучить развитие технологии.
Структурно работа состоит из трех глав. В первой приводится общее описание технологии, во второй рассматриваются варианты архитектуры клиент-сервер, третья глава посвящена развитию технологии.
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 пакеты, которые позволяют предоставлять результаты работы всей системы в виде, удобном для понимания и анализа. На этих компьютерах можно легко реализовать интуитивно понятный пользовательский интерфейс приложения при помощи графики, цвета, звука, работы с окнами и мышью и т.д. Компьютер-клиент способен быстро выполнять ввод и первичный контроль данных. Для финальной обработки данных могут использоваться те редакторы или пакеты электронных таблиц, которые наиболее удобны пользователю. В качестве клиентских компьютеров могут одновременно применяться компьютеры разных типов с различными операционными системами.
Стоит отметить, что клиент-серверная архитектура также способна реализовать распределенную обработку, поскольку часть работы (интерфейс с пользователем, финальная обработка) выполняется на компьютере-клиенте, а часть - на компьютере-сервере. Подобный подход позволяет сократить загрузку сервера и оптимизировать его работу, а также увеличить число клиентов, одновременно работающих с сервером.
Наиболее часто клиент-серверная архитектура используется для приложений, созданных с применением систем управления базами данных (СУБД) [5].
1.2. Архитектура
В настоящее время проблема выбора между распределенной и централизованной моделями предоставления вычислительных ресурсов считается одной из ключевых проблем организации вычислительных систем в целом.
В качестве подтверждения данного факта можно рассмотреть статью Джона Лесли Кинга «Централизованные и децентрализованные вычислительные системы: организационные соображения и варианты управления» 1983 г. До середины 70-х годов XX века по причине высокой стоимости телекоммуникационного оборудования и относительно невысокой мощности вычислительных систем преобладала централизованная модель. В конце 70-х годов в результате возникновения клиент-серверной архитектуры, обеспечивающей предоставление ресурсов мейнфреймов конечным пользователям посредством удаленного соединения, появились системы разделения времени и удаленных терминалов. Дальнейшее развитие телекоммуникационных систем и появление персональных компьютеров послужило развитием клиент-серверной парадигмы обработки данных.
Клиент-серверная архитектура предполагает ситуацию, при которой один или несколько клиентов и один или несколько серверов совместно с базовой операционной системой и средой взаимодействия образуют единую систему, реализующую распределенные вычисления, а также анализ и представление данных. Использование этого подхода позволяет конечному пользователю персонального компьютера получить доступ к различным ресурсам удаленных серверов, например, файлам, принтерам, базам данных, процессорному времени и т.п.
В базовой модели клиент-сервер все процессы в распределенных системах делятся на две пересекающиеся группы:
- процессы, реализующие некоторую службу, например, службу файловой системы или базы данных. Эти процессы принято называть серверами;
- процессы, запрашивающие службы у серверов посредством посылки запроса и последующего ожидания ответа от сервера - клиенты.
Взаимодействие между клиентом и сервером предполагает режим работы запрос-ответ, представленный на рисунке 1.
Рисунок 1 - Обобщенное взаимодействие между клиентом и сервером
Если базовая сеть так же надежна, как локальные сети, то взаимодействие между клиентом и сервером может быть реализовано без дополнительной установки соединения. В этом случае клиент, запрашивая службу, формирует запрос в виде сообщения, указав в нем службы, которыми он желает воспользоваться, а также данные, необходимые для этого. Сформированное сообщение отправляется на сервер, который, в свою очередь, находится в постоянном ожидании входящих сообщений. Получив сообщение, сервер его обрабатывает, а результат обработки упаковывает в ответное сообщение и отправляет клиенту.
Использование протокола, не требующего соединения, дает существенный выигрыш в плане эффективности. Такой подход может успешно использоваться до тех пор, пока сообщения не начнут повреждаться или пропадать. Однако, создать протокол, устойчивый к случайным сбоям связи, практически невозможно. Самым простым решением этой проблемы является предоставление клиенту возможности повторного отправления запроса, на который он не получил ответ.
Однако, при этом возникает еще одна проблема - клиент не способен самостоятельно понять, действительно ли первоначальное сообщение с запросом было потеряно или ошибка произошла уже в процессе передачи ответа. В том случае, когда потерялся ответ, повторная посылка запроса может привести к повторному выполнению операции. Если операция представляла собой что-то важное, например, «снять тысячу рублей с моего банковского счета», понятно, что было бы гораздо лучше, если бы вместо повторного выполнения операции клиент получал уведомление о случившейся ошибке. С другой стороны, если операция была «сообщите мне, сколько денег у меня осталось», запрос можно было бы послать повторно. Нетрудно заметить, что однозначного решения у этой проблемы нет.
В качестве альтернативы во многих системах клиент-сервер используется надежный протокол с установкой соединения. Хотя данное решение по причине его относительно низкой производительности не слишком хорошо подходит для локальных сетей, оно прекрасно зарекомендовало себя в глобальных системах, где ненадежность является «врожденным» свойством соединений. Так, практически все прикладные протоколы сети Интернет основаны на надежных соединениях по протоколу TCP/IP. В этих случаях всякий раз, когда клиент запрашивает службу, он сперва должен установить соединение с сервером. Сервер обычно использует для посылки ответного сообщения то же самое соединение, после чего оно разрывается. В данном случае основной проблемой является то, что установка и разрыв соединения в смысле затрачиваемого времени и ресурсов относительно дороги, особенно если сообщения с запросом и ответом невелики [7].
1.3. Разделение приложений по уровням
Модель клиент-сервер изначально была предметом множества споров. Один из главных вопросов заключался в том, как именно делить клиенты и серверы. Рассматривая множество приложений типа клиент-сервер, предназначенных для организации доступа пользователей к базам данных, многие рекомендовали использовать три уровня:
- уровень пользовательского интерфейса (представления) – включает в себя все необходимое для непосредственного общения с пользователем, например, для управления дисплеем. Обычно данный уровень реализуется на стороне клиента. К нему относятся программы, посредством которых пользователь может взаимодействовать с приложением. Сложность программ, входящих в пользовательский интерфейс, весьма различна. Простейший вариант программы пользовательского интерфейса представляет собой символьный дисплей. Чаще всего такие интерфейсы используются при работе с мэйнфреймами. В том случае, когда мэйнфрейм контролирует все взаимодействия (в том числе работу с клавиатурой и монитором), нельзя говорить о модели клиент-сервер. Однако в большинстве случаев пользовательские терминалы реализуют некоторую локальную обработку, осуществляя, например, эхо-печать вводимых строк или предоставляя интерфейс форм, где можно редактировать введенные данные до их пересылки на главный компьютер. Стоит отметить, что современные пользовательские интерфейсы гораздо более функциональны;
- уровень обработки (бизнес-логики) - содержит непосредственно приложения. Под бизнес-логикой здесь понимается совокупность принципов, правил и зависимостей поведения объектов предметной области системы. В качестве синонима данного понятия может использоваться термин «логика предметной области» (Domain Logic). Бизнес-логика является реализацией предметной области (например, бухгалтерского учета, методов управления предприятием и т.п.) в пределах информационной системы. Сюда относятся, например, формулы расчета ежемесячных выплат по ссудам (в финансовой индустрии), автоматизированная отправка сообщений электронной почты руководителю проекта по окончании выполнения частей задания всеми подчиненными (в системах управления проектами), отказ от отеля при отмене рейса авиакомпанией (в туристическом бизнесе) и т. д.
- уровень данных - данные, с которыми происходит работа. Уровень данных включает в себя программы, отвечающие за предоставление данных обрабатывающим их приложениям. Отличительной чертой этого уровня является требование сохранности. Оно говорит о том, что когда приложение не работает, данные по-прежнему должны сохраняться в определенном месте с расчетом на дальнейшее использование. В простейшем варианте уровень данных реализуется файловой системой, но чаще всего для его реализации используется база данных. В модели клиент-сервер уровень данных обычно находится на стороне сервера. Кроме простого хранения информации также данный уровень отвечает за поддержание целостности данных для различных приложений. Для базы данных поддержание целостности говорит о том, что метаданные, например, описания таблиц, ограничения и специфические метаданные приложений, также должны храниться на этом уровне. Обычно в деловой среде уровень данных представляет собой реляционную базу данных. Ключевым моментом здесь является независимость данных. Данные организуются независимо от приложений таким образом, чтобы изменения в их организации никак не влияли на приложения, а приложения не влияли на организацию данных. Использование реляционных баз данных в модели клиент-сервер помогает отделить уровень обработки от уровня данных, рассматривая обработку и данные независимо друг от друга. Стоит отметить, что существует широкий класс приложений, для которых реляционные базы данных не являются лучшим решением. Характерной чертой этих приложений является работа со сложными типами данных, которые проще моделировать в понятиях объектов, а не отношений. Примеры таких типов данных – от простых наборов прямоугольников и окружностей до проекта самолета в случае систем автоматизированного проектирования. Также и мультимедийным системам гораздо проще работать с видео- и аудиопотоками, используя специфичные для них операции, чем с моделями этих потоков в виде реляционных таблиц. В тех случаях, когда операции с данными гораздо проще выразить в понятиях работы с объектами, имеет смысл реализовать уровень данных средствами объектно-ориентированных баз данных. Подобные базы данных не только поддерживают организацию сложных данных в форме объектов, но и хранят реализации операций над этими объектами. Таким образом, часть функциональности, приходившейся на уровень обработки, в этом случае переносится на уровень данных [10].