Файл: Технология «клиент-сервер» (Общие сведения о программных системах).pdf

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

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

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

Добавлен: 14.03.2024

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

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

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

Содержание:

ВВЕДЕНИЕ

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

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

В качестве объекта исследования данной работы выступает клиент-серверная архитектура.

Предметом исследования являются изучение основных понятий клиент-серверной архитектуры.

Целью данной работы является обобщение имеющейся информации по вопросам функционирования клиент-серверной архитектуры

На основании поставленной цели сформулированы следующие задачи:

1. Проанализировать информации из литературных источников по теме исследования.

2. Провести обзор клиент-серверной архитектуры программных систем.

3. Исследовать современные примеры облачных решений.

4. Разработать программное обеспечение, работающее по клиент-серверной архитектуре.

ГЛАВА 1. ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММНЫХ СИСТЕМАХ

1.1. Основные понятия и терминология программных систем

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


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

1.2. Основные понятия и терминология архитектуры программных систем

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

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

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


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

1.3. Клиент-серверная архитектура программных систем

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

Исторически архитектура клиент-сервер содержала графическое приложение пользовательского интерфейса рабочего стола, которое сообщалось с сервером базы данных [6], содержащим большую часть бизнес-логики, в виде хранимых процедур или с выделенным файловым сервером. Однако в целом архитектурный стиль клиент-сервер описывает взаимосвязь между клиентом с одним или несколькими серверами, где клиент инициирует один или несколько запросов (возможно, используя графический интерфейс), ждет ответов и обрабатывает ответы при получении. Сервер обычно авторизует пользователя, а затем выполняет обработку запросов, необходимую для генерации результата. Сервер может отправлять ответы с использованием ряда протоколов и форматов данных для передачи информации клиенту [2].

Сегодня некоторые примеры архитектурного стиля клиент-сервер включают:

- программы на основе веб-браузера, работающего в Интернете или в интрасети;

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


- приложения, обращающиеся к удаленным хранилищам данных (например, почтовые программы, FTP-клиенты и инструменты запросов к базе данных);

- инструменты и утилиты, управляющие удаленными системами (такими как инструменты удаленного управления системой и инструменты сетевого мониторинга).

Кроме этого, данная архитектура может использоваться для взаимодействия между программными компонентами одного компьютера (примером может являться система X Window Server, позволяющая создавать графический интерфейс во многих UNIX подобных системах).

Другие варианты архитектуры клиент/сервер включают:

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

Очередь

Клиент N

Клиент 2

Клиент 1

Рисунок 1 – Подход Клиент-Очередь-Клиент.

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

Клиент 1

(Сервер)

Клиент 2

(Сервер)

Клиент 3

(Сервер)

Рисунок 2 – Одноранговые (P2P) приложения.

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

Служба терминалов

Терминал N

Терминал 2

Терминал 1

Рисунок 3 – Серверы приложений.

Основными преимуществами архитектурного стиля клиент-сервер являются:

- Повышенная безопасность. Все данные хранятся на сервере, который обычно обеспечивает более высокий контроль над безопасностью, чем клиентские машины.


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

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

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

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

Недостатком клиент-серверной архитектуры является то, что на сервер сильно возрастает нагрузка. Для решения этой проблемы часто используют несколько серверов, каждый из которых решает отдельные задачи. Так, один сервер может обрабатывать запросы клиентов, второй - выполнять вычисления, третий координирует работу системы и балансирует нагрузку. Обычно в сети серверы соединяются последовательно друг с другом, то есть позвенно. Это приводит к тому, что выход из строя одного из звеньев может серьезно затруднить работу всей системы или даже полностью ее остановить [3].

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