Правильная ссылка на эту страницу
http://az-design.ru/Projects/AzBook/Begin/ClntSrv.shtml

Неформальное введение в системы Клиент/Сервер

       Конечно, базы данных ориентированные для настольных систем, такие как Paradox, DBase и прочие, отличались простотой и неприхотливостью. Но попытка их применения в многопользовательском варианте, как правило приводила к потере данных и разрушению самой базы данных. Правда разработчики этого не признавали и, например, Microsoft, до сих пор считает, что MS Access может работать в сети, но на самом деле это не так.
       С появлением систем типа "Клиент/Сервер" все изменилось и не только в базах данных.
       Суть систем типа "Клиент/Сервер" можно продемонстрировать на простом прмере:
       Собралась компания друзей и захотела перекусить, например, пиццей. Что происходит?
       — Один из них звонит в фирму "Пицца-Сервис" и делает заказ — Пицца с сыром, Пицца с грибами, Пицца с ветчиной.
       — в фирме "Пицца-Сервис" один делает пиццу с сыром, другой — пиццу с грибами, третий — пиццу с ветчиной, четвертый — укладывает это все в коробку, пятый — прикладывает ко всему этому счет, адрес доставки и выдает курьеру.
       — Курьер доставляет ВЕСЬ ЗАКАЗ веселой компании.
       Что принципиально важно в этом примере?
       — То, что фирма "Пицца-Сервис" обладает большими возможностями, чем персональная кухня, далеко не главное. Более того, веселую компанию (Клиент) даже не интересует какие возможности имеет фирма "Пицца-Сервис" (Сервер) и что там внутри происходит. Клиента даже не интересует где эта фирма (Сервер) находится. Клиент просто посылает ЗАПРОС.
       — Фирму "Пицца-Сервис" (Сервер) не интересует ни состав компании (Клиент), ни зачем ей пицца. Сервер просто отправляет ОТВЕТ на ЗАПРОС.
       — И, наконец, самое главное! Фирма "Пицца-Сервис" (Сервер) доставляет весь заказ целиком, или сообщает, что не может выполнить заказ и причину отказа. Сервер не может отправить частичный ответ (например, вместо пиццы прислать отдельно лепешку и отдельно грибы). Сервер возвращает либо законченный результат запроса, либо ошибку и откат на предыдущий уровень. Так появилось понятие транзакции. Транзакция — это набор элементарных действий, которые выполняются как единое целое.
       Системы "Клиент/Сервер" обладают очень высокой надежностью, потому что все действия выполняются на сервере и под управлением сервера. Клиенты же, по сути, изолированы от действий — они могут только делать запросы и получать на них ответы. И, несмотря на это, даже в этом примере видно где могут возникнуть проблемы:
       — Сервер может не получить ЗАПРОС, если оборвана линия связи с Клиентом;
       — Клиент может не получить ОТВЕТ, если линия связи оборвалась после отправки ОТВЕТА Сервером. Например, курьер попал в аварию.
       — Клиент может не получить ОТВЕТ, если после получения ЗАПРОСА Сервер остановил работу. Например, пришла санэпидемстанция и приказала остановить работу.
       Системы типа "Клиент/Сервер" окружают нас со всех сторон. Например, WEB-сайты — это типичные представители систем "Клиент/Сервер". Когда пользователь щелкает по ссылке на странице, то он делает ЗАПРОС вида "GET URL=http://www.azdesign.ru/index.shtml". В ответ WEB-Сервер посылает пользователю указанную страницу. И если на этой странице Вы увидите надпись "В настоящее время на сайте находится 10 человек", то знайте, что разработчик сайта ничего не понимает в системах "Клиент/Сервер". Если вернуться в "веселой компании", то можно задать такой же вопрос "Сколько клиентов находится в фирме "Пицца-Сервис"?" — нисколько. Все клиенты сидят дома и ждут когда им привезут пиццу.
       В итоге схему работы систем типа "Клиент/Сервер" можно представить следующим образом:


Рис.11 схема работы системы типа "Клиент/Сервер"

       Пользователь, желая получить какой-то результат, передает команду (запрос) клиенту. В случае баз данных в качестве клиента выступает небольшая программа, которая знает как связаться с сервером и каким образом передать ему информацию. В случае "веселой компании" в качестве клиента выступал телефон.
       Сервер, получив команду (запрос), что-то делает с базой данных и результат отправляет клиенту.
       Исторически сложилось, что для управления базами данных используется язык SQL. Хотя вполне могут использоваться и другие языки. В качестве "Пользователя" в данном случае выступает некоторая программа, которая получает от человека команды в привычном для него виде и отображает результаты в красивом или не очень виде. Это может быть очень простая программа типа ISQL, которая поставляется практически с каждой СУБД. Или мощная система проектирования баз данных типа ERWin (или ей подобные). Для практического применения используются бухгалтерские программы, например, "Фрегат", или система управления врачебной деятельностью LookInside, или любая другая. В любом случае эти программы преобразовывают пожелания человека в команды языка SQL и показывают результаты в удобном для человека виде.
       В дальнейшем для создания и анализа баз данных будем использовать программу ISQL.exe, которая поставляется с СУБД Firebird. Программа принимает команды SQL либо с клавиатуры, либо в виде простого текстового файла, который может быть создан любым текстовым редактором, например, Notepad. Результат возвращается либо на экран, либо в виде такого же простого текстового файла.

Архангельский Андрей





Дата последнего изменения:
Thursday, 21-Aug-2014 09:11:43 MSK


Постоянный адрес статьи:
http://az-design.ru/Projects/AzBook/Begin/ClntSrv.shtml