Лекция N2. Клиент – серверные технологии. Технологии создания серверной части

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

2.1. Файл-серверные приложения

По всей видимости, организация информационных систем на основе использования выделенных файл-серверов все еще является наиболее распространенной в связи с наличием большого количества персональных компьютеров разного уровня развитости и сравнительной дешевизны связывания PC в локальные сети. Чем привлекает такая организация не очень опытных в области системного программирования разработчиков информационных систем? Скорее всего, тем, что при опоре на файл-серверные архитектуры сохраняется автономность прикладного (и большей части системного) программного обеспечения , работающего на каждой PC сети. Фактически, компоненты информационной системы, выполняемые на разных PC, взаимодействуют только за счет наличия общего хранилища файлов, которое хранится на файл-сервере. В классическом случае в каждой PC дублируются не только прикладные программы, но и средства управления базами данных . Файл-сервер представляет собой разделяемое всеми PC комплекса расширение дисковой памяти (рисунок 2.1).

Не останавливаясь подробно на имеющихся на сегодняшнем рынке перспективных инструментальных средствах разработки файл-серверных приложений и не приводя анализа тенденций развития соответствующих технологий (этому посвящается третья часть курса), мы кратко перечислим основные достоинства и недостатки файл-серверных архитектур.

Конечно, основным достоинством является простота организации. Проектировщики и разработчики информационной системы находятся в привычных и комфортных условиях IBM PC в среде MS-DOS, Windows или какого-либо облегченного варианта Windows NT. Имеются удобные и развитые средства разработки графического пользовательского интерфейса, простые в использовании средства разработки систем баз данных и/или СУБД. Но во многом эта простота является кажущейся. (Как гласит русская пословица, "Простота хуже воровства", а здесь мы, как правило, имеем простоту на основе воровства программных продуктов для PC.)

Рис. 2.1. Классическое представление информационной системы в архитектуре "файл-сервер"

Во-первых, информационной системе предстоит работать с базой данных. Следовательно, эта база данных должна быть спроектирована. Почему-то часто разработчики файл-серверных приложений считают, что по причине простоты средств управления базами данных проблемой проектирования базы данных можно пренебречь. Конечно, это неправильно. База данных есть база данных. Чем качественнее она спроектирована, тем больше шансов впоследствии эффективно использовать информационную систему. Естественно, сложность проектирования базы данных определяется объективной сложностью моделируемой предметной области. Но, собственно, из чего должно следовать, что файл-серверные приложения пригодны только в простых предметных областях?

Во-вторых, как мы неоднократно подчеркивали в первой части курса, необходимыми требованиями к базе данных информационной системы являются поддержание ее целостного состояния и гарантированная надежность хранения информации. Минимальными условиями, при соблюдении которых можно удовлетворить эти требования, являются:

    наличие транзакционного управления, хранение избыточных данных (например, с применением методов журнализации), возможность формулировать ограничения целостности и проверять их соблюдение.

В принципе, файл-серверная организация, как она показана на рисунке 2.1, не противоречит соблюдению отмеченных условий. В качестве примера системы, соблюдающей выполнение этих условий, но основанной на файл-серверной архитектуре, можно привести популярный в прошлом "сервер баз данных" Informix SE.

Длинноезамечание:
Для сохранения четкости дальнейшего изложения нам необходимо несколько уточнить терминологию. Мы недаром написали "сервер баз данных" в кавычках применительно к СУБД Informix SE. При использовании этой системы копия программного обеспечения СУБД поддерживалась для каждого инициированного пользователем сеанса работы с СУБД. Грубо говоря, для каждого пользовательского процесса, взаимодействующего с базой данных создавался служебный процесс СУБД, который выполнялся на том же процессоре, что и пользовательский процесс (т. е. на стороне клиента). Каждый из этих служебных процессов вел себя фактически так, как если бы был единственным представителем СУБД. Вся синхронизация возможной параллельной работы с базой данных производилась на уровне файлов внешней памяти, содержащих базу данных. Условимся впредь называть такие СУБД не серверами баз данных, а системами управления базами данных, основанными на файл-серверной архитектуре (СУБД-ФС).

Под истинным сервером баз данных мы будем понимать программное образование, привязанное к соответствующей базе (базам) данных, существующее, вообще говоря, независимо от существования пользовательских (клиентских) процессов и выполняемое, вообще говоря (хотя и не обязательно) на выделенной аппаратуре (мы намеренно используем не очень конкретные термины "программное образование" и "выделенная аппаратура", потому что их конкретное воплощение различается в разных серверах баз данных).

Истинные серверы баз данных существенно сложнее по организации, чем СУБД-ФС, на зато обеспечивают более тонкое и эффективное управление базами данных. Везде далее в этом курсе при употреблении термина "сервер баз данных" мы будем иметь в виду истинные серверы баз данных.

Но с другой стороны, в большинстве персональных СУБД эти условия не выполняются даже с помощью грубых приемов. В лучшем случае удается частично восполнить недостатки на уровне прикладных программ.

В третьих, интерфейс развитых серверов баз данных основан на использовании высокоуровневого языка баз данных SQL, что позволяет использовать сетевой трафик между клиентом и сервером баз данных только в полезных целях (от клиента к серверу в основном пересылаются операторы языка SQL, от сервера к клиенту - результаты выполнения операторов). В файл-серверной организации клиент работает с удаленными файлами, что вызывает существенную перегрузку трафика (поскольку СУБД-ФС работает на стороне клиента, то для выборки полезных данных в общем случае необходимо просмотреть на стороне клиента весь соответствующий файл целиком).

В целом, в файл-серверной архитектуре мы имеем "толстого" клиента и очень "тонкий" сервер в том смысле, что почти вся работа выполняется на стороне клиента, а от сервера требуется только достаточная емкость дисковой памяти (рисунок 2.2).

Рис. 2.2. "Толстый" клиент и "тонкий" сервер в файл-серверной архитектуре

Краткие выводы. Простое, работающее с небольшими объемами информации и рассчитанное на применение в однопользовательском режиме, файл-серверное приложение можно спроектировать, разработать и отладить очень быстро. Очень часто для небольшой компании для ведения, например, кадрового учета достаточно иметь изолированную систему, работающую на отдельно стоящем PC. Конечно, и в этом случае требуется большая аккуратность конечных пользователей (или администраторов, наличие которых в этом случае сомнительно) для надежного хранения и поддержания целостного состояния данных. Однако, в уже ненамного более сложных случаях (например, при организации информационной системы поддержки проекта, выполняемого группой) файл-серверные архитектуры становятся недостаточными.

Клиент-серверные приложения

Под клиент-серверным приложением мы будем понимать информационную систему, основанную на использовании серверов баз данных (см. длинное замечание в конце раздела 2.1). Общее представление информационной системы в архитектуре "клиент-сервер" показано на рисунке 2.3.

    На стороне клиента выполняется код приложения, в который обязательно входят компоненты, поддерживающие интерфейс с конечным пользователем, производящие отчеты, выполняющие другие специфичные для приложения функции (пока нас не будет занимать, как строится код приложения). Клиентская часть приложения взаимодействует с клиентской частью программного обеспечения управления базами данных, которая, фактически, является индивидуальным представителем СУБД для приложения.

(Здесь опять проявляются недостатки в терминологии. Обычно, когда компания объявляет о выпуске очередного сервера баз данных, то неявно понимается, что имеется и клиентская составляющая этого продукта. Сочетание "клиентская часть сервера баз данных" кажется несколько странным, но нам придется пользоваться именно этим термином.)

Рис. 2.3. Общее представление информационной системы в архитектуре "клиент-сервер"

Заметим, что интерфейс между клиентской частью приложения и клиентской частью сервера баз данных, как правило, основан на использовании языка SQL. Поэтому такие функции, как, например, предварительная обработка форм, предназначенных для запросов к базе данных, или формирование результирующих отчетов выполняются в коде приложения.

Наконец, клиентская часть сервера баз данных, используя средства сетевого доступа, обращается к серверу баз данных, передавая ему текст оператора языка SQL.

Здесь необходимо сделать еще два замечания.

Обычно компании, производящие развитые серверы баз данных, стремятся к тому, чтобы обеспечить возможность использования своих продуктов не только в стандартных на сегодняшний день TCP/IP-ориентированных сетях, но в сетях, основанных на других протоколах (например, SNA или IPX/SPX). Поэтому при организации сетевых взаимодействий между клиентской и серверной частями СУБД часто используются не стандартные средства высокого уровня (например, механизмы программных гнезд или вызовов удаленных процедур), а собственные функционально подобные средства, менее зависящие от особенностей сетевых транспортных протоколов. Когда мы говорим об интерфейсе на основе языка SQL, нужно отдавать себе отчет в том, что несмотря на титанические усилия по стандартизации этого языка, нет такой реализации, в которой стандартные средства языка не были бы расширены. Необдуманное использование расширений языка приводит к полной зависимости приложения от конкретного производителя сервера баз данных.

Посмотрим теперь, что же происходит на стороне сервера баз данных. В продуктах практически всех компаний сервер получает от клиента текст оператора на языке SQL.

    Сервер производит компиляцию полученного оператора. Не будем здесь останавливаться на том, какой целевой язык используется конкретным компилятором; в разных реализациях применяются различные подходы (примеры см. в части 4). Главное, что в любом случае на основе информации, содержащейся в таблицах-каталогах базы данных производится преобразование непроцедурного представления оператора в некоторую процедуру его выполнения. Далее (если компиляция завершилась успешно) происходит выполнение оператора. Мы снова не будем обсуждать технические детали, поскольку они различаются в реализациях. Рассмотрим возможные действия операторов SQL.
      Оператор может относиться к классу операторов определения (или создания) объектов базы данных (точнее и правильнее было бы говорить про элементы схемы базы данных или про объекты метабазы данных). В частности, могут определяться домены, таблицы, ограничения целостности, триггеры, привилегии пользователей, хранимые процедуры. В любом случае, при выполнении оператора создания элемента схемы базы данных соответствующая информация помещается в таблицы-каталоги базы данных (в таблицы метабазы данных). Ограничения целостности обычно сохраняются в метабазе данных прямо в текстовом представлении. Для действий, определенных в триггерах, и хранимых процедур вырабатывается и сохраняется в таблицах-каталогах процедурный выполняемый код. Заметим, что ограничения целостности, триггеры и хранимые процедуры являются, в некотором смысле, представителями приложения в поддерживаемой сервером базе данных; они составляют основу серверной части приложения (см. ниже). При выполнении операторов выборки данных на основе содержимого затрагиваемых запросом таблиц и, возможно, с использованием поддерживаемых в базе данных индексов формируется результирующий набор данных (мы намеренно не используем здесь термин "результирующая таблица", поскольку в зависимости от конкретного вида оператора результат может быть упорядоченным, а таблицы, т. е. отношения неупорядочены по определению). Серверная часть СУБД пересылает результат клиентской части, и окончательная обработка производится уже в клиентской части приложения. При выполнении операторов модификации содержимого базы данных (INSERT, UPDATE, DELETE) проверяется, что не будут нарушены определенные к этому моменту ограничения целостности (те, которые относятся к классу немедленно проверяемых), после чего выполняется соответствующее действие (сопровождаемое модификацией всех соответствующих индексов и журнализацией изменений). Далее сервер проверяет, не затрагивает ли данное изменение условие срабатывания какого-либо триггера, и если такой триггер обнаруживается, выполняет процедуру его действия. Эта процедура может включать дополнительные операторы модификации базы данных, которые могут вызвать срабатывание других триггеров и т. д. Можно считать, что те действия, которые выполняются на сервере баз данных при проверке удовлетворенности ограничений целостности и при срабатывании триггеров, представляют собой действия серверной части приложения. При выполнении операторов модификации схемы базы данных (добавления или удаления столбцов существующих таблиц, изменения типа данных существующего столбца существующей таблицы и т. д.) также могут срабатывать триггеры, т. е., другими словами, может выполняться серверная часть приложения. Аналогично, триггеры могут срабатывать при уничтожении объектов схемы базы данных (доменов, таблиц, ограничений целостности и т. д.). Особый класс операторов языка SQL составляют операторы вызова ранее определенных и сохраненных в базе данных хранимых процедур. Если хранимая процедура определяется с помощью достаточно развитого языка, включающего и непроцедурные операторы SQL, и чисто процедурные конструкции (например, языка PL/SQL компании Oracle), то в такую процедуру можно поместить серьезную часть приложения, которое при выполнении оператора вызова процедуры будет выполняться на стороне сервера, а не на стороне клиента. При выполнении оператора завершения транзакции сервер должен проверить соблюдение всех, так называемых, отложенных ограничений целостности (к таким ограничениям относятся ограничения, накладываемые на содержимое таблицы базы целиком или на несколько таблиц одновременно; например, суммарная зарплата сотрудников отдела 999 не должна превышать 150 млн. руб.). Снова к проверке отложенных ограничений целостности можно относиться как к выполнению серверной части приложения.

Как видно, в клиент-серверной организации клиенты могут являться достаточно "тонкими", а сервер должен быть "толстым" настолько, чтобы быть в состоянии удовлетворить потребности всех клиентов (рисунок 2.4).

Рис. 2.4. "Тонкий" клиент и "толстый" сервер в клиент-серверной архитектуре

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

Фактически, концепция локального кэширования базы данных является частным случаем концепции реплицированных (или, как иногда их называют в русскоязычной литературе, тиражированных) баз данных. Как и в общем случае, для поддержки локального кэша базы данных программное обеспечение рабочих станций должно содержать компонент управления базами данных - упрощенный вариант сервера баз данных, который, например, может не обеспечивать многопользовательский режим доступа. Отдельной проблемой является обеспечение согласованности (когерентности) кэшей и общей базы данных. Здесь возможны различные решения - от автоматической поддержки согласованности за счет средств базового программного обеспечения управления базами данных до полного перекладывания этой задачи на прикладной уровень. В любом случае, клиенты становятся более толстыми при том, что сервер тоньше не делается (рисунок 2.5).

Рис. 2.5. "Потолстевший" клиент и "толстый" сервер в клиент-серверной архитектуре с поддержкой локального кэша на стороне клиентов

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

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

Увеличение масштабов информационной системы не порождает принципиальных проблем. Обычным решением является замена аппаратуры сервера (и, может быть, аппаратуры рабочих станций, если требуется переход к локальному кэшированию баз данных). В любом случае практически не затрагивается прикладная часть информационной системы. В идеале, которого, конечно же не бывает, информационная система продолжает нормально функционировать после смены аппаратуры.

Цель лекции: показать, каким образом в веб-технологиях реализуются общие принципы клиент-серверных технологий. Рассмотреть ключевые элементы базового протокола HTTP.

Предметом данного курса являются технологии глобальной сети World Wide Web (сокращенно WWW или просто Web). На русском языке распространенным вариантом является название "Веб".

В частности, в рамках курса будут рассмотрены такие вопросы как: базовые стандарты и протоколы сети Веб, языки разметки и программирования веб-страниц, инструменты разработки и управления веб-контента и приложений для Веб, средства интеграции веб-контента и приложений в Веб.

Сеть Веб представляет собой глобальное информационное пространство, основанное на физической инфраструктуре Интернета и протоколе передачи данных HTTP. Зачастую, говоря об Интернете, подразумевают именно сеть Веб .

Клиент-серверные технологии Веб

Базовым протоколом сети гипертекстовых ресурсов Веб является протокол HTTP. В его основу положено взаимодействие "клиент-сервер ", то есть предполагается, что:

    Потребитель-клиент инициировав соединение с поставщиком-сервером посылает ему запрос;

    Поставщик-сервер , получив запрос, производит необходимые действия и возвращает обратно клиенту ответ с результатом.

При этом возможны два способа организации работы компьютера-клиента:

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

    Толстый клиент , напротив, производит обработку информации независимо от сервера, использует последний в основном лишь для хранения данных.

Прежде чем перейти к конкретным клиент-серверным веб-технологиям, рассмотрим основные принципы и структуру базового протокола HTTP.

Протокол http

HTTP (HyperText Transfer Protocol - RFC 1945, RFC 2616) - протокол прикладного уровня для передачи гипертекста.

Центральным объектом в HTTP является ресурс , на который указывает URI в запросе клиента. Обычно такими ресурсами являются хранящиеся на сервере файлы. Особенностью протокола HTTP является возможность указать в запросе и ответе способ представления одного и того же ресурса по различным параметрам: формату, кодировке, языку и т. д. Именно благодаря возможности указания способа кодирования сообщения клиент и сервер могут обмениваться двоичными данными, хотя изначально данный протокол предназначен для передачи символьной информации. На первый взгляд это может показаться излишней тратой ресурсов. Действительно, данные в символьном виде занимают больше памяти, сообщения создают дополнительную нагрузку на каналы связи, однако подобный формат имеет много преимуществ. Сообщения, передаваемые по сети, удобочитаемы, и, проанализировав полученные данные, системный администратор может легко найти ошибку и устранить ее. При необходимости роль одного из взаимодействующих приложений может выполнять человек, вручную вводя сообщения в требуемом формате.

В отличие от многих других протоколов, HTTP является протоколом без памяти. Это означает, что протокол не хранит информацию о предыдущих запросах клиентов и ответах сервера. Компоненты, использующие HTTP, могут самостоятельно осуществлять сохранение информации о состоянии, связанной с последними запросами и ответами. Например, клиентское веб-приложение, посылающее запросы, может отслеживать задержки ответов, а веб-сервер может хранить IP-адреса и заголовки запросов последних клиентов.

Всё программное обеспечение для работы с протоколом HTTP разделяется на три основные категории:

    Серверы - поставщики услуг хранения и обработки информации (обработка запросов).

    Клиенты - конечные потребители услуг сервера (отправка запросов).

    Прокси-серверы для поддержки работы транспортных служб.

"Классическая" схема HTTP-сеанса выглядит так.

    Установление TCP-соединения.

    Запрос клиента.

    Ответ сервера.

    Разрыв TCP-соединения.

Таким образом, клиент посылает серверу запрос, получает от него ответ, после чего взаимодействие прекращается. Обычно запрос клиента представляет собой требование передать HTML-документ или какой-нибудь другой ресурс, а ответ сервера содержит код этого ресурса.

В состав HTTP-запроса, передаваемого клиентом серверу, входят следующие компоненты.

    Строка состояния (иногда для ее обозначения используют также термины строка-статус, или строка запроса).

    Поля заголовка.

    Пустая строка.

    Тело запроса.

Строку состояния вместе с полями заголовка иногда называют также заголовком запроса .

Рис. 1.1. Структура запроса клиента.

Строка состояния имеет следующий формат:

метод_запроса URL_pecypca версия_протокола_НТТР

Рассмотрим компоненты строки состояния, при этом особое внимание уделим методам запроса.

Метод , указанный в строке состояния, определяет способ воздействия на ресурс, URL которого задан в той же строке. Метод может принимать значения GET, POST, HEAD, PUT, DELETE и т.д. Несмотря на обилие методов, для веб-программиста по-настоящему важны лишь два из них: GET и POST.

    GET. Согласно формальному определению, метод GET предназначается для получения ресурса с указанным URL. Получив запрос GET, сервер должен прочитать указанный ресурс и включить код ресурса в состав ответа клиенту. Ресурс, URL которого передается в составе запроса, не обязательно должен представлять собой HTML-страницу, файл с изображением или другие данные. URL ресурса может указывать на исполняемый код программы, который, при соблюдении определенных условий, должен быть запущен на сервере. В этом случае клиенту возвращается не код программы, а данные, сгенерированные в процессе ее выполнения. Несмотря на то что, по определению, метод GET предназначен для получения информации, он может применяться и в других целях. Метод GET вполне подходит для передачи небольших фрагментов данных на сервер.

    POST. Согласно тому же формальному определению, основное назначение метода POST - передача данных на сервер. Однако, подобно методу GET, метод POST может применяться по-разному и нередко используется для получения информации с сервера. Как и в случае с методом GET, URL, заданный в строке состояния, указывает на конкретный ресурс. Метод POST также может использоваться для запуска процесса.

    Методы HEAD и PUT являются модификациями методов GET и POST.

Версия протокола HTTP , как правило, задается в следующем формате:

HTTP/версия.модификация

Поля заголовка , следующие за строкой состояния, позволяют уточнять запрос, т.е. передавать серверу дополнительную информацию. Поле заголовка имеет следующий формат:

Имя_поля: Значение

Назначение поля определяется его именем, которое отделяется от значения двоеточием.

Имена некоторых наиболее часто встречающихся в запросе клиента полей заголовка и их назначение приведены в табл. 1.1 .

Таблица 1.1. Поля заголовка запроса HTTP.

Поля заголовка HTTP-запроса

Значение

Доменное имя или IP-адрес узла, к которому обращается клиент

URL документа, который ссылается на ресурс, указанный в строке состояния

Адрес электронной почты пользователя, работающего с клиентом

MIME-типы данных, обрабатываемых клиентом. Это поле может иметь несколько значений, отделяемых одно от другого запятыми. Часто поле заголовка Accept используется для того, чтобы сообщить серверу о том, какие типы графических файлов поддерживает клиент

Набор двухсимвольных идентификаторов, разделенных запятыми, которые обозначают языки, поддерживаемые клиентом

Перечень поддерживаемых наборов символов

MIME-тип данных, содержащихся в теле запроса (если запрос не состоит из одного заголовка)

Число символов, содержащихся в теле запроса (если запрос не состоит из одного заголовка)

Присутствует в том случае, если клиент запрашивает не весь документ, а лишь его часть

Используется для управления TCP-соединением. Если в поле содержится Close, это означает, что после обработки запроса сервер должен закрыть соединение. Значение Keep-Alive предлагает не закрывать TCP-соединение, чтобы оно могло быть использовано для последующих запросов

Информация о клиенте

Во многих случаях при работе в Веб тело запроса отсутствует. При запуске CGI-сценариев данные, передаваемые для них в запросе, могут размещаться в теле запроса.

Ниже представлен пример HTML-запроса, сгенерированного браузером

GET http://oak.oakland.edu/ HTTP/1.0

Connection: Keep-Alive

User-Agent: Mozilla/4.04 (Win95; I)

Host: oak.oakland.edu

Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*

Accept-Language: en

Accept-Charset: iso-8859-l,*,utf-8

Получив от клиента запрос, сервер должен ответить ему. Знание структуры ответа сервера необходимо разработчику веб-приложений, так как программы, которые выполняются на сервере, должны самостоятельно формировать ответ клиенту.

Подобно запросу клиента, ответ сервера также состоит из четырех перечисленных ниже компонентов.

    Строка состояния.

    Поля заголовка.

    Пустая строка.

    Тело ответа.

Ответ сервера клиенту начинается со строки состояния, которая имеет следующий формат:

Версия_протокола Код_ответа Пояснительное_сообщение

    Версия_протокола задается в том же формате, что и в запросе клиента, и имеет тот же смысл.

    Код_ответа - это трехзначное десятичное число, представляющее в закодированном виде результат обслуживания запроса сервером.

    Пояснительное_сообщение дублирует код ответа в символьном виде. Это строка символов, которая не обрабатывается клиентом. Она предназначена для системного администратора или оператора, занимающегося обслуживанием системы, и является расшифровкой кода ответа.

Из трех цифр, составляющих код ответа, первая (старшая) определяет класс ответа, остальные две представляют собой номер ответа внутри класса. Так, например, если запрос был обработан успешно, клиент получает следующее сообщение:

HТТР/1.0 200 ОК

Как видно, за версией протокола HTTP 1.0 следует код 200. В этом коде символ 2 означает успешную обработку запроса клиента, а остальные две цифры (00) - номер данного сообщения.

В используемых в настоящее время реализациях протокола HTTP первая цифра не может быть больше 5 и определяет следующие классы ответов.

    1 - специальный класс сообщений, называемых информационными. Код ответа, начинающийся с 1, означает, что сервер продолжает обработку запроса. При обмене данными между HTTP-клиентом и HTTP-сервером сообщения этого класса используются достаточно редко.

    2 - успешная обработка запроса клиента.

    3 - перенаправление запроса. Чтобы запрос был обслужен, необходимо предпринять дополнительные действия.

    4 - ошибка клиента. Как правило, код ответа, начинающийся с цифры 4, возвращается в том случае, если в запросе клиента встретилась синтаксическая ошибка.

    5 - ошибка сервера. По тем или иным причинам сервер не в состоянии выполнить запрос.

Примеры кодов ответов, которые клиент может получить от сервера, и поясняющие сообщения приведены в табл. 1.2.

Таблица 1.2. Классы кодов ответа сервера.

Расшифровка

Интерпретация

Часть запроса принята, и сервер ожидает от клиента продолжения запроса

Запрос успешно обработан, и в ответе клиента передаются данные, указанные в запросе

В результате обработки запроса был создан новый ресурс

Запрос принят сервером, но обработка его не окончена. Данный код ответа не гарантирует, что запрос будет обработан без ошибок.

Partial Content

Сервер возвращает часть ресурса в ответ на запрос, содержавший поле заголовка Range

Multiple Choice

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

Moved Permanently

Затребованный ресурс больше не располагается на сервере

Moved Temporarily

Затребованный ресурс временно изменил свой адрес

В запросе клиента обнаружена синтаксическая ошибка

Имеющийся на сервере ресурс недоступен для данного пользователя

Ресурс, указанный клиентом, на сервере отсутствует

Method Not Allowed

Сервер не поддерживает метод, указанный в запросе

Internal Server Error

Один из компонентов сервера работает некорректно

Not Implemented

Функциональных возможностей сервера недостаточно, чтобы выполнить запрос клиента

Service Unavailable

Служба временно недоступна

HTTP Version not Supported

Версия HTTP, указанная в запросе, не поддерживается сервером

В ответе используется такая же структура полей заголовка, как и в запросе клиента. Поля заголовка предназначены для того, чтобы уточнить ответ сервера клиенту. Описание некоторых из полей, которые можно встретить в заголовке ответа сервера, приведено в табл. 1.3.

Таблица 1.3. Поля заголовка ответа веб-сервера.

Имя поля

Описание содержимого

Имя и номер версии сервера

Время в секундах, прошедшее с момента создания ресурса

Список методов, допустимых для данного ресурса

Content-Language

Языки, которые должен поддерживать клиент для того, чтобы корректно отобразить передаваемый ресурс

MIME -тип данных, содержащихся в теле ответа сервера

Число символов, содержащихся в теле ответа сервера

Дата и время последнего изменения ресурса

Дата и время, определяющие момент генерации ответа

Дата и время, определяющие момент, после которого информация, переданная клиенту, считается устаревшей

В этом поле указывается реальное расположение ресурса. Оно используется для перенаправления запроса

Директивы управления кэшированием. Например, no-cache означает, что данные не должны кэшироваться

В теле ответа содержится код ресурса, передаваемого клиенту в ответ на запрос. Это не обязательно должен быть HTML-текст веб-страницы. В составе ответа могут передаваться изображение, аудио-файл, фрагмент видеоинформации, а также любой другой тип данных, поддерживаемых клиентом. О том, как следует обрабатывать полученный ресурс, клиенту сообщает содержимое поля заголовка Content-type.

Ниже представлен пример ответа сервера на запрос, приведенный в предыдущем разделе. В теле ответа содержится исходный текст HTML-документа.

Server: Microsoft-IIS/5.1

X-Powered-By: ASP.NET

Content-Type: text/html

Accept-Ranges: bytes

ETag: "b66a667f948c92:8a5"

Content-Length: 426

Operand1:

Operand2:

Operation:

Поля заголовка и тело сообщения могут отсутствовать, но строка состояния является обязательным элементом, так как указывает на тип запроса/ответа.

Поле с именем Content-type может встречаться как в запросе клиента, так и в ответе сервера. В качестве значения этого поля указывается MIME -тип содержимого запроса или ответа. MIME -тип также передается в поле заголовка Accept, присутствующего в запросе.

Спецификация MIME (Multipurpose Internet Mail Extension - многоцелевое почтовое расширение Internet) первоначально была разработана для того, чтобы обеспечить передачу различных форматов данных в составе электронных писем. Однако применение MIME не исчерпывается электронной почтой. Средства MIME успешно используются в WWW и, по сути, стали неотъемлемой частью этой системы.

Стандарт MIME разработан как расширяемая спецификация, в которой подразумевается, что число типов данных будет расти по мере развития форм представления данных. Каждый новый тип в обязательном порядке должен быть зарегистрирован в IANA (Internet Assigned Numbers Authority).

До появления MIME компьютеры, взаимодействующие по протоколу HTTP, обменивались исключительно текстовой информацией. Для передачи изображений, как и для передачи любых других двоичных файлов, приходилось пользоваться протоколом FTP.

В соответствии со спецификацией MIME , для описания формата данных используются тип и подтип . Тип определяет, к какому классу относится формат содержимого HTTP-запроса или HTTP-ответа. Подтип уточняет формат. Тип и подтип отделяются друг от друга косой чертой:

тип/подтип

Поскольку в подавляющем большинстве случаев в ответ на запрос клиента сервер возвращает исходный текст HTML-документа, то в поле Content-type ответа обычно содержится значение text/html. Здесь идентификатор text описывает тип, сообщая, что клиенту передается символьная информация, а идентификатор html описывает подтип, т.е. указывает на то, что последовательность символов, содержащаяся в теле ответа, представляет собой описание документа на языке HTML.

Перечень типов и подтипов MIME достаточно велик. В табл. 1.4 приведены примеры MIME -типов, наиболее часто встречающиеся в заголовках HTML-запросов и ответов.

Таблица 1.4. MIME типы данных.

Тип/подтип

Расширение файла

Описание

Документ, предназначенный для обработки Acrobat Reader

application/msexcel

Документ в формате Microsoft Excel

application/postscript

Документ в формате PostScript

application/x-tex

Документ в формате ТеХ

application/msword

Документ в формате Microsoft Word

Документ в формате RTF, отображаемый с помощью Microsoft Word

Изображение в формате GIF

Изображение в формате JPEG

Изображение в формате TIFF

Изображение в формате XBitmap

ASCII-текст

Документ в формате HTML

Аудиофайл в формате MIDI

Аудиофайл в формате WAV

Почтовое сообщение

Сообщение в группы новостей

Mpeg, .mpg, .mpe

Видеофрагмент в формате MPEG

Видеофрагмент в формате AVI

Для однозначной идентификации ресурсов в сети Веб используются уникальные идентификаторы URL.

Единообразный идентификатор ресурса URI (Uniform Resource Identifier) представляет собой короткую последовательность символов, идентифицирующую абстрактный или физический ресурс. URI не указывает на то, как получить ресурс, а только идентифицирует его. Это даёт возможность описывать с помощью RDF (Resource Description Framework) ресурсы, которые не могут быть получены через Интернет (имена, названия и т.п.). Самые известные примеры URI - это URL и URN.

    URL (Uniform Resource Locator) - это URI, который, помимо идентификации ресурса, предоставляет ещё и информацию о местонахождении этого ресурса.

    URN (Uniform Resource Name) - это URI, который идентифицирует ресурс в определённом пространстве имён, но, в отличие от URL, URN не указывает на местонахождение этого ресурса.

URL имеет следующую структуру:

<схема>://<логин>:<пароль>@<хост>:<порт>/

    схема - схема обращения к ресурсу (обычно сетевой протокол);

    логин - имя пользователя, используемое для доступа к ресурсу;

    пароль - пароль, ассоциированный с указанным именем пользователя;

    хост - полностью прописанное доменное имя хоста в системе DNS или IP-адрес хоста;

    порт - порт хоста для подключения;

    URL-путь - уточняющая информация о месте нахождения ресурса.

Использование технологии «клиент-сервер»

Со временем не очень функциональную модель файлового сервера для локальных сетей (FS) сменили появившиеся одна задругой модели строения «Клиент сервер» (RDA, DBS и AS).

Технология «Клиент - сервер», которая заняла самый низ базы данных, стала главной технологией глобальной сети Internet. Далее, вследствие перенесения идей сети Internet в сферу корпоративных систем, возникла технология Intranet. В различие от технологии «Клиент-сервер» такая технология обращена на информацию в ее окончательно готовом виде к потреблению, а не на данные. Вычислительные системы, которые построенны на основе Intranet, обладают в своем составе центральные серверы информации и определенные компоненты представления информации последнему пользователю (браузеры или программы-навигаторы). Дейсвие между сервером и клиентом в Intranet совершается с помощью web - технологий.

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

Классическая двухуровневая архитектура «Клиент - сервер»

Как правило компоненты сети не имеют равных прав: у одних есть доступ к ресурсам (например: система управления базами данных, процессор, принтер, файловая система и прочие), у других есть возможность обращаться к этим ресурсам. операционный система сервер технология

Технология «Клиент - сервер» - это архитектура программного комплекса распределяющая прикладной программой по двум логически различным частям (сервер и клиент), которые взаимодействуют по схеме «запрос-ответ» и решают собственные определенные задачи.

Программа (или компьютер), управляющая и/или владеющая каким-нибудь ресурсом, называется сервером этого ресурса.

Программа (компьютер или), запрашивающая и пользующаяся каким-либо ресурсом, называется клиентом этого ресурса.

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

Главный принцип технологии «Клиент-сервер» заключается в разделении функций приложения как минимум на три звена:

Модули интерфейса с пользователем;

Еще эта группа называется логикой представления. С ее помощью пользователи могут взаимодействовать с приложениями. Независимо от конкретных характеристик логики представления (интерфейс командной строки,интерфейсы через посредника, сложные графические пользовательские интерфейсы) ее задача заключается в том, чтобы обеспечить средства для большей эффективности обмена информацией между информационной системой и пользователем.

Модули хранения данных;

Эта группа еще называется бизнес-логикой. Бизнес-логика находит, для чего именно нужно то или иное приложение (например, прикладные функции, присущие для предоставленной предметной области). Разделение приложения по границам между программами обеспечивает натуральную основу для распределения приложения на двух или более компьютерах.

Модули обработки данных (функции управления ресурсами);

Так же эта группа называется логикой алгоритмами доступа к данным или просто доступа к данным. Алгоритмы входа к данным рассматриваются как специфический интерфейс для конкретного приложения к устройству стабильного сохранения данных наподобие СУБД или же файловой системы. С помощью модулей обработки данных организуется специфический интерфейс для приложения СУБД. С помощью интерфейса приложение может управлять соединениями с базой данных и запросами к ней (перевод специфических для конкретного приложения запросов на язык SQL, получение результатов и перевод этих результатов обратно в специфические для конкретного приложения структуры данных). Каждое из перечисленных звеньев может реализоваться независимо от нескольких других. Например, не изменяя программ, которые используются для обработки и хранения данных, можно изменить интерфейс с пользователем так, что одни и те же данные будут отображаться в виде таблиц, гистограмм или же графиков. Самые простые приложения часто способны собрать все три звена в единственную программу, и подобное разделение соответствует функциональным границам.

В соответствии с разделением функций в каждом приложении выделяют следующие компоненты:

  • - компонент представления данных;
  • - прикладной компонент;
  • - компонент управления ресурсом.

Клиент-сервер в классической архитектуре нужно распределить три главные части приложения по 2-м физическим модулям. Обычно прикладной компонент находится на сервере (например, на сервере БД), компонент представления данных - на стороне клиента, а компонент управления ресурсом распределяется между серверной и клиентской частями. В этом заключается главный недостаток классической двухуровневой архитектуры.

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

Чтобы избежать несогласованности разных элементов архитектуры, создали две модификации двухзвенной архитектуры «Клиент - сервер»: «Толстый клиент» («Тонкий сервер») и «Тонкий клиент» («Толстый сервер»).

В этой архитектуре разработчики попытались выполнять обработку данных на одной из двух физических частей - либо на стороне клиента («Толстый клиент»), либо на сервере («Тонкий клиент).

У каждого подхода есть свои значительные недостатки. В первой ситуации неоправданно перегружается сеть, потому что по ней передаются необработанные то есть избыточные данные. Кроме того, усложняется поддержка системы и ее изменение, потому что исправление ошибки или же замена алгоритма вычислений требуют одновременной полной замены всех интерфейсных программ, если не сделать полной замены, то может возникнуть несогласованность данных или ошибки. Если же вся обработка информации выполняется на сервере, то возникает проблема описания встроенных процедур и их отладки. Систему с обработкой информации на сервере абсолютно невозможно перенести на другую платформу (ОС), это является серьезным недостатком.

Если же создается двухуровневая классическая архитектура «Клиент - сервер», то нужно знать следующие факты:

Архитектура «Толстый сервер» аналогична архитектуре «Тонкий клиент»

Передача запроса от клиента на сервер, обработка запроса сервером и передача результата клиенту. При этом архитектуры имеют следующие недостатки:

  • - усложняется реализация, так как языки типа SQL не приспособлены для разработки подобного ПО и нет хороших средств отладки;
  • - производительность программ, которые написаны на языках типа SQL, очень низка, чем созданые на прочих языках, что имеет наиболее важное значение для сложных систем;
  • - программы, которые написаны на СУБД-языках как правило функционируют от части не очень надежно; ошибка в них может привести к выходу из строя всего сервера баз данных;
  • - получившиеся таким образом программы полностью непереносимы на другие платформы и системы.
  • - архитектура «Толстый клиент» аналогична архитектуре «Тонкий сервер»

Обработка запроса совершается на стороне клиента, то есть совершается передача клиенту всех необработанных данных с сервера. В этом случае у архитектур имеются негативные стороны:

  • - усложняется обновление ПО, потому что его замену нужно производить одновременно по всей системе;
  • - усложняется распределение полномочий, потому что разграничение доступа происходит не по действиям, а по таблицам;
  • - перегружается сеть вследствие передачи по ней необработанных данных;
  • - слабая защита данных, так как сложно правильно распределить полномочия.

Для решения перечисленных проблем нужно использовать многоуровневые (три и более уровней) архитектуры «Клиент-сервер».

Трехуровневая модель .

С середины 90-х годов прошлого века популярность специалистов получила трехзвенная архитектура «Клиент - сервер», разделившая информационную систему по функциональным возможностям на три некоторых звена: логика доступа к данным, логика представления и бизнес-логика. В противоположность двухуровневой архитектуры в трехуровневой имеется дополнительное звено - сервер приложений, предназначенный для осуществления бизнес-логики, при этом полностью разгружается клиент, который посылает запросы промежуточному программному обеспечению, и максимально употребляются все возможности серверов.

В трехуровневой архитектуре клиент как правило не перегружен функциями обработки данных, а осуществляет свою главную роль системы представления информации, поступающей с сервера приложений. Такой интерфейс можно привести в исполнение с помощью стандартных средств Web-технологии - браузера, CGI и Java. Это понижает объемность данных, предоставляемых между клиентом и сервером приложений, что позволяет подключать клиентские компьютеры даже по медленным линиям типа телефонных каналов. В связи с этим, клиентская часть может быть такой простой, что в большинстве случаев ее осуществляют с помощью универсального браузера. Однако если все-таки ее поменять придется, то эту процедуру можно реализовать быстро и безболезненно.

Сервер приложений - это программное обеспечение, которое является промежуточным пластом между сервером и клиентом.

  • - Message orientated - яркие представители MQseries и JMS;
  • - Object Broker - яркие представители CORBA и DCOM;
  • - Component based - яркие представители.NET и EJB.

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

Есть немного серверов приложений от таких знаменитых компаний как Sun, Oracle Microsystem, IBM, Borland и каждый из них различается комплектом предоставляемых сервисов (производительность учитывать в данном случае не буду). Эти сервисы облегчают программирование и развертывание приложений масштаба предприятия. Как правило сервер приложений дает следующие сервисы:

  • - WEB Server - чаще всего включают в поставку самый мощный и популярный Apache;
  • - WEB Container - позволяет выполнять JSP и сервлеты. Для Apache таким сервисом является Tomcat;
  • - CORBA Agent - может предоставлять распределенную директорию для хранения CORBA объектов;
  • - Messaging Service - брокер сообщений;
  • - Transaction Service - уже из названия понятно, что это сервис транзакций;
  • - JDBC - драйвера для подключения к базам данных, ведь именно серверу приложений придется общаться с базами данных и ему нужно уметь подключаться к используемой в вашей компании базе;
  • - Java Mail - данный сервис может предоставлять сервис к SMTP;
  • - JMS (Java Messaging Service) - обработка синхронных и асинхронных сообщений;
  • - RMI (Remote Method Invocation) - вызов удаленных процедур.

Многоуровневые клиент-серверные системы довольно легко можно перевести на Web-технологию - для этого нужно заменить клиентскую часть специализированным или универсальным браузером, а сервер приложений дополнить Web-сервером и малыми программами вызова процедур сервера. Для

разработки этих программ можно употребить как Common Gateway Interface (CGI), так и более современную технологию Java.

В трехуровневой системе в качестве каналов связи между сервером приложений и СУБД можно использовать наиболее быстрые линии, требующие минимальныхзатрат, так как сервера как правило находятся в одном помещении (серверной) и не будет перегружать сеть из-за передачи высокого количества информации.

Из всего перечисленного вытекает вывод о том, что двухуровневая архитектура весьма уступает многоуровневой архитектуре, в связи с этим на сегодняшний день применяется только многоуровневая архитектура «Клиент - сервер», распознающая три модификации - RDA, DBS и AS.

Различные модели технологии «Клиент - сервер»

Самой первой основной базовой технологией для локальных сетей была модель файлового сервера (FS) . В то время эта технология была весьма распространена среди отечественных разработчиков, использовавших такие системы, как FoxPro, Clipper, Clarion, Paradox и так далее.

В модели FS функции всех 3-х компонентов (компонент представления, прикладной компонент и компонент доступа к ресурсам) совмещены в одном коде, который осуществляется на компьютере-сервере (хосте). Компьютер-клиент в такой архитектуре совсем отсутствует, а отображение и вынесение данных совершается с помощью компьютера компьютера или терминала в порядке эмуляции терминала. Приложения обычно формируются на языке четвертого поколения (4GL). Один из компьютеров в сети считается файловым сервером и дает другим компьютерам услуги по обработке файлов. Он функционирует под управлением сетевых ОС и играет важную роль компонента доступа к информационным ресурсам. На прочих ПК в сети функционирует приложение, в кодах которого соединены прикладной компонент и компонент представления.

Технология действия между клиентом и сервером такая: запрос посылается на файловый сервер, передающий СУБД, которая размещена на компьютере-клиенте, требуемый блок данных. Вся обработка исполняется на терминале.

Протокол обмена - это некий набор вызовов, которые обеспечивают приложению вход к файловой системе на файл-сервере.

Положительными сторонами данной технологии являются:

  • - простота разработки приложений;
  • - удобство администрирования и обновления ПО
  • - низкая стоимость оборудования рабочих мест (терминалы или дешевые компьютеры с низкими характеристиками в режиме эмуляции терминала всегда дешевле полноценных ПК).

Но достоинства FS - модели превосходят ее недостатки:

Несмотря на немаленький объем данных, которые пересылаются по сети, время отклика является критичным, потому что каждый символ, введенный клиентом на терминале, должен быть передан на сервер, обработан приложением и возвращен обратно для вывода на экран терминала. Помимо этого существует проблема распределения нагрузки между несколькими компьютерами.

  • - дорогостоящее аппаратное обеспечение сервера , так как все пользователи разделяют его ресурсы;
  • - отсутствие графического интерфейса .

Благодаря решению проблем, присущих технологии «Файл - сервер» появилась более прогрессивная технология, получившая название «Клиент - сервер».

Для современных СУБД архитектура «клиент-сервер» стала фактически стандартом. Если предполагается, что проектируемая сетевая технология будет иметь архитектуру «клиент-сервер», то это означает, что прикладные программы, реализованные в ее рамках, будут иметь распределенный характер, то есть часть функций приложений будет реализована в программе-клиенте, другая - в программе-сервере.

Различия в реализации приложений в рамках технологии «Клиент-сервер»определяются четырьмя факторами:

  • - какие виды программного обеспечения в логических компонентах;
  • - какие механизмы программного обеспечения используются для реализации функций логических компонентов;
  • - как логические компоненты распределяются компьютерами в сети;
  • - какие механизмы используются для связи компонент между собой.

Исходя из этого, выделяются три подхода, каждый из которых реализован в соответствующей модели технологии «Клиент - сервер»:

  • - модель доступа к удаленным данным (Remote Date Access - RDA);
  • - модель сервера базы данных (DateBase Server - DBS);
  • - модель сервера приложений (Application Server - AS).

Существенным преимуществом RDA-модели является обширный выбор инструментальных средств разработки приложений, которые обеспечивают стремительное образование desktop-приложений, которые работают с SQL-направленными СУБД. Как правило, инструментальные средства поддерживают графический интерфейс пользователя с ОС, а также средства автоматической генерации кода, где смешаны функции представления и прикладные функции.

Несмотря на большое распространение, RDA-модель уступает место наиболее технологичной DBS-модели.

Модель сервера баз данных (DBS) - сетевая архитектура технологии «Клиент - сервер», в основе которой лежит механизм хранимых процедур, который реализует прикладные функции. В DBS - модели понятие информационного ресурса сжато до базы данных из-за того же механизма хранимых процедур, реализованный в СУБД, да и то не во всех.

Положительные стороны DBS-модели перед RDA-моделью очевидны: это и возможность централизованного администрирования различных функций, и снижение трафика сети потому, что вместо SQL-запросов по сети передаются вызовы хранимых процедур, и возможность разделения процедуры между двумя приложениями, и экономия ресурсов компьютера за счет использования однажды созданного плана выполнения процедуры.

Модель сервера приложений (AS) - это сетевая архитектура технологии «Клиент - сервер», которая представляет собой процесс, который выполняется на компьютере-клиенте, и, который отвечает за интерфейс с пользователем (ввод и отображение данных). Важнейшим элементом такой модели является прикладной компонент, который называется сервером приложения, он функционирует на удаленном компьютере (или двух компьютерах). Сервер приложений осуществлен как группа прикладных функций, оформленных в виде сервисов (служб). Каждый сервис предоставляет некоторые услуги всем программам, которые желают и могут ими воспользоваться.

Выучив все модели технологии «Клиент - сервер», можно сделать такой вывод: RDA- и DBS-модели, в основе этих двух моделей лежит двухзвенная схема разделения функций. В RDA-модели прикладные функции переданы клиенту, в DBS-модели их исполнение реализовывается через ядро СУБД. В RDA-модели прикладной компонент сливается с компонентом представления, в DBS-модели интегрируется в компонент доступа к ресурсам.

В AS-модели осуществлена трехзвенная схема разделения функций, где прикладной компонент выделен как главный изолированный элемент приложения, который имеет стандартизированные интерфейсы с двумя прочими компонентами.

Результаты анализа моделей технологий «Файловый сервер» и «Клиент - сервер» представлены в таблице 1.

Несмотря на свое названия технология «Клиент -сервер» также является системой распределенных вычислений. В этом случае распределенные вычисления понимают как архитектура «Клиент - сервер» при участии некоторых серверов. Применительно к распределенной обработке термин «сервер» означает просто программу, отвечающую на запросы и выполняющую необходимые действия по запросу клиента. Поскольку распределенные вычисления - это один из видов систем «Клиент - сервер», то пользователи приобретают такие же преимущества, например, возрастание общей пропускной способности и возможность многозадачной работы. Также, интеграция дискретных сетевых компонентов и обеспечение их работы как единого целого способствует расширению результативности и уменьшению сбережений.

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

Вследствие этого можно сделать следующий вывод: если будет нужно работать с малыми информационными системами, которые не требуют графического интерфейса с пользователем, можно использовать FS - модель. Вопрос о графическом интерфейсе можно свободно решить с помощью RDA-модель. DBS-модель это очень хороший вариант для систем управления базами данных(СУБД). AS-модель это лучший вариант для того, чтобы создать большие информационные системы, а также при использовании низкоскоростных каналов связи.

Департамент общего и профессионального образования Брянской области

Государственное образовательное учреждение

Клинцовский текстильный техникум

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ АВТОМАТИЗИРОВАННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ

Технология «Клиент – сервер»

Студент гр. А-90______________________(Петроченко А.О.)

Преподаватель _______________________ (Широкова А.Л.)

Клинцы – 2011

1. Серверы. Основные понятия серверов

2. Модель клиент-сервер

3. Классификация стандартных серверов

4. Вывод

1. Серверы. Основные понятия серверов

Сервер (от англ. server, обслуживающий). В зависимости от предназначения существует несколько определений понятия сервер.

1. Сервер (сеть) - логический или физический узел сети, обслуживающий запросы к одному адресу и/или доменному имени (смежным доменным именам), состоящий из одного или системы аппаратных серверов, на котором выполняются один или система серверных программ

2. Сервер (программное обеспечение) - программное обеспечение, принимающее запросы от клиентов (в архитектуре клиент-сервер).

3. Сервер (аппаратное обеспечение) - компьютер (или специальное компьютерное оборудование) выделенный и/или специализированный для выполнения определенных сервисных функций.

3. Сервер в информационных технологиях - программный компонент вычислительной системы, выполняющий сервисные функции по запросу клиента, предоставляя ему доступ к определённым ресурсам.

Взаимосвязь понятий. Серверное приложение (сервер) запускается на компьютере, так же называемом "сервер", при этом при рассмотрении топологии сети, такой узел называют "сервером". В общем случае может быть так, что серверное приложение запущено на обычной рабочей станции, или серверное приложение, запущенное на серверном компьютере в рамках рассматриваемой топологии выступает в роли клиента (т.е. не является сервером с точки зрения сетевой топологии).

2. Модель клиент-сервер

Клиент-серверная система характеризуется наличием двух взаимодействующих самостоятельных процессов - клиента и сервера, которые, в общем случае, могут выполняться на разных компьютерах, обмениваясь данными по сети.

Процессы, реализующие некоторую службу, например службу файловой системы или базы данных, называются серверами (servers). Процессы, запрашивающие службы у серверов путем посылки запроса и последующего ожидания ответа от сервера, называются клиентами (clients) .

По такой схеме могут быть построены системы обработки данных на основе СУБД, почтовые и другие системы. Мы будем говорить о базах данных и системах на их основе. И здесь удобнее будет не просто рассматривать клиент-серверную архитектуру, а сравнить ее с другой - файл-серверной.

В файл-серверной системе данные хранятся на файловом сервере (например, Novell NetWare или Windows NT Server), а их обработка осуществляется на рабочих станциях, на которых, как правило, функционирует одна из, так называемых, "настольных СУБД" - Access, FoxPro, Paradox и т.п..

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

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


Рис. Сравнение файл-серверной и клиент-серверной моделей

В клиент-серверной системе функционируют (как минимум) два приложения - клиент и сервер, делящие между собой те функции, которые в файл-серверной архитектуре целиком выполняет приложение на рабочей станции. Хранением и непосредственным манипулированием данными занимается сервер баз данных, в качестве которого может выступать Microsoft SQL Server, Oracle, Sybase и т.п..

Формированием пользовательского интерфейса занимается клиент, для построения которого можно использовать целый ряд специальных инструментов, а также большинство настольных СУБД. Логика обработки данных может выполняться как на клиенте, так и на сервере. Клиент посылает на сервер запросы, сформулированные, как правило, на языке SQL. Сервер обрабатывает эти запросы и передает клиенту результат (разумеется, клиентов может быть много).

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

Что дает архитектура клиент-сервер?

Посмотрим на данную архитектуру с точки зрения потребностей бизнеса. Какие же качества привносит клиент-сервер в информационную систему?

Надежность

Сервер баз данных осуществляет модификацию данных на основе механизма транзакций, который придает любой совокупности операций, объявленных как транзакция, следующие свойства:

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

Механизм транзакций, поддерживаемый сервером баз данных, намного более эффективен, чем аналогичный механизм в настольных СУБД, т.к. сервер централизованно контролирует работу транзакций. Кроме того, в файл-серверной системе сбой на любой из рабочих станций может привести к потере данных и их недоступности для других рабочих станций, в то время, как в клиент-серверной системе сбой на клиенте, практически, никогда не сказывается на целостности данных и их доступности для других клиентов.

Масштабируемость

Масштабируемость - способность системы адаптироваться к росту количества пользователей и объема базы данных при адекватном повышении производительности аппаратной платформы, без замены программного обеспечения.

Общеизвестно, что возможности настольных СУБД серьезно ограничены - это пять-семь пользователей и 30-50 Мб, соответственно. Цифры, разумеется, представляют собой некие средние значения, в конкретных случаях они могут отклоняться как в ту, так и в другую сторону. Что наиболее существенно, эти барьеры нельзя преодолеть за счет наращивания возможностей аппаратуры.

Системы же на основе серверов баз данных могут поддерживать тысячи пользователей и сотни ГБ информации - дайте им только соответствующую аппаратную платформу.

Безопасность

Сервер баз данных предоставляет мощные средства защиты данных от несанкционированного доступа, невозможные в настольных СУБД. При этом, права доступа администрируются очень гибко - до уровня полей таблиц. Кроме того, можно вообще запретить прямое обращение к таблицам, осуществляя взаимодействие пользователя с данными через промежуточные объекты - представления и хранимые процедуры. Так что администратор может быть уверен - никакой слишком умный пользователь не прочитает то, что ему читать неположено.

Гибкость

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

Как уже говорилось, в файл-серверной архитектуре все три слоя реализуются в одном монолитном приложении, функционирующем на рабочей станции. Поэтому изменения в любом из слоев приводят однозначно к модификации приложения и последующему обновлению его версий на рабочих станциях.

В двухуровневом клиент-серверном приложении, показанном на рисунке выше, как правило, все функции по формированию пользовательского интерфейса реализуются на клиенте, все функции по управлению данными - на сервере, а вот бизнес-правила можно реализовать как на сервере используя механизмы программирования сервера (хранимые процедуры, триггеры, представления и т.п.), так и на клиенте.

В трехуровневом приложении появляется третий, промежуточный уровень, реализующий бизнес-правила, которые являются наиболее часто изменяемыми компонентами приложения (см. рис. Трехуровневая модель клиент-серверного приложения )

Рис. Трехуровневая модель клиент-серверного приложения

Наличие не одного, а нескольких уровней позволяет гибко и с минимальными затратами адаптировать приложение к изменяющимся требованиям бизнеса.

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

1) В файл-серверной системе мы "просто" вносим изменения в приложение и обновляем его версии на рабочих станциях. Но это "просто" влечет за собой максимальные трудозатраты.

2) В двухуровневой клиент-серверной системе, если алгоритм расчета зарплаты реализован на сервере в виде правила расчета зарплаты, его выполняет сервер бизнес-правил, выполненный, например, в виде OLE-сервера, и мы обновим один из его объектов, ничего не меняя ни в клиентском приложении, ни на сервере баз данных.

Клиент-серверные технологии

Почти все модели организации взаимодействия пользователя с БД построены на основе клиент-серверной технологии. Предполагается, что каждое такое приложение отличается способом распределения функций: клиентская часть отвечает за целевую обработку данных и организацию взаимодействия с пользователем, серверная часть обеспечивает хранение данных - обрабатывает запросы и посылает результаты клиенту для специальной обработки. Типовая архитектура клиент-серверной технологии представлена на рис. 4.1:

Рис. 4.1. Типовая архитектура клиент-серверной технологии

Часть функций центральных ЭВМ взяли на себя локальные компьютеры. Любое программное приложение в этом случае представляется из трех компонентов: компонент представления, реализующий интерфейс с пользователем; прикладной компонент, обеспечивающий выполнение прикладных функций; компонент доступа к информационным ресурсам (менеджер ресурсов), выполняющий накопление информации и управление данными.

На основе распределения этих компонентов между рабочей станцией и сервером сети выделяют модели архитектуры «клиент-сервер»:

· модель доступа к удаленным данным (рис. 4.2). На сервере расположены только данные:

Рис. 4.2. Модель доступа к удаленным данным

Данная модель характеризуется невысокой производительностью, так как вся информация обрабатывается на рабочих станциях; кроме того, поддерживается низкая скорость обмена при передаче больших объемов информации с сервера на рабочие станции;

· модель сервера управления данными (рис. 4.3):

Рис. 4.3. Модель сервера управления данными

Особенности данной модели: уменьшение объемов информации, передаваемых по сети, так как выборка необходимых информационных элементов осуществляется на сервере, а не на рабочих станциях; унификация и широкий выбор средств создания приложений; отсутствие четкого разграничения между компонентом представления и прикладным компонентом, что затрудняет совершенствование вычислительной системы. Целесообразно использовать в случае обработки умеренных объемов информации, при этом сложность прикладного компонента должна быть невысокой,

· модель комплексного сервера (рис. 4.4):

Рис. 4.4. Модель комплексного сервера

Преимущества модели: высокая производительность, централизованное администрирование, экономия ресурсов сети. Такой сервер оптимален для крупных сетей, ориентированных на обработку больших и увеличивающихся со временем объемов информации;

· трехзвенная архитектура «клиент-сервер» (рис. 4.5). Используется при усложнении и увеличении ресурсоемкости прикладного компонента.

Рис. 4.5. Трехзвенная архитектура

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

В рамках архитектуры «клиент-сервер» существуют два основных понятия:

· «тонкий» клиент. Используется мощный сервер БД и библиотека хранимых процедур, позволяющих производить вычисления, реализующие основную логику обработки данных, непосредственно на сервере. Клиентское приложение, соответственно, предъявляет невысокие требования к аппаратному обеспечению рабочей станции;

· «толстый» клиент реализует основную логику обработки на клиенте, а сервер представляет собой в чистом виде сервер БД, обеспечивающий исполнение только стандартных запросов на манипуляцию с данными (как правило - чтение, запись, модификацию данных в таблицах реляционной БД).

Сетевые ИТ

Электронная почта . Возникшая самой первой, эта форма обмена электронными сообщениями (e-mail) продемонстрировала саму возможность практически мгновенного общения посредством компьютерных сетей. Архитектурно предназначенная для обмена сообщениями между двумя абонентами, она позволила обмениваться информацией группам людей. Такой модификацией стали группы или списки рассылки. С помощью ПО для работы с электронной почтой можно создавать электронные сообщения и делать вложения в них. Функция вложения используется для отправки по почте документов любого типа, например текстовых документов, электронных таблиц, мультимедиа файлов, файлов БД и т.д. Разработанное позже ПО для фильтрации текста расширило возможности электронной почты, чтобы помочь пользователю в структурировании, направлении и фильтрации сообщений. Потребность в этих услугах обусловлена тем, что постоянно растет количество почты, которая почти или совсем не нужна пользователю (Spam). ПО для фильтрации может обеспечивать доставку пользователям только персональных сообщений, содержащих важные для них новости, а также помогает находить информацию, необходимую пользователям в процессе принятия решений.

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

Интерактивное общение (чаты). С развитием телекоммуникаций все большее количество пользователей начинают работать в Интернете в режиме постоянного присутствия, поэтому появился сервис общения в режиме реального времени, когда абонент получает сообщение в течение незначительного промежутка времени после отправки его собеседником.

Наиболее распространенными современными средствами интерактивного общения являются Web-приложения, которые поддерживают следующие формы организации общения:

o Гостевые книги. Первая и самая простая форма. Простейшая гостевая книга представляет собой список сообщений, показанных от последних к первым, каждое из которых оставлено в ней каким-либо посетителем.

o Форумы . Первые форумы появились как усовершенствование гостевых книг и организовывали сообщения в ветви - как в телеконференциях. Сообщения пользователей в форумах группируются по темам, которые задаются, как правило, первыми сообщениями. Все посетители могут увидеть тему и разместить свое сообщение - в ответ на уже написанные. Темы группируются в тематические форумы, управление системой осуществляют неформальные администраторы и модераторы. Наиболее развитые форумы начинают обладать первыми признаками социальных сетей - между участниками могут быть установлены долговременные социальные связи по интересам.

o Блоги (Web Log - Web-журнал, Web-протокол). В этих сервисах каждый участник ведет собственный журнал - оставляет записи в хронологическом порядке. Темы записей могут быть любыми, самый распространенный подход - это ведение блога как собственного дневника. Другие посетители могут оставлять комментарии на эти записи. В этом случае пользователь, помимо возможности вести свой журнал, получает возможность организовывать листинговый просмотр - список записей из журналов «друзей», регулировать доступ к записям, искать себе собеседников по интересам. На базе таких систем создаются сообщества по интересам - журналы, которые ведутся коллективно. В таком сообществе его членом может быть свободно размещено любое сообщение по направлению деятельности сообщества.

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

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

· Работа в среде проводится сеансами. Каждый сеанс начинается с того, что пользователь указывает свое имя и подтверждает свою личность вводом пароля. Для удобства сеансовость участия обычно скрывается от пользователя техническими средствами, но, тем не менее, идентификация пользователя происходит постоянно.

· Помимо учетных данных, пользователь настраивает окружение - внешний вид, дополнительные данные о себе, указывает свои интересы, желательные контакты, темы для общения и т.д.

· Социальные сети и поддерживающие их сервисы оказались чрезвычайно эффективным методом обеспечения посещаемости сайтов, обратной связи, они постепенно стали одним из средств наполнения контента сайта содержимым, имеющим реальную коммерческую и социальную ценность.

На основе последнего подхода появилось и быстро набрало популярность довольно большое количество социальных Web-сервисов, объединенных общим названием сервисы Web 2.0. Можно указать некоторые такие ресурсы:

o Социальные закладки . Некоторые веб-сайты позволяют пользователям предоставлять в распоряжение других список закладок или популярных веб-сайтов. Такие сайты также могут использоваться для поиска пользователей с общими интересами. Пример: Delicious.

o Социальные каталоги напоминают социальные закладки, но ориентированы на использование в академической сфере, позволяя пользователям работать с БД цитат из научных статей. Примеры: Academic Search Premier, LexisNexis Academic University, CiteULike, Connotea.

o Социальные библиотеки представляют собой приложения, позволяющие посетителям оставлять ссылки на их коллекции, книги, аудиозаписи, доступные другим. Предусмотрена поддержка системы рекомендаций и рейтингов. Примеры: discogs.com, IMDb.com.

o Многопользовательские сетевые игры имитируют виртуальные миры с различными системами подсчета очков, уровней, состязательности, победителей и проигравших. Пример: World of Warcraft.

o Многоязычные социальные сети позволяют налаживать социальные связи между людьми, говорящими на разных языках. При этом используется специальное ПО, позволяющее переводить фразы с одного языка на другой в режиме реального времени. Примеры: Dudu.

o Геосоциальные сети формируют социальные связи на основании географического положения пользователя. При этом используются различные инструменты геолокации (например, GPS или гибридные системы типа технологии AlterGeo), которые дают возможность определять текущее местонахождение того или иного пользователя и соотносить его позицию в пространстве с расположением различных мест и людей вокруг.

o Профессиональные социальные сети создаются для общения на профессиональные темы, обмена опытом и информацией, поиска и предложения вакансий, развития деловых связей. Примеры: Доктор на работе, Профессионалы.ру, MyStarWay.com, LinkedIn, MarketingPeople, Viadeo.

o Сервисные социальные сети позволяют пользователям объединяться в online режиме вокруг общих для них интересов, увлечений или по различным поводам. Например, некоторые сайты предоставляют сервисы, с помощью которых пользователи могут размещать для общего доступа персональную информацию, необходимую для поиска партнеров. Примеры: LinkedIn, ВКонтакте.

o Коммерческие социальные сети ориентированы на поддержку бизнес-транзакций и формирование доверия людей к брендам на основе учета их мнений о продукте, тем самым позволяя потребителям участвовать в продвижении продукта и расширяя их осведомленность.