Архитектура клиент – сервер (client-server architecture) – это концепция информационной сети, в которой основная часть ее ресурсов сосредоточена в серверах, обслуживающих своих клиентов. Рассматриваемая архитектура определяет два типа компонентов: серверы и клиенты.
Сервер — это объект, предоставляющий сервис другим объектам сети по их запросам. Сервис – это процесс обслуживания клиентов.
Рисунок Архитектура клиент – сервер
Сервер работает по заданиям клиентов и управляет выполнением их заданий. После выполнения каждого задания сервер посылает полученные результаты клиенту, пославшему это задание.
Сервисная функция в архитектуре клиент – сервер описывается комплексом прикладных программ, в соответствии с которым выполняются разнообразные прикладные процессы.
Процесс, который вызывает сервисную функцию с помощью определенных операций, называется клиентом. Им может быть программа или пользователь. Клиенты – это рабочие станции, которые используют ресурсы сервера и предоставляют удобные интерфейсы пользователя. Интерфейсы пользователя это процедуры взаимодействия пользователя с системой или сетью.
Node.js #7 Клиент и сервер (Client & Server)
Рисунок Модель клиент-сервер
Клиент является инициатором и использует электронную почту или другие сервисы сервера. В этом процессе клиент запрашивает вид обслуживания, устанавливает сеанс, получает нужные ему результаты и сообщает об окончании работы.
В сетях с выделенным файловым сервером на выделенном автономном ПК устанавливается серверная сетевая операционная система. Этот ПК становится сервером. Программное обеспечение (ПО), установленное на рабочей станции, позволяет ей обмениваться данными с сервером. Наиболее распространенные сетевые операционная системы:
— NetWare фирмы Novel;
— Windows NT фирмы Microsoft;
Помимо сетевой операционной системы необходимы сетевые прикладные программы, реализующие преимущества, предоставляемые сетью.
Сети на базе серверовимеют лучшие характеристики и повышенную надежность. Сервервладеет главными ресурсами сети,к которым обращаются остальные рабочие станции.
В современной клиент – серверной архитектуре выделяется четыре группы объектов: клиенты, серверы, данные и сетевые службы. Клиенты располагаются в системах на рабочих местах пользователей. Данные в основном хранятся в серверах. Сетевые службы являются совместно используемыми серверами и данными. Кроме того службы управляют процедурами обработки данных.
Сети клиент – серверной архитектуры имеют следующие преимущества:
— позволяют организовывать сети с большим количеством рабочих станций;
— обеспечивают централизованное управление учетными записями пользователей, безопасностью и доступом, что упрощает сетевое администрирование;
— эффективный доступ к сетевым ресурсам;
— пользователю нужен один пароль для входа в сеть и для получения доступа ко всем ресурсам, на которые распространяются права пользователя.
Наряду с преимуществами сети клиент – серверной архитектуры имеют и ряд недостатков:
Как работает веб. Клиент-серверная архитектура. Веб разработка 1.1.
— неисправность сервера может сделать сеть неработоспособной, как минимум потерю сетевых ресурсов;
— требуют квалифицированного персонала для администрирования;
— имеют более высокую стоимость сетей и сетевого оборудования.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Архитектура информационной системы
Данное понятие можно сформулировать несколькими способами:
- Архитектура информационной системы – это концепция, определяющая модель, структуру, выполняемые функции и взаимосвязь компонентов информационной системы.
- Архитектура информационной системы – это абстрактное понятие, определяющее, из каких составных частей (элементов, компонент) состоит приложение и как эти части между собой взаимодействуют.
- Файл-серверная архитектура. Все общедоступные файлы хранятся на выделенном компьютере – файл-сервере. Файл-серверные приложения – это приложения, использующие сетевой ресур для хранения программы и данных. Функции сервера: хранение данных и кода программы. Функция клиента: обработка данных. Количество клиентов ограничено десятками. Положительные стороны: а) многопользовательский режим работы с данными; б) удобство централизованного управления доступом; в) низкая стоимость разработки. Отрицательные стороны: а) низкая производительность; б) низкая надёжность; в) слабые возможности расширения. Отрицательные стороны архитектуры с файловым сервером вытекают из того, что данные хранятся в одном месте, а обрабатываются в другом. Их нужно передавать по сети, что приводит к очень высоким нагрузкам на сеть и резкому снижению производительности приложения при увеличении числа одновременно работающих клиентов. Вторым важным недостатком является децентрализованное решение проблем целостности и согласованности данных и одновременного доступа к данным.
- Клиент-серверная архитектура. Ключевое отличие – абстрагирование от физической схемы данных и манипулирование данными клиентскими программами на уровне логической схемы. Это позволило создавать надёжные многопользовательские ИС с централизованной базой данных, независимые от аппаратной части сервера БД и поддерживающие графический интерфейс пользователя на клиентских станциях, связанных локальной сетью. Особенности: а) клиентская программа работает с данными через запросы к серверному ПО; б) базовые функции приложения разделены между клиентом и сервером. Положительные стороны: а) полная поддержка многопользовательской работы; б) гарантия целостности данных. Отрицательные стороны: а) Бизнес-логика приложений осталась в клиентском ПО. При любом изменении алгоритмов, надо обновлять пользовательское ПО на каждом клиенте. б) Высокие требования к пропускной способности коммуникационных каналов с сервером. в) Слабая защита данных от взлома, в особенности от недобросовестных пользователей системы. г) Высокая сложность администрирования и настройки рабочих мест пользователей системы. д) Необходимость использовать мощные ПК на клиентских местах. е) Высокая сложность разработки системы из-за необходимости выполнять бизнес-логику и обеспечивать пользовательский интерфейс в одной программе. Нетрудно заметить, что большинство недостатков классической или 2-слойной (2-уровневой) архитектуры клиент-сервер проистекают от использования клиентской станции в качестве исполнителя бизнес-логики ИС. Поэтому очевидным шагом дальнейшей эволюции архитектур ИС явилась идея «тонкого клиента»: алгоритмы обработки данных разбивались на части, связанные с выполнением бизнес-функций и отображением информации в удобном для человека представлении, часть, связанная с первичной проверкой и отображением информации, оставалась на клиентской машине, а вся реальная функциональность системы переносилась на серверную часть.
- Переходная архитектура (2,5-слойный клиент-сервер)Особенности: а) Использование хранимых процедур и вычисление данных на стороне сервера; б) использование систем управления базами данных (СУБД) со всеми их преимуществами; в) написание программ для серверной части, в основном, на специализированных встроенных языках СУБД, которые не позволяют написать всю бизнес-логику приложения, вследствие чего часть бизнес-логики все равно реализуется на стороне клиента; г) физически ИС состоит из двух компонентов. Положительные стороны: а) реализация вычислений на серверной стороне и передача по сети готовых результатов вычислений, что ведет к снижению требований к скорости передачи данных между клиентской и серверной частями; б) существенное улучшение защиты информации, так как пользователям даются права на доступ к функциям системы, а не к ее данным и т. д. Отрицательные стороны: а) ограниченная масштабируемость; б) зависимость от программной платформы; в) ограниченное использование сетевых вычислительных ресурсов; г) написание программ для серверной части системы на слабо предназначенных для этого встроенных в СУБД языках описания хранимых процедур; д) низкое быстродействие системы; е) высокая трудоемкость создания и модификации ИС; ж) высокая стоимость аппаратных средств, необходимых для функционирования.
- Трёхуровневая клиент-серверная архитектура Основное отличие от архитектуры 2.5 – физическое разделение программ, отвечающих за хранение данных (СУБД) и их обработку (сервер приложения (СП), applica-tion server (AS)). Такое разделение программных компонент позволяет оптимизировать нагрузки как на сетевое, так и на вычислительное оборудование комплекса. Положительные стороны: а) «Тонкий клиент». б) Между клиентской программой и сервером приложения передается лишь минимально необходимый поток данных — аргументы вызываемых функций и возвращаемые от них значения. Это теоретический предел эффективности использования линий связи. в) Сервер приложения ИС может быть запущен в одном или нескольких экземплярах на одном или нескольких компьютерах, что позволяет использовать вычислительные мощности организации столь эффективно и безопасно, как этого пожелает администратор ИС. г) Дешевый трафик между сервером приложений и СУБД. Трафик между сервером приложений и СУБД может быть большим, однако это всегда трафик локальной сети, а их пропускная способность достаточно велика и дешева. В крайнем случае, всегда можно запустить СП и СУБД на одной машине, что автоматически сведет сетевой трафик к нулю. д) Снижение нагрузки на сервер данных по сравнению с 2.5-слойной схемой, а значит, и повышение скорости работы системы в целом. е) Дешевле наращивать функциональность и обновлять ПО. Отрицательная сторона: а) Выше расходы на администрирование и обслуживание серверной части. Особенности: а) Широкие возможности масштабирования. Одна и та же система может работать как на одном отдельно стоящем компьютере, выполняя на нем программы СУБД, СП и клиентской части, так и в сети, состоящей из сотен и тысяч машин. Единственным фактором, препятствующим бесконечной масштабируемости, является лишь требование ведения единой базы данных. б) Упрощение расширения функциональных возможностей. В отличие от 2,5-слойной схемы нет необходимости менять всю систему – достаточно установить новый СП с требуемой функцией. По сравнению с 2-слойной схемой уменьшается число проблем, связанных с переустановкой клиентских частей программы на множестве компьютеров, быть может, весьма удаленных.
- Многозвенные архитектуры клиент-сервер. Являются прямым продолжением разделения приложений на уровни пользовательского интерфейса, компонентов обработки и данных. Различные звенья взаимодействуют в соответствии с логической организацией приложения. Во множестве бизнес-приложений распределенная обработка эквивалентна организации многозвенной архитектуры приложений клиент-сервер. Такой тип распределения называется вертикальным (ВР). Характористической особенностью вертикального распределения является то, что оно достигается размещением логически различных компонентов на разных машинах. В современных архитектурах распределение на клиенты и серверы происходит способом, известным как горизонтальное распределение (ГР). При таком типе распределения клиент или сервер могут содержать физически разделенные части логически однородного модуля, причем работа с каждой из частей может происходить независимо. Это делается для выравнивания загрузки.
Рисунок 9 демонстрирует архитектуру информационной системы.
Рис. 9. Архитектура информационной системы
Источник: studfile.net
Архитектурные особенности проектирования и разработки Веб-приложений
Аннотация: В данной лекции описываются архитектурные особенности построения Веб-приложений и применение шаблонов проектирования при их разработке, а также способы передачи данных в Веб.
Презентацию к данной лекции Вы можете скачать здесь.
5.1. Архитектура информационных систем
5.1.1. Общие сведения
Современные программные приложения и информационные системы достигли такого уровня развития, что термин » архитектура » в применении к ним уже давно не удивляет. Грамотно построить информационную систему, эффективно и надежно функционирующую не проще, чем сконструировать и возвести современное многофункциональное здание [1].
Когда речь заходит об «архитектуре информационной системы», обычно не возникает недостатка в определениях. Есть даже Web-сайты, которые собирают такие определения [2].
Рассмотрим определение «архитектуры информационной системы», которое дают различные источники:
- Архитектура – это организационная структура системы [3].
- Архитектура информационной системы – концепция, определяющая модель, структуру, выполняемые функции и взаимосвязь компонентов информационной системы [4].
- Архитектура – это базовая организация системы, воплощенная в ее компонентах, их отношениях между собой и с окружением, а также принципы, определяющие проектирование и развитие системы [5].
- Архитектура – это набор значимых решений по поводу организации системы программного обеспечения, набор структурных элементов и их интерфейсов, при помощи которых компонуется система, вместе с их поведением, определяемым во взаимодействии между этими элементами, компоновка элементов в постепенно укрупняющиеся подсистемы, а также стиль архитектуры , который направляет эту организацию – элементы и их интерфейсы, взаимодействия и компоновку [6].
- Архитектура программы или компьютерной системы – это структура или структуры системы, которые включают элементы программы, видимые извне свойства этих элементов и связи между ними [7].
- Архитектура – это структура организации и связанное с ней поведение системы [8]. Архитектуру можно рекурсивно разобрать на части, взаимодействующие посредством интерфейсов, связи, которые соединяют части, и условия сборки частей. Части, которые взаимодействуют через интерфейсы, включают классы, компоненты и подсистемы.
- Архитектура программного обеспечения системы или набора систем состоит из всех важных проектных решений по поводу структур программы и взаимодействий между этими структурами, которые составляют системы [9]. Проектные решения обеспечивают желаемый набор свойств, которые должна поддерживать система, чтобы быть успешной. Проектные решения предоставляют концептуальную основу для разработки системы, ее поддержки и обслуживания.
Хотя определения несколько отличаются, можно заметить немалую степень сходства. Например, большинство определений указывают на то, что архитектура связана со структурой и поведением, а также только со значимыми решениями, может соответствовать некоторому архитектурному стилю, на нее влияют заинтересованные в ней лица и ее окружение, она воплощает решения на основе логического обоснования.
Под архитектурой программных систем будем понимать совокупность решений относительно [1, 10]:
- организации программной системы;
- выбора структурных элементов, составляющих систему и их интерфейсов;
- поведения этих элементов во взаимодействии с другими элементами;
- объединение этих элементов в подсистемы;
- архитектурного стиля , определяющего логическую и физическую организацию системы: статические и динамические элементы, их интерфейсы и способы их объединения.
Архитектура программной системы охватывает не только ее структурные и поведенческие аспекты, но и правила ее использования и интеграции с другими системами, функциональность, производительность, гибкость, надежность, возможность повторного применения, полноту, экономические и технологические ограничения , а также вопрос пользовательского интерфейса.
По мере развития программных систем все большее значение приобретает их интеграция друг с другом с целью построения единого информационного пространства предприятия. Как можно видеть из вышеприведенных определений интеграция является важнейшим элементом архитектуры .
Для того чтобы построить правильную и надежную архитектуру и грамотно спроектировать интеграцию программных систем необходимо четко следовать современным стандартам в этих областях. Без этого велика вероятность создать архитектуру , которая неспособна развиваться и удовлетворять растущим потребностям пользователей ИТ. В качестве законодателей стандартов в этой области выступают такие международные организации как SEI (Software Engineering Institute), WWW (консорциум World Wide Web), OMG (Object Management Group), организация разработчиков Java – JCP (Java Community Process), IEEE (Institute of Electrical and Electronics Engineers) и другие.
Рассмотрим классификацию программных систем по их архитектуре :
- Централизованная архитектура ;
- Архитектура «файл-сервер» ;
- Двухзвенная архитектура «клиент-сервер» ;
- Многозвенная архитектура «клиент-сервер» ;
- Архитектура распределенных систем ;
- Архитектура Веб-приложений ;
- Сервис-ориентированная архитектура .
Следует заметить, что, как и любая классификация, данная классификация архитектур информационных систем не является абсолютно жесткой. В архитектуре любой конкретной информационной системы часто можно найти влияния нескольких общих архитектурных решений.
Далее подробно рассмотрим особенности каждой архитектуры .
5.1.2. Централизованная архитектура
Централизованная архитектура вычислительных систем была распространена в 70-х и 80-х годах и реализовывалась на базе мейнфреймов (например, IBM-360/370 или их отечественных аналогов серии ЕС ЭВМ), либо на базе мини-ЭВМ (например, PDP-11 или их отечественного аналога СМ-4) [11]. Характерная особенность такой архитектуры – полная «неинтеллектуальность» терминалов . Их работой управляет хост-ЭВМ.
Достоинства такой архитектуры [11, 12]:
- пользователи совместно используют дорогие ресурсы ЭВМ и дорогие периферийные устройства;
- централизация ресурсов и оборудования облегчает обслуживание и эксплуатацию вычислительной системы;
- отсутствует необходимость администрирования рабочих мест пользователей;
Главным недостатком для пользователя является то, что он полностью зависит от администратора хост-ЭВМ. Пользователь не может настроить рабочую среду под свои потребности – все используемое программное обеспечение является коллективным.
Использование такой архитектуры является оправданным, если хост-ЭВМ очень дорогая, например, супер-ЭВМ .
Классическое представление централизованной архитектуры показано на рис. 5.1.
Рис. 5.1. Классическое представление централизованной архитектуры
Центральная ЭВМ должна иметь большую память и высокую производительность, чтобы обеспечивать комфортную работу большого числа пользователей.
Все приложения, работающие в такой архитектуре , полностью находятся в основной памяти хост-ЭВМ. Терминалы являются лишь устройствами ввода-вывода и таким образом в минимальной степени поддерживают интерфейс пользователя.
5.1.3. Архитектура «файл-сервер»
Файл-серверные приложения – приложения, схожие по своей структуре с локальными приложениями и использующие сетевой ресурс для хранения программы и данных [13].
- Функции сервера: хранения данных и кода программы.
- Функции клиента: обработка данных происходит исключительно на стороне клиента.
Классическое представление информационной системы в архитектуре «файл-сервер» представлено на рис. 5.2.
Рис. 5.2. Классическое представление архитектуры «файл-сервер»
Организация информационных систем на основе использования выделенных файл-серверов все еще является распространенной в связи с наличием большого количества персональных компьютеров разного уровня развитости и сравнительной дешевизны связывания PC в локальные сети [14].
Конечно, основным достоинством данной архитектуры является простота организации. Проектировщики и разработчики информационной системы находятся в привычных и комфортных условиях IBM PC в среде MS-DOS, Windows или какого-либо облегченного варианта Windows Server. Имеются удобные и развитые средства разработки графического пользовательского интерфейса, простые в использовании средства разработки систем баз данных и/или СУБД.
Достоинства такой архитектуры [12, 13, 14]:
- многопользовательский режим работы с данными;
- удобство централизованного управления доступом;
- низкая стоимость разработки;
- высокая скорость разработки;
- невысокая стоимость обновления и изменения ПО.
- проблемы многопользовательской работы с данными: последовательный доступ, отсутствие гарантии целостности;
- низкая производительность (зависит от производительности сети, сервера, клиента);
- плохая возможность подключения новых клиентов;
- ненадежность системы.
Простое, работающее с небольшими объемами информации и рассчитанное на применение в однопользовательском режиме, файл-серверное приложение можно спроектировать, разработать и отладить очень быстро [14]. Очень часто для небольшой компании для ведения, например, кадрового учета достаточно иметь изолированную систему, работающую на отдельно стоящем PC. Однако, в уже ненамного более сложных случаях (например, при организации информационной системы поддержки проекта, выполняемого группой) файл-серверные архитектуры становятся недостаточными.
5.1.4. Архитектура «клиент-сервер»
Клиент-сервер ( Client-server ) – вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемых серверами, и заказчиками услуг, называемых клиентами [15]. Нередко клиенты и серверы взаимодействуют через компьютерную сеть и могут быть как различными физическими устройствами, так и программным обеспечением.
Первоначально системы такого уровня базировались на классической двухуровневой клиент-серверной архитектуре (Two- tier architecture). Под клиент-серверным приложением в этом случае понимается информационная система, основанная на использовании серверов баз данных .
Схематически такую архитектуру можно представить, как показано на рис. 5.3 [16].
Рис. 5.3. Классическое представление архитектуры «клиент-сервер»
На стороне клиента выполняется код приложения, в который обязательно входят компоненты, поддерживающие интерфейс с конечным пользователем, производящие отчеты, выполняющие другие специфичные для приложения функции.
Клиентская часть приложения взаимодействует с клиентской частью программного обеспечения управления базами данных, которая, фактически, является индивидуальным представителем СУБД для приложения.
Заметим, что интерфейс между клиентской частью приложения и клиентской частью сервера баз данных , как правило, основан на использовании языка SQL. Поэтому такие функции, как, например, предварительная обработка форм, предназначенных для запросов к базе данных, или формирование результирующих отчетов выполняются в коде приложения.
Наконец, клиентская часть сервера баз данных , используя средства сетевого доступа, обращается к серверу баз данных , передавая ему текст оператора языка SQL.
Посмотрим теперь, что же происходит на стороне сервера баз данных . В продуктах практически всех компаний сервер получает от клиента текст оператора на языке SQL.
- Сервер производит компиляцию полученного оператора.
- Далее (если компиляция завершилась успешно) происходит выполнение оператора.
Разработчики и пользователи информационных систем, основанных на архитектуре «клиент-сервер», часто бывают неудовлетворены постоянно существующими сетевыми накладными расходами, которые следуют из потребности обращаться от клиента к серверу с каждым очередным запросом. На практике распространена ситуация, когда для эффективной работы отдельной клиентской составляющей информационной системы в действительности требуется только небольшая часть общей базы данных. Это приводит к идее поддержки локального кэша общей базы данных на стороне каждого клиента.
Фактически, концепция локального кэширования базы данных является частным случаем концепции реплицированных баз данных. Как и в общем случае, для поддержки локального кэша базы данных программное обеспечение рабочих станций должно содержать компонент управления базами данных – упрощенный вариант сервера баз данных , который, например, может не обеспечивать многопользовательский режим доступа. Отдельной проблемой является обеспечение согласованности (когерентности) кэшей и общей базы данных. Здесь возможны различные решения – от автоматической поддержки согласованности за счет средств базового программного обеспечения управления базами данных до полного перекладывания этой задачи на прикладной уровень.
Преимуществами данной архитектуры являются [12, 15]:
- возможность, в большинстве случаев, распределить функции вычислительной системы между несколькими независимыми компьютерами в сети;
- все данные хранятся на сервере, который, как правило, защищен гораздо лучше большинства клиентов, а также на сервере проще обеспечить контроль полномочий, чтобы разрешать доступ к данным только клиентам с соответствующими правами доступа;
- поддержка многопользовательской работы;
- гарантия целостности данных.
- неработоспособность сервера может сделать неработоспособной всю вычислительную сеть;
- администрирование данной системы требует квалифицированного профессионала;
- высокая стоимость оборудования;
- бизнес логика приложений осталась в клиентском ПО.
При проектировании информационной системы, основанной на архитектуре «клиент-сервер», большее внимание следует обращать на грамотность общих решений. Технические средства пилотной версии могут быть минимальными (например, в качестве аппаратной основы сервера баз данных может использоваться одна из рабочих станций). После создания пилотной версии нужно провести дополнительную исследовательскую работу, чтобы выяснить узкие места системы. Только после этого необходимо принимать решение о выборе аппаратуры сервера, которая будет использоваться на практике.
Увеличение масштабов информационной системы не порождает принципиальных проблем. Обычным решением является замена аппаратуры сервера (и, может быть, аппаратуры рабочих станций, если требуется переход к локальному кэшированию баз данных). В любом случае практически не затрагивается прикладная часть информационной системы.
Также данный вид архитектуры называют архитектурой с «толстым» клиентом.
Источник: intuit.ru