Архитектура Клиент Сервер Описание

Posted on -

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

Архитектура 'клиент-сервер'. 7.1.1.Основные понятия. Как правило компьютеры и программы, входящие в состав информационной системы,. Архитектура клиент – сервер (client-server architecture) – это концепция информационной сети, в которой основная часть ее ресурсов сосредоточена в серверах, обслуживающих своих клиентов. Рассматриваемая архитектура определяет два типа компонентов: серверы и клиенты. Сервер - это объект, предоставляющий сервис другим объектам сети по их запросам. Сервис – это процесс обслуживания клиентов. Рисунок Архитектура клиент – сервер. Сервер работает по заданиям клиентов и управляет выполнением их заданий. После выполнения каждого задания сервер посылает полученные результаты клиенту, пославшему это зад. 5 Особенности и преимущества архитектуры 'клиент/сервер'. Что же представляет собой архитектура клиент/сервер?. Кроме того, для описания серверных бизнес-правил, в наиболее типичных ситуациях (как в примере с заказчиками и заказами) существуют весьма удобные инструменты - так называемые CASE-средства (CASE означает Computer-Aided System Engineering), позволяющие описать подобные правила и создавать реализующие их объекты базы данных (индексы, триггеры), буквально рисуя мышью связи между таблицами, без какого бы то ни было программирования. Клиент-сервер (англ. Client-server) — вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемыми серверами, и заказчиками услуг, называемыми клиентами. Нередко клиенты и серверы взаимодействуют через компьютерную сеть и могут быть как различными физическими устройствами, так и программным обеспечением. Делает возможным, в большинстве случаев, распределить функции вычислительной системы между несколькими независимыми компьютерами в сети. Это позволяет упростить обслуживание вычислительной системы.

К описанной модели часто применяют аббревиатуру RDA – Remote Data Access. 'Тонкий' клиент (thin client) – это компьютер-клиент сети с архитектурой 'клиент-сервер', который переносит большинство задач по обработке информации на сервер. Эта модель активно используется в корпоративной среде в связи с распространением интернет-технологий и в первую очередь веб-браузеров. В этом случае клиентское приложение обеспечивает реализацию презентационной логики, а сервер объединяет бизнес-логику и логику доступа к ресурсам. 'Тонкие' клиенты лучше использовать для работы с традиционными офисными приложениями. Двухзвенная модель (two-tier model) – это система 'клиент-сервер', в которую входят компьютеры клиента и сервера.

Архитектура клиент сервер

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

Двухзвенная модель 'клиент-сервер' подходит для небольших программ на уровне рабочей группы при числе пользователей менее 100 (конечно, в зависимости от того, что делают прикладные программы). В большинстве двухзвенных систем невозможно существенно увеличить это число. Многозвенная модель (three-tier model) – это система 'клиент-сервер', в которой промежуточное звено (компьютер) помещается между компьютером-клиентом и компьютером-сервером двухзвенной модели.

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

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

КАТЕГОРИИ: Архитектура информационных систем. Локальная, клиент-сервер, двух и трехуровневая архитектура. Лекция 2 Современные программные приложения и информационные системы достигли такого уровня развития, что термин 'архитектура' в применении к ним уже давно не удивляет. Грамотно построить информационную систему, эффективно и надежно функционирующую не проще, чем сконструировать и возвести современное многофункциональное здание. Когда речь заходит об 'архитектуре информационной системы', обычно не возникает недостатка в определениях. Есть даже Web-сайты, которые собирают такие определения.

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

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

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

Как можно видеть из вышеприведенных определений интеграция является важнейшим элементом архитектуры. Для того чтобы построить правильную и надежную архитектуру и грамотно спроектировать интеграцию программных систем необходимо четко следовать современным стандартам в этих областях. Без этого велика вероятность создать архитектуру, которая неспособна развиваться и удовлетворять растущим потребностям пользователей ИТ. В качестве законодателей стандартов в этой области выступают такие международные организации как SEI (Software Engineering Institute), WWW (консорциум World Wide Web), OMG (Object Management Group), организация разработчиков Java – JCP (Java Community Process), IEEE (Institute of Electrical and Electronics Engineers) и другие. Рассмотрим классификацию программных систем по их архитектуре: Централизованная архитектура; Архитектура 'файл-сервер'; Двухзвенная архитектура 'клиент-сервер'; Многозвенная архитектура 'клиент-сервер'; Архитектура распределенных систем; Архитектура Веб-приложений; Сервис-ориентированная архитектура.

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

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

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

Каждая разновидность БД осуществляет подобный контроль своими способами и обычно имеет встроенные средства разграничения доступа. Рисунок 1 – Локальная архитектура БД При использовании локальной БД в сети возможна организация многопользовательского доступа к ней. В этом случае файлы БД и предназначенное для работы с ней приложение располагаются на сервере сети. Каждый пользователь запускает со своего компьютера это расположенное на сервере приложение, при этом у него запускается копия приложения. Такой сетевой вариант использования локальной БД соответствует архитектуре «файл-сервер». Приложение при архитектуре «файл-сервер» также может быть записано и на каждый компьютер сети, в этом случае приложению отдельного компьютера должно быть известно местонахождение общей БД (рис.2).

Рисунок 2 – Архитектура «файл-сервер» При работе с данными на каждом пользовательском компьютере сети используется локальная копия БД. Эта копия периодически обновляется данными, содержащимися в БД на сервере. Архитектура «файл-сервер» обычно применяется в сетях с небольшим количеством пользователей, для ее реализации подходят персональные СУБД, например, Рагаdох или dBasе. Достоинствами этой архитектуры являются простота реализации, а также то, что приложение фактически разрабатывается в расчете на одного пользователя и не зависит от того, на каком компьютере в сети оно устанавливается. Достоинства такой архитектуры: многопользовательский режим работы с данными; удобство централизованного управления доступом; низкая стоимость разработки; высокая скорость разработки; невысокая стоимость обновления и изменения ПО. Однако архитектура «файл-сервер» имеет и существенные недостатки.

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

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

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

Рисунок 3 – Архитектура «клиент-сервер» Сервер – это сама СУБД. Он поддерживает все основные функции СУБД: определение данных, обработку данных, защиту данных, поддержание целостности данных и т.д. Клиент – это приложение пользователя. Для получения данных клиент формирует и отсылает запрос удаленному серверу, на котором размещена БД. Запрос формируется на языке SQL, который является стандартным средством доступа к серверу при использовании реляционных моделей данных. После получения запроса удаленный сервер направляет его SQL-серверу (серверу баз данных) – специальной программе, управляющей удаленной БД и обеспечивающей выполнение запроса и выдачу его результатов клиенту.

Архитектура Клиент Сервер

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

Сервер

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

Недостатками такой архитектуры являются: неработоспособность сервера может сделать неработоспособной всю вычислительную сеть; администрирование данной системы требует квалифицированного профессионала; высокая стоимость оборудования; бизнес логика приложений осталась в клиентском ПО. Для реализации архитектуры «клиент-сервер» обычно используются многопользовательские СУБД, например, Oracle или Мicrosoft SQL Server. Подобные СУБД также называют промышленными, так как они позволяют создать информационную систему организации или предприятия с большим числом пользователей.

Трёхуровневая архитектура – архитектурная модель программного комплекса, предполагающая наличие в нём трёх компонентов: клиента, сервера приложений (к которому подключено клиентское приложение) и сервера баз данных (с которым работает сервер приложений). Рисунок 5 – Архитектура «клиент-сервер» - трехуровневая архитектура Трехуровневая клиент-серверная архитектура, которая начала развиваться с середины 90-х годов, предусматривает отделение прикладного уровня от управления данными. Отделяется отдельный программный уровень, на котором сосредотачивается прикладная логика приложения.

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

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

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

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

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

Рассмотрим возможные граничные значения: «Тонкий» клиент. Этот термин определяет клиента, вычислительных ресурсов которого достаточно лишь для запуска необходимого сетевого приложения через web-интерфейс. Пользовательский интерфейс такого приложения формируется средствами статического HTML (выполнение JavaScript не предусматривается), вся прикладная логика выполняется на сервере. Для работы тонкого клиента достаточно лишь обеспечить возможность запуска web-браузера, в окне которого и осуществляются все действия. По этой причине web-браузер часто называют 'универсальным клиентом'.

Архитектуры Клиент Сервер Описание

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