logo
Проектирование инт-прил / лекции / Проектирование инет приложений

Одно-, двух- и многоуровневые приложения.

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

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

Изначально все компоненты приложения - начиная от общения с пользователем и заканчивая хранением данных - находились на одном компьютере. Это были так называемые централизованные, или однопроцессорные системы.

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

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

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

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

Еще одним примером работы архитектуры "клиент-сервер" может служить простейший сайт, состоящий из нескольких статических страниц. Для его работы нужны два компонента: http-сервер, который слушает запросы и готов в ответ на соответствующий запрос выдать определенную страницу. И клиентская часть, так называемый "браузер", установленный на компьютере пользователя.

Время и эволюция выявили недостатки архитектуры "клиент-сервер", а именно:

Дальнейшее развитие привело к созданию трех- и более уровневых систем. Более того, каждый уровень представляется не обязательно одним компьютером. Система становится распределенной. Как в пространственном отношении, то есть серверная часть интернет-приложения больше не находится только на одном компьютере, а представляет собой несколько компьютеров, в общем случае удаленных друг от друга. Так и в функциональном отношении: отдельные функции серверной части выполняются на отдельных компьютерах. Распределенная система - это набор независимых компьютеров, представляющийся их пользователям единой объединенной системой. В этом определении оговариваются два момента. Первый относится к аппаратуре: все компьютеры автономны. Второй касается программного обеспечения: пользователи думают, что имеют дело с единой системой. От пользователей скрыты различия между входящими в систему компьютерами и способы связи между ними. Распределение функций приводит к повышению надежности работы системы в целом, дает возможность масштабирования. Распределенные системы обычно существуют постоянно, однако некоторые их части могут временно выходить из строя. Для взаимодействия между собой различных компонент системы, для того, чтобы они "понимали" друг друга, они должны соблюдать некоторые правила, называемые протоколом передачи данных. Существует 7 уровней таких правил, от физического уровня (что происходит в канале связи) до прикладного уровня (какими правилами должно руководствоваться приложение, чтобы получить сетевой сервис). Уровни описываются так называемой сетевой моделью OSI, OpenSystemInterconnection. Базовый уровень сети Интернет наиболее часто использует протоколы IP (InternetProtocol) иTCP(TransportControlProtocol). Различные части системы, в общем случае расположенные на разных компьютерах, взаимодействуют между собой через Интернет, используя так называемые "сокеты".