Файл: Модель клиент-сервер (Применение модели «клиент-сервер» в разработке web-приложения).pdf
Добавлен: 26.04.2023
Просмотров: 481
Скачиваний: 1
СОДЕРЖАНИЕ
1.1. Понятие клиента и сервера
1.1.3 Понятие архитектуры клиент-сервер
1.2 Двухуровневая архитектура клиент-сервер
1.3. Многоуровневая архитектура клиент-сервер
1.4. Преимущества и недостатки
2. Применение модели «клиент-сервер» в разработке web-приложения
2.2. Алгоритм реализации решения
2.3. Описание необходимых элементов проекта
2.4. Создание и настройка проекта
2.5. Реализация серверной части
2.6. Реализация клиентской части
Введение
Развитие систем передачи и обработки информации позитивно сказалось на общедоступности различных полезных и нужных знаний. В наши дни информационные ресурсы передают огромные массы данных по всему миру, а пользователи могут получать необходимые тексты, файлы, изображения и другой контент практически мгновенно. Разумеется, благодаря внушительным размерам и мощности сети Интернет. Он состоит из множества вычислительных устройств, объединенных в сети. Информация между ними передаётся как на прямую, так и через посредников. Например, сообщения в мессенджерах передаются отправителем сначала на сервер, а затем с сервера на клиентское приложение получателю.
В данной работе мне бы хотелось осветить такую модель устройства информационных систем как «Клиент-сервер». Для этого подробно изучим, что из себя представляют клиенты, серверы, как они взаимодействуют между собой. Также отметим преимущества и недостатки модели. И, наконец, применим полученные знания в купе с имеющимися техническими навыками на практике, решив задачу по построению клиент-серверного веб-приложения.
1. Модель «клиент-сервер»
1.1. Понятие клиента и сервера
1.1.1 Основные определения
Архитектура информационной системы - концепция, которая определяет модель, структуру, выполняемые функции и взаимосвязь компонентов информационной системы.
Клиент-сервер (client-server) - вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемыми серверами, и заказчиками услуг, называемыми клиентами.
Сервер – это программа, представляющая какие-то услуги другим программам и обслуживающая запросы клиентов на получение ресурсов определенного вида.
Клиент – это программа, использующая услугу, представляемую программой сервера.
Часто люди клиентом или сервером называется просто компьютер, на котором работает какая-либо из этих программ. По сути, клиент и сервер – это роли, которые исполняются программами. Клиенты и сервера физически могут находиться на одном компьютере. Одна и та же программа может быть и клиентом, и сервером одновременно.
Редирект – перенаправление окна браузера на другую страницу.
Виджет – визуальный компонент страницы отображающий небольшой объем информации.
1.1.2. История
Основным недостатком персональных компьютеров является их невысокая вычислительная мощность и надежность, а также необходимость
приобретать дополнительные аппаратные средства для устранения изолированности отдельных персональных компьютеров друг от друга.
Как правило, пользователям компьютеров необходимы и высокая вычислительная мощность и превосходные свойства персональных компьютеров. Посему, там, где для выполнения сложных вычислений используются мощные изолированные центральные компьютеры с терминалами, их пользователям периодически приходится использовать персональные компьютеры для редактирования текстов или выполнения задач, использующих электронные таблицы. Это заставляет пользователей освоить две различные операционные системы (на больших машинах обычно установлены OC MVS, VMS, VM, UNIX, а на персональных - MS DOS/MS Windows, OS/2 или Mac) и не решает задачи совместного использования данных.
В результате опроса представителей 300 наикрупнейших фирм США, использующих персональные компьютеры, выяснилось, что для 81% опрошенных необходим доступ к данным более чем одного компьютера. Чтобы решить эту задачу, персональные компьютеры начали объединять в локальные сети и устанавливать на них специальные операционные системы, например, NetWare фирмы Novell, для совместного использования компьютерами сети файлов, размещенных в различных узлах сети. Эта технология называется файл-сервер.
Однако данная технология имеет ряд недостатков. Файл-серверы не позволяют в полной мере обеспечить конфиденциальность доступа и целостность данных. По сети файлы передаются в цело виде, независимо от того, какая часть данных внутри файлов нужна пользователю. Это сильно перегружает сеть и уменьшает быстродействие системы. Невысока также и надежность системы на основе файл-серверов. Сбой на одной из рабочих станций в момент записи файла приводит к потере или искажению данных. Для обеспечения непротиворечивости данных приходится блокировать файлы, что также приводит к замедлению работы. Естественным желанием специалистов в области вычислительной техники было совместить преимущества персональных компьютеров и мощных центральных компьютеров.
Первым шагом в этом направлении являлсь использование персональных компьютеров в качестве интеллектуальных терминалов. При таком подходе в персональном компьютере, соединенном с центральным компьютером, запускается специальное программное обеспечение, позволяющее этому персональному компьютеру работать в режиме эмуляции терминала. При этом мы получаем архитектуру, реализующую все достоинства архитектуры с мощным центральным компьютером, но, кроме того, персональный компьютер может использоваться и самостоятельно, по своему прямому назначению. Теперь нет необходимости иметь на столе 2 дисплея, однако большинство недостатков, присущих архитектуре с центральным компьютером, все еще сохраняется. Кроме того, хотя персональные компьютеры, имеющие дисплеи с картой VGA, позволяют работать с графикой, однако использовать их в качестве графического терминала большой центральной машины неудобно. Задача выполняется в центральном компьютере и по проводам передаются графические образы экрана. Эти образы довольно велики и скорость смены изображения на экране может быть очень низкой.
Следующим шагом в решении описанной выше проблемы стало использование архитектуры клиент-сервер. В такой архитектуре все компьютеры сети разделены на 2 группы: клиенты и серверы. Компьютер-сервер - это мощный компьютер с большой оперативной памятью и большим количеством дискового пространства. На нем хранится база данных и выполняется сложная обработка, требующая больших вычислительных ресурсов. На компьютерах-клиентах выполняются первичная обработка данных при вводе, форматирование данных, а также окончательная (финишная) обработка данных, извлеченных с сервера. В качестве компьютеров-клиентов обычно используются персональные компьютеры типа IBM PC или Macintosh. Преимущества архитектуры клиент-сервер очевидны. Каждый тип компьютера используется по своему назначению, следовательно, обеспечивается более полное использование возможностей компьютеров.
На компьютерах-клиентах работают знакомые пользователям PC пакеты, позволяющие предоставлять результаты работы всей системы в удобном для анализа и принятия решений виде. На этих компьютерах легко можно реализовать дружественный пользовательский интерфейс приложения, использующий графику, цвет, звук, работу с окнами и мышью и т.д. Компьютер-клиент позволяет быстро выполнять ввод и первичный контроль данных. Для финишной обработки данных могут использоваться те редакторы или пакеты электронных таблиц, которые пользователь считает наиболее удобными. В качестве компьютеров-клиентов могут одновременно использоваться компьютеры разных типов с различными операционными системами.
Архитектура клиент-сервер позволяет реализовать распределенную обработку, поскольку часть работы (интерфейс с пользователем, финишная обработка) выполняется на компьютере-клиенте, а часть - на компьютере-сервере. Это позволяет снизить загрузку сервера и оптимизировать его работу, а также увеличить число клиентов, одновременно работающих с сервером.
Наиболее часто архитектура клиент-сервер применяется для приложений, созданных с использованием систем управления базами данных.
Дальнейшим развитием архитектуры клиент-сервер явилось использование в сети не одного, а уже нескольких серверов баз данных. Это позволило перейти от работы с локальной базой данных к работе с распределенной базой данных. Причем работа с распределенной базой данных "прозрачна" для пользователя, т.е. он работает с ней так же, как с локальной базой данных, не задумываясь о том, на каком сервере лежат его данные. Пользователь обращается к одному из серверов, тот, не найдя у себя нужных данных, автоматически обращается к другим серверам.
Многосерверная архитектура стала очень перспективным направлением. Она позволяет заменить одну мощную центральную машину на несколько менее мощных и, следовательно, более дешевых, и еще больше распараллелить обработку данных. Кроме того, такая архитектура повышает надежность системы, поскольку при выходе из строя одного из серверов все приложения, работающие с данными других серверов, могут продолжать работу. При выходе из строя части локальной или глобальной сети система может попытаться найти альтернативный путь к нужному серверу (по другим ветвям сети). Кроме того, на локальных серверах могут храниться данные, наиболее часто используемые в данном узле, что позволяет свести к минимуму передачу данных по сети от сервера к серверу.
1.1.3 Понятие архитектуры клиент-сервер
Клиент-серверная система характеризуется наличием двух взаимодействующих самостоятельных процессов - клиента и сервера, которые, в общем случае, могут выполняться на разных компьютерах, обмениваясь данными по сети.
Модель «клиент-сервер» означает такую архитектуру программных средств, в которой его функциональные части взаимодействуют по схеме «запрос-ответ». Если рассмотреть две взаимодействующие части этой модели, то одна из них (клиент) выполняет активную функцию, то есть инициирует запросы, а другая (сервер) пассивно на них отвечает. По мере развития системы роли могут меняться, например некоторый программный блок будет одновременно выполнять функции сервера по отношению к одному блоку и клиента по отношению к другому.
Рис. 1.1. Модель клиент-сервер
Клиент и сервер взаимодействую друг с другом в сети Интернет или в любой другой компьютерной сети при помощи различных сетевых протоколов, например, IP протокол, HTTP протокол, FTP и другие. Клиент и сервер физически представляют собой программы, например, типичным клиентом является браузер. В качестве сервера можно привести следующие примеры: все HTTP сервера (в частности NodeJS), MySQL сервер, Elasticsearch сервер для полнотекстового.
Существует два вида архитектуры взаимодействия клиент-сервер: первый получил название двухзвенная архитектура клиент-серверного взаимодействия, второй – многоуровневая архитектура клиент-сервер.
1.2 Двухуровневая архитектура клиент-сервер
Данная архитектура получила распространение с начала 1990-х годов на фоне роста рынка персональных компьютеров и снижения спроса на мэйнфреймы.
Первоначально вышеописанные системы базировались на классической двухуровневой клиент-серверной архитектуре (Two-tier architecture). Под клиент-серверным приложением в этом случае понимается информационная система, основанная на использовании серверов баз данных.
Принцип работы двухуровневой архитектуры взаимодействия клиент-сервер заключается в том, что обработка запроса происходит на одной машине без использования сторонних ресурсов. Двухзвенная архитектура предъявляет жесткие требования к производительности сервера, но в тоже время является очень надежной.
Рис. 1.2. Двухуровневая модель взаимодействия клиент-сервер
На рисунке чётко видно два уровня: первый – клиент, отправляющий запросы и второй – сервер, отвечающий на запросы.
При проектировании информационной системы, основанной на архитектуре "клиент-сервер", большее внимание следует обращать на грамотность общих решений. Технические средства пилотной версии могут быть минимальными (например, в качестве аппаратной основы сервера баз данных может использоваться одна из рабочих станций). После создания пилотной версии нужно провести дополнительную исследовательскую работу, чтобы выяснить узкие места системы. Только после этого необходимо принимать решение о выборе аппаратуры сервера, которая будет использоваться на практике.