Главная / ШКОЛА НАДПРОФ / Телеги технической мудрости / Архитектура «Клиент-сервер»
Архитектура «Клиент-сервер»
Базовые понятия
Сервер это программа, представляющая какие-то услуги другим программам. Примеры серверов вебсервер Apache, серверы баз данных MySQL, ORACLE, сетевые файловые системы и принтера Windows.
Клиент это программа, использующая услугу, представляемую программой сервера. Примеры клиентов MSIE (MS Internet Explorer), клиент ICQ.
Часто люди клиентом или сервером просто называют компьютер, на котором работает какая-то из этих программ.
В сущности клиент и сервер это роли, исполняемые программами. Клиенты и сервера физически могут находиться на одном компютере. Одна и та же программа может быть и клиентом, и сервером одновременно, итд… это только роли.
Если проводить аналогию с обществом банк или магазин «сервера». Они представляют какие-то услуги своим клиентам. Но банк может в то же время быть клиентом какой-то другой фирмы итд…
История…
Архитектура и термин «клиент-сервер» впервые использовались в начале 80-тых годов. Первые приложения с архитектурой «клиент-сервер» были базы данных.
До этого не было ясного разделения программа обычно всё делала сама в том числе работала с данными в файловой системе, представлением данных пользователю и др. Со временем рос обьем и критичность данных для бизнеса, и это со временем начало породить проблемы (быстродействия, безопасности и другие).
Тогда придумали, что удобно поставить базу данных на мощном отдельном компютере (сервере) и разрешить эту базу данных использовать многим пользователям малого компютера (клиентам) через сеть. Так и сделали.
По существу «взрыв» популярности технологии «клиент-сервер» был вызван изобретением фирмой IBM
простого языка запросов к реляционным базам данных SQL (Structured Query Language http://www.w3schools.com/sql/sql_intro.asp). Сегодня SQL всеобщий стандарт работы с базами данных. В последнее время этот «взрыв» продолжает изобретение Интернета, в котором буквально каждое взаимодействие происходит по архитектуре «клиент-сервер».
Протоколы
Сервер и клиент в сети между собой «разгаваривает» на «языке» (в широком смысле слов), понятном обеим
сторонам. Этот «язык» называют протоколом.
В случае банка, протоколом можно назвать бланки, которые заполняет клиент.
В нашем же случае, примеры протоколов:
- FTP (File Transfer Protocol)
- HTTP (Hyper Text Transfer Protocol)
- SMTP (Simple Mail Transfer Protocol)
- IP (Internet Protocol)
- MySQL Client/Server Protocol
Ещё добавлю, что протоколы может быть разных уровней. Классификационные системы уровней может быть разные, но одна из самых известных линеек OSI (Open Systems Interconnection http://citforum.novgorod.net/nets/protocols/1_01_02.shtml), в котором 7 уровней.
Например, HTTP протокол прикладного (седьмого самого высокого) уровня, а IP протокол сетевого (третьего) уровня.
Описание действия
На «языке» протокола клиент отправляет серверу команду, которую тот понимает, выполняет и отправляет клиенту результат выполнения.
Примеры «разговора»
1) Пример «two-tier» архитектуры (потому что разговаривают двое)
Схема 1:
MSIE <----> Apache
Например, запрошена страница /news/index.html
- (Apache) (ожидает запрос)
- (MSIE) Здравствуй!
- (Apache) Здравствуй!
- (MSIE) Сияешь?
- (Apache) Сияю!
- (MSIE) Давай страницу /news/index.html
- (Apache) (находит страницу HTML index.html в директории /news)
- (Apache) Получай!
- (MSIE) (получает текст HTML страницы)
- (MSIE) Пока!
- (Apache) Пока!
- (Apache) (ожидает следующий запрос)
- (MSIE) (переобразовывает HTML на понятный людям вид и показывает страницу пользователю)
«Разговор» может быть сложнее («three-tier», «n-tier» и других подвидов архитектуры «клиент-сервер»).
2) Пример «three-tier» архитектуры (разговаривают трое)
Схема 2:
MSIE <----> Apache <----> MySQL
Например, если запрошена страница /news/index.php с кодом написанном на языке PHP, и в этом коде запрос к базе данных MySQL, которая находится на другом компьютере.
В этом случае вместо 7.шага будет что-то такое…
7.1 (Apache) (находит PHP страницу index.php в директории /news)
7.2 (Apache) (выполняет код PHP на сервере, в том числе запрашивает, ожидает и получает данные от MySQL сервера)
7.3 (Apache) (делает страницу HTML из результатов выполненного кода PHP)
Для дальнейшего чтения: http://compnetworking.about.com/cs/clientserver/
Ингарс, wu_20045@yahoo.com
Поправочка
Скорее все выглядит примерно так:
- (Apache) (ожидает запрос)
- (MSIE) Здравствуй!
Сияешь?
Давай страницу /news/index.html
Пока!
- (Apache) Здравствуй!
Сияю!
(находит страницу HTML index.html в директории /news)
Получай!
Пока!
(ожидает следующий запрос)
- (MSIE) (получает текст HTML страницы)
(переобразовывает HTML на понятнюй людям вид и показывает страницу пользователю)
Причем общение MSIE и Apache уложилось в два шага 2 и 3, вопрос-ответ, в соответствии с архитектурой протокола. Вопрос содержит сразу все что нужно, ответ, соот-но тоже.
Цепочек последовательных уточняющих вопрос-ответов в HTTP нет. Это особенность протокола. HTTP протокол без состояния, каждый новый запрос совершенно не зависит предыдущего. В этом его сила, но в этом же и слабость.
dim dimsmol@rambler.ru
|