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

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

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


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

Каждая из этих частей может быть реализована независимо от двух других.

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

В классической архитектуре клиент-сервер три основные части приложения распределяются по двум физическим модулям. Обычно ПО хранения данных располагается на сервере (/: сервере базы данных), интерфейс с пользователем - на стороне клиента, а вот обработку данных приходится распределять между клиентской и серверной частями. В этом основной недостаток данной архитектуры. Разбиение алгоритмов обработки данных требует синхронизации действий обеих частей системы. Чтобы избежать несогласованности различных элементов архитектуры, пытаются выполнять обработку данных на одной из двух частей - либо на стороне клиента ("толстый" клиент), либо на сервере ("тонкий" клиент, или "2,5-уровневый клиент-сервер"). Каждый подход имеет свой недостаток: в первом случае неоправданно перегружается сеть, т.к. по ней передаются необработанные (избыточные) данные, усложняется поддержка и изменение системы, так как замена алгоритма вычислений или исправление ошибки требует одновременной полной замены всех интерфейсных программ, иначе последует несогласованность данных; во втором случае , когда вся обработка информации выполняется на сервере, возникает проблема описания встроенных процедур и их отладки (описание является декларативным и не допускает пошаговой отладки). Кроме того, систему с обработкой информации на сервере абсолютно невозможно перенести на другую платформу.

Большинство современных средств быстрой разработки приложений (RAD), которые работают с различными БД, реализует первую модель ("толстый" клиент), обеспечивающую интерфейс с сервером БД через язык SQL.. Этот вариант, кроме выше перечисленных недостатков, имеет низкий уровень безопасности.

Например. В банковских системах все операционисты имеют права на запись в основную таблицу учетной системы. Кроме того, данную систему почти невозможно перевести на Web-технологии, так как для доступа к серверу БД используется специализированное клиентское ПО.

Недостатки рассмотренных выше моделей:

1. "Толстый" клиент

F сложность администрирования;

F сложность в обновлении ПО, т.к. его замену необходимо производить одновременно по всей системе;

F сложность в распределении полномочий, так как разграничение доступа происходит не по действиям, а по таблицам;

F перегрузка сети из-за передачи по ней необработанных данных;

F слабая защита данных.

2. "Толстый" сервер

ð усложняется реализация, так как языки PL/SQL не приспособлены для разработки подобного ПО и нет средств отладки;

ð производительность программ на языках PL/SQL ниже, чем на других языках, что важно для сложных систем;

ð программы, написанные на СУБД-языках, работают ненадежно, что может привести к выходу из строя всего сервера БД;

ð созданные таким образом программы полностью непереносимы на другие системы и платформы.



Для решения перечисленных проблем используются многоуровневые (три и более) модели клиент-сервер.

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

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

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

В трехуровневой модели "тонкий" клиент не перегружен функциями обработки данных, а выполняет основную роль системы представления информации, поступающей с сервера приложений. (Такой интерфейс реализуется с помощью стандартных средств Web-технологии - браузера, CGI и Java). Это уменьшает объем данных, передаваемых между клиентом и сервером приложений, позволяя подключать клиентов с медленными телефонными каналами.

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

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

Менеджеры транзакций

МТ - позволяют одному серверу приложений одновременно обмениваться данными с несколькими серверами БД. Хотя серверы Oracle имеют механизм выполнения распределенных транзакций, но если пользователь хранит часть информации в БД Oracle, часть в БД Informix, а часть в текстовых файлах, то без МТ не обойтись. МТ используется для управления распределенными разнородными операциями и согласования действий различных компонентов информационной системы. Любое сложное ПО требует использования МТ.

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

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

Логически МТ делится на несколько частей:

· коммуникационный менеджер (контролирует обмен сообщениями между компонентами инф-ой системы;

· менеджер транзакций (управляет распределенными операциями);

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

· менеджер блокировок (обеспечивает правильный доступ к совместно используемым данным).

Обычно М-коммуникационный объединен с М-авторизации, а М-транзакций с М-блокировок и системных записей. Причем такой М редко входит в комплект поставки, поскольку его функции (ведение записей, распределение ресурсов и контроль операций), как правило, выполняет сама БД (например, Oracle).

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

4.4. Системы технологической почты ­ -

это гарантированная доставка информации и средство для интеграции приложений

Проектирование информационных систем ставит перед системными аналитиками решения следующих проблем:

ð распределенность системы;

ð интеграция различных приложений;

ð удобство администрирования.

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

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

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

Один из них основывается на концепции соединения (рис.1), а другой - на идее обмена сообщениями.

1


Рис.1. Механизм взаимодействия с установлением соединения

Процесс взаимодействия приложений и использованием установления соединения можно разделить на три фазы:

1. установление соединения;

2. передача информации;

3. закрытие соединения.

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

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



Рис.2. Взаимодействие приложений с использованием технологии очередей сообщений

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

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

Преимvшecтвa использования СТП:

Ø Гарантированность доставки сообщения. Серверы очередей сообщений

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

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

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

Ø Возможность обмена информацией в гетерогенной среде, где возможна модернизация как технических, так и программных средств.

Многоуровневая архитектура клиент-сервер

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

Частные случаи многоуровневой архитектуры:

· Трёхуровневая архитектура

· Сеть с выделенным сервером

· Сеть с выделенным сервером (англ. Client/Server network) - это локальная вычислительная сеть (LAN), в которой сетевые устройства централизованы и управляются одним или несколькими серверами. Индивидуальные рабочие станции или клиенты (такие, как ПК) должны обращаться к ресурсам сети через сервер(ы).

Сетевая операционная система - операционная система со встроенными возможностями для работы в компьютерных сетях. К таким возможностям можно отнести:

· поддержку сетевого оборудования

· поддержку сетевых протоколов

· поддержку протоколов маршрутизации

· поддержку фильтрации сетевого трафика

· поддержку доступа к удалённым ресурсам, таким как принтеры, диски и т. п. по сети

· наличие в системе сетевых служб позволяющей удалённым пользователям использовать ресурсы компьютера

Примеры сетевых операционных систем:

· Novell NetWare

· Microsoft Windows (95, NT, XP, Vista, Seven)

· Различные UNIX системы, такие как Solaris, FreeBSD

· Различные GNU/Linux системы

· ZyNOS компании ZyXEL

Современные сетевые ОС (UNIX,WIN2000,NOWELL NW) реализуют полный стек протоколов модели OSI.Так в UNIX поддерживается стек протоколов (TCP/IP,NW LINK,NET BIOS). В Nowell NW поддерживается стек протоколов IPX/SPX.В Aplle Mac используется свой набор протоколов.

Независимо от производителя все сетевые ОС осуществляют следующие функции:

1. Распределение функций между узлами сети(клиенты и серверы);

2. Поддержка коммуникационных протоколов;

3. Поддержка сетевой файловой системы;

4. Защита данных.

Все сетевые ОС можно разделить на 2 вида:

1. Одноранговые или равноправные сети (каждый из каждых). Пример Windows 9x;

2. Сеть на основе выделенного сервера.

К1. В одноранговой сети все ПК равноправны, однако в сети есть и клиенты и серверы. Обычно каждый ПК может переводиться в режим сервера, если пользователь сам этого захочет (выделяется общий ресурс).

Сетевая ОС для одноранговой сети не отличается надежной производительностью и уровнем защиты. Использывается в сети когда 10-15 пк. Примером одноранговой сети есть Win94/98/ OS/2 /LANtastic

K2. В этой сети всегда существует главный ПК – сервер, который специально оптимизирован для быстрой обработки запросов от многих клиентов (порядка -100) и для управления защитой файлов и каталогов. В больших сетях выделяются отдельные серверы для отдельных приложений (WEB – сервер, Файл – сервер, Принт – сервер, сервер БД и почтовый сервер)

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

Подготовка пользователя

Защита

Требования к серверу

Разделяемые ресурсы

В одноранговой сети каждый компьютер должен:

· большую часть своих вычислительных ресурсов предоставлять локальному пользователю (сидящему за этим компьютером);

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

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

Элементарная защита подразумевает установку пароля на разделяемый ресурс, например на каталог. Централизованно управлять защитой в одноранговой сети очень сложно, так как каждый пользователь устанавливает ее самостоятельно, да и ``общие"" ресурсы могут находиться на всех компьютерах, а не только на центральном сервере. Такая ситуация представляет серьезную угрозу для всей сети, кроме того, некоторые пользователи могут вообще не установить защиту. Если для Вас вопросы конфиденциальности являются принципиальными, рекомендуем выбрать сеть на основе сервера.

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

Тема 5.2. Сетевые ОС. Клиент-сервер

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

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

Частные случаи многоуровневой архитектуры:

· Трёхуровневая архитектура

· Сеть с выделенным сервером

· Сеть с выделенным сервером (англ. Client/Server network) - это локальная вычислительная сеть (LAN), в которой сетевые устройства централизованы и управляются одним или несколькими серверами. Индивидуальные рабочие станции или клиенты (такие, как ПК) должны обращаться к ресурсам сети через сервер(ы).

Сетевая операционная система - операционная система со встроенными возможностями для работы в компьютерных сетях. К таким возможностям можно отнести:

· поддержку сетевого оборудования

· поддержку сетевых протоколов

· поддержку протоколов маршрутизации

· поддержку фильтрации сетевого трафика

· поддержку доступа к удалённым ресурсам, таким как принтеры, диски и т. п. по сети

· наличие в системе сетевых служб позволяющей удалённым пользователям использовать ресурсы компьютера

Примеры сетевых операционных систем:

· Novell NetWare

· Microsoft Windows (95, NT, XP, Vista, Seven)

· Различные UNIX системы, такие как Solaris, FreeBSD

· Различные GNU/Linux системы

· ZyNOS компании ZyXEL

Современные сетевые ОС (UNIX,WIN2000,NOWELL NW) реализуют полный стек протоколов модели OSI.Так в UNIX поддерживается стек протоколов (TCP/IP,NW LINK,NET BIOS). В Nowell NW поддерживается стек протоколов IPX/SPX.В Aplle Mac используется свой набор протоколов.

Независимо от производителя все сетевые ОС осуществляют следующие функции:

1. Распределение функций между узлами сети(клиенты и серверы);

2. Поддержка коммуникационных протоколов;

3. Поддержка сетевой файловой системы;

4. Защита данных.

Все сетевые ОС можно разделить на 2 вида:

1. Одноранговые или равноправные сети (каждый из каждых). Пример Windows 9x;

2. Сеть на основе выделенного сервера.

К1. В одноранговой сети все ПК равноправны, однако в сети есть и клиенты и серверы. Обычно каждый ПК может переводиться в режим сервера, если пользователь сам этого захочет (выделяется общий ресурс).

Сетевая ОС для одноранговой сети не отличается надежной производительностью и уровнем защиты. Использывается в сети когда 10-15 пк. Примером одноранговой сети есть Win94/98/ OS/2 /LANtastic

K2. В этой сети всегда существует главный ПК – сервер, который специально оптимизирован для быстрой обработки запросов от многих клиентов (порядка -100) и для управления защитой файлов и каталогов. В больших сетях выделяются отдельные серверы для отдельных приложений (WEB – сервер, Файл – сервер, Принт – сервер, сервер БД и почтовый сервер)

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

Разные ОС – Unix, Win 2000Server, NovellNetWare

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

Структура ре-директора:

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

Преимущества

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

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

Позволяет объединить различные клиенты. Использовать ресурсы одного сервера часто могут клиенты с разными аппаратными платформами, операционными системами и т.п.

[править]

Недостатки

Неработоспособность сервера может сделать неработоспособной всю вычислительную сеть.

Поддержка работы данной системы, требует отдельного специалиста - системного администратора.

Высокая стоимость оборудования.

[править]

Многоуровневая архитектура клиент-сервер

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

Частные случаи многоуровневой архитектуры:

Трёхуровневая архитектура

[править]

Сеть с выделенным сервером

Сеть с выделенным сервером (англ. Client/Server network) - это локальная вычислительная сеть (LAN), в которой сетевые устройства централизованы и управляются одним или несколькими серверами. Индивидуальные рабочие станции или клиенты (такие, как ПК) должны обращаться к ресурсам сети через сервер(ы).

Введение

О технологии клиент-сервер написано уже очень много. Можно заметить, что некий ажиотаж вокруг этой темы, имевший место еще два года назад, теперь определенно спал. Статьи в прессе и разговоры в кулуарах приобрели спокойный, деловой тон и обсуждают теперь, как правило, конкретные аспекты применения этой технологии. Вопроса "Быть или не быть архитектуре клиент-сервер?" теперь уже никто не поднимает - все знают, что "Быть!".

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

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

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

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

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

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

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

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

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

Когда вам нужна архитектура клиент-сервер?

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

Надежность

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

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

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

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

устойчивость к сбоям - после завершения транзакции, ее результаты уже не пропадут.

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

Масштабируемость

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

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

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

Безопасность

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

Гибкость

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

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

правил логической обработки (бизнес-правил);

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

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

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

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

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

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

2) В двухуровневой клиент-серверной системе, если алгоритм расчета зарплаты реализован на сервере в виде правила расчета зарплаты, его выполняет сервер бизнес-правил, выполненный, например, в виде OLE-сервера, и мы обновим один из его объектов, ничего не меняя ни в клиентском приложении, ни на сервере баз данных.

Этапы построения клиент-серверной системы.

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

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

2.Разработать полноценное двухуровневое клиент-серверное приложение, используя все ту же связку Access - SQL Server, которая работает очень хорошо. Делать это можно, например, постепенно меняя отдельные компоненты приложения, полученного на шаге 1. Альтернативой может быть разработка полностью нового приложения с использованием в качестве клиента Visual Basic, Delphi или любого другого из десятков имеющихся инструментов.

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

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

Для решения перечисленных проблем используются многоуровневые (три и более уровней) архитектуры клиент-сервер.

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

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

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

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

Многоуровневые клиент-серверные системы достаточно легко можно перевести на Web-технологию - для этого достаточно заменить клиентскую часть универсальным или специализированным браузером, а сервер приложений дополнить Web-сервером и небольшими программами вызова процедур сервера. Для разработки этих программ можно использовать как Common Gateway Interface (CGI), так и более современную технологию Java.

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