Одно-, двух- и многоуровневые приложения.
Примерно до 1985 года компьютеры были большими и дорогими. Даже мини-компьютеры стоили сотни тысяч долларов. В результате большинство организаций имели в лучшем случае лишь несколько компьютеров, которые работали независимо друг от друга.
В общем случае можно выделить три компоненты приложения:
Интерфейс пользователя
правила обработки данных, прикладные функции, характерные для данной предметной области (бизнес-логика).
управление данными, их хранение и выдача.
Изначально все компоненты приложения - начиная от общения с пользователем и заканчивая хранением данных - находились на одном компьютере. Это были так называемые централизованные, или однопроцессорные системы.
Ситуация начала меняться из-за появления двух технических новинок: стремительно дешевеющих процессоров 16, 32 и 64 разрядности и появления высокоскоростных компьютерных сетей. Развитие сетевых технологий привело к выделению одного из компьютеров в качестве сервера. Централизованное хранение данных минимизировало затраты на администрирование и обеспечение сохранности и позволяло нескольким пользователям сети работать с одними и теми же данными (файл-серверная архитектура). При этом у каждого из клиентов было "полнометражное" приложение, так называемый "толстый клиент".
"Толстый клиент" - это клиентское приложение, которое несет в себе всю логику работы с данными, независимо от центрального сервера. Сервер при этом выступает лишь хранилищем, никакой обработки данных на сервере не производится. Основной недостаток такого подхода: сбой на любой из рабочих станций может привести к потере данных или их недоступности для всех остальных участников системы.
Исторически следующей ступенькой явилась двухуровневая архитектура, так называемая "архитектура клиент-сервер". Архитектура характеризуется наличием двух взаимодействующих (но самостоятельных) процессов, клиента и сервера, которые могут находиться на разных компьютерах и взаимодействовать между собой через сеть. Как правило, в качестве "сервера" рассматривался SQL сервер.SQL-StructuredQueryLanguage- структурированный язык запросов, предназначенный для создания, модификации и управления данными. Термином "SQL-сервер" зачастую называют любую, обобщенную систему управления данными, поддерживающую язык SQL. Выделение SQL-сервера дает следующие преимущества:
Он имеет более оптимальный способ хранения и разделения данных, чем на уровне файлов. Неисправности на рабочих станциях не приводят к блокировкам или порче данных.
Масштабируемость, способность системы адаптироваться к росту количества пользователей и/или объема обрабатываемых данных за счет повышения производительности аппаратной части, без изменения программной.
Безопасность работы с данными. Единое администрирование системы, наличие прав у пользователей, их "ролей" в системе. В итоге каждый пользователь может получить только те данные, которые он вправе видеть.
Сохранность данных. Встроенные механизмы создания резервных копий базы. Атомарность, или механизм транзакций. Атомарность, то есть логическая целостность, неделимость транзакции - это такой способ выполнения операций с данными. Есть несколько операторов друг за другом. И они либо успешно выполняются все целиком, либо база возвращается в первоначальное состояние, как будто на ней не выполнялось ни одной операции вообще. Простейший пример транзакции: две операции подряд, деньги снимаются с одного счета и зачисляются на другой. Либо они будут успешно зачислены на счет получателя, либо, если в ходе операций возникает ошибка - сумма полностью остается на счете отправителя. Существование такого механизма позволяет минимизировать риски нарушения целостности данных при возникновении нештатных ситуаций, скажем, сбое питания или сети.
На сервер возлагается задача обработки данных - "бизнес-логика", реализованная
в виде хранимых процедур. Что приводит к "худению" клиента. "Худым клиентом" называют такой вариант клиентской программы, который содержит в себе только реализацию общения с пользователем, а все задачи по обработке данных при этом выполняются на сервере. Такой подход приводит к уменьшению затрат на аппаратную часть и эксплуатационных расходов на клиентской стороне.
Еще одним примером работы архитектуры "клиент-сервер" может служить простейший сайт, состоящий из нескольких статических страниц. Для его работы нужны два компонента: http-сервер, который слушает запросы и готов в ответ на соответствующий запрос выдать определенную страницу. И клиентская часть, так называемый "браузер", установленный на компьютере пользователя.
Время и эволюция выявили недостатки архитектуры "клиент-сервер", а именно:
Неработоспособность сервера автоматически ведет к неработоспособности всей системы.
"Неработоспособным" следует считать в том числе и сервер, производительности которого не хватает на обслуживание всех поступающих клиентских запросов.
Высокая стоимость сервера.
Дальнейшее развитие привело к созданию трех- и более уровневых систем. Более того, каждый уровень представляется не обязательно одним компьютером. Система становится распределенной. Как в пространственном отношении, то есть серверная часть интернет-приложения больше не находится только на одном компьютере, а представляет собой несколько компьютеров, в общем случае удаленных друг от друга. Так и в функциональном отношении: отдельные функции серверной части выполняются на отдельных компьютерах. Распределенная система - это набор независимых компьютеров, представляющийся их пользователям единой объединенной системой. В этом определении оговариваются два момента. Первый относится к аппаратуре: все компьютеры автономны. Второй касается программного обеспечения: пользователи думают, что имеют дело с единой системой. От пользователей скрыты различия между входящими в систему компьютерами и способы связи между ними. Распределение функций приводит к повышению надежности работы системы в целом, дает возможность масштабирования. Распределенные системы обычно существуют постоянно, однако некоторые их части могут временно выходить из строя. Для взаимодействия между собой различных компонент системы, для того, чтобы они "понимали" друг друга, они должны соблюдать некоторые правила, называемые протоколом передачи данных. Существует 7 уровней таких правил, от физического уровня (что происходит в канале связи) до прикладного уровня (какими правилами должно руководствоваться приложение, чтобы получить сетевой сервис). Уровни описываются так называемой сетевой моделью OSI, OpenSystemInterconnection. Базовый уровень сети Интернет наиболее часто использует протоколы IP (InternetProtocol) иTCP(TransportControlProtocol). Различные части системы, в общем случае расположенные на разных компьютерах, взаимодействуют между собой через Интернет, используя так называемые "сокеты".
- Оглавление
- Введение.
- Предмет рассмотрения данного курса.
- Одно-, двух- и многоуровневые приложения.
- Интернет.
- Адрес в интернете
- 2001:0Db8:11a3:09d7:1f34:8a2e:07a0:765d
- Имя в интернете
- Службы (сервисы)
- Сокета.
- Что такое "сокета" (socket) ?
- Создание серверной сокеты (пример на языке c).
- Сериализация
- Основы верстки: таблицы
- Основы верстки: фреймы
- Основы верстки: позиционирование участков сайта
- Протокол http
- Структура запроса (Request).
- Структура ответа (Response).
- Перспективы развития http.
- Интернет-приложения
- Web-приложения
- Web-сервисы
- Особенности проектирования
- Особенности пользовательского интерфейса
- Программирование интернет-приложений
- Объектно-ориентированное программирование
- Классы и объекты
- Жизненный цикл класса
- Статические члены класса
- Инкапсуляция
- Наследование
- Полиморфизм
- Интерфейсы
- Событийно-ориентированное программирование
- Совместная работа над проектом
- Технологии создания web-клиентов
- Dom (Document Object Model)
- Каскадные таблицы стилей
- JavaScript
- Обфускация и динамическое получение скриптов
- Java Applets
- ActiveX/npapi
- Adobe Flash
- Web-серверы
- Nginx (engine X)
- Технологии, применяемые на стороне сервера
- ИнтерфейсCgi
- КонцепцияMvc
- Сервлеты
- JavaScript
- Хранение данных