Технологии обслуживания пользователей в сетевых информационных системах
Если успехи в области аппаратной части компьютеров известны всем, то прогресс программных технологий, лежащих в основе функционирования и создания ИС не столь очевиден. Первые ИС создавались для больших ЭВМ и имели унитарную структуру, т.е. представляли собой по сути одну программу, включающую в себя все функции по хранению данных, их обработке и представлению, а также по контролю доступа к данным со стороны пользователей системы. Такая организация ИС имеет ряд достоинств. Это, в частности, централизованное хранение и обработка информации, простота администрирования системы, а также очень эффективное использование вычислительных ресурсов - для выполнения важных задач может быть выделена вся мощь вычислительной системы.
С ростом мощности компьютеров росла и сложность ПО, появилась необходимость структурировать программы - выделить отдельные части, отвечающие за работу с данными, бизнес-логику и интерфейс с пользователем. Это были все еще части одной программы, однако они становились все более независимыми и универсальными. Логическое развитие этой тенденции в наши дни и привело к появлению архитектуры клиент-сервер. В сущности, практически все "новейшие" технологии как-то: трехслойная архитектура, мониторы транзакций, "сверхтонкие клиенты" впервые появились и получили развитие тридцать лет назад на компьютерах класса mainframe.
Казалось бы, если еще в 60-е годы было найдено магистральное направление, по которому пойдет развитие информационных технологий, все должны были бы работать на "сверхтонких клиентах", используя трехслойную архитектуру клиент-сервер. Однако компьютерная отрасль развивалась отнюдь не равномерно и прямолинейно - с появлением дешевых персональных компьютеров и локальных сетей возникли многочисленные информационные системы, использующие распределенную обработку информации. Серьезным препятствием к использованию этих систем в масштабах предприятия явился принципиальный недостаток распределенных систем - неэффективность управления раздельно хранящимися данными. Одним из основных условий нормальной работы ИС является возможность доступа ко всем ее данным. Если у нас нет всей информации, значит у нас нет вообще никакой информации. Таким образом, попытки построить ИС на основе сети ПК, участвующих в совместном хранении и обработке данных не увенчались успехом в связи с чрезвычайной ненадежностью такой схемы. Любая неполадка всего одного компонента - компьютера, линии связи или сбой одной из программ приводил к неработоспособности всей системы.
Только централизованное хранение данных способно обеспечить работоспособность системы, однако обработка информации может быть осуществлена и на другой машине. Такой подход позволил создать на базе ПК и рабочих станций системы распределенной обработки информации. Первыми из этого класса систем стали системы, построенные по архитектуре файл-сервер. Основной особенностью этой архитектуры явился полный отказ от централизованных вычислений. Файл-сервер выполнял лишь функции хранения данных и не принимал участия в их обработке - эта работа была возложена на клиентские машины.
Однако очень скоро стало ясно, что полный отказ от централизованного контроля данных таит в себе ряд серьезных проблем. Проблемы эти состоят уже не в отказе отдельных компонентов системы, а в логике их совместной работы. Каждое из приложений, работающее с общими данными должно придерживаться ряда весьма жестких ограничений и соглашений, обеспечивающих целостность информации при ее модификации различными модулями системы. На контроль целостности данных приходилось весьма существенная доля программного кода системы, вычислительного ресурса клиентских машин и сетевого трафика, и, тем не менее, оставались проблемы, например сбой на клиентской машине в середине выполнения операции мог привести к рассогласованию данных.
Выходом из создавшейся ситуации стала разработка концепции клиент-серверных вычислений, сочетающей в себе преимущества централизованной обработки данных унитарных систем с преимуществами распределенных вычислений систем типа файл-сервер. Ключевым отличием архитектуры клиент-сервер от архитектуры файл-сервер является абстрагирование от внутреннего представления данных (физической схемы данных). Теперь клиентские программы манипулируют данными на уровне логической схемы. Они уже не заботятся о построении индексов для ускорения выборки данных, о распределении данных по файлам, выставлении семафоров на обрабатываемые записи и т.д.
Все рутинные функции по хранению, обработке и защите данных на так называемом физическом уровне берет на себя система управления базой данных (СУБД). Со времени своего появления СУБД также активно эволюционировали, предлагая различные модели логического представления данных (иерархические, сетевые, реляционные, объектно- ориентированные). Но суть дела от этого не меняется - программе, выполняющей бизнес-функции ИС, уже не надо заботится о том, как и где хранятся данные, следить за их достаточностью и непротиворечивостью, обеспечивать условия по безопасному совместному пользованию данными несколькими пользователями. Она лишь запрашивает СУБД о предоставлении требуемых данных.
Еще одним преимуществом использования СУБД и архитектуры клиент-сервер по сравнению с файл-серверным подходом явилась возможность использовать транзакционный механизм манипулирования данными. Этот сервис, предоставляемый сервером данных, позволяет объединять несколько действий по изменению данных в одну неделимую операцию (транзакцию). Использование транзакций обеспечивает надежную защиту информации от программно-аппаратных сбоев как на клиентской, так и на серверной части ИС.
Помимо улучшения работоспособности уже готовых программ, архитектура клиент-сервер существенно облегчает и процесс создания ИС. Как уже было отмечено, прикладному программисту теперь не надо отвлекаться от описания логики работы системы на проблемы хранения данных, индексации таблиц и т.п. Транзакционный механизм позволяет не заботится о порядке модификации данных внутри одной транзакции и о способах восстановления их первоначального состояния при обнаружении исключительных ситуаций. А это в свою очередь сильно расширяет возможности командной иерархической разработки проекта - программисту уже не нужно знать внутреннее устройство функций написанных другими людьми - он может просто пользоваться ими без риска отказа работоспособности уже отлаженных модулей. Кроме того, использование в прикладных программах логического уровня представления данных и использование стандартизованных механизмов запроса к СУБД позволило писать платформо-независимые программы клиентской части ИС.
Итак, использование архитектуры клиент-сервер позволило создавать надежные (в смысле целостности данных) многопользовательские ИС с централизованной базой данных, независимые от аппаратной (а часто и программной) части сервера БД и поддерживающие графический интерфейс пользователя (ГИП) на клиентских станциях, связанных локальной сетью. Причем издержки на разработку приложений существенно сокращались. Не удивительно, поэтому, что эта технология завоевала большую популярность среди разработчиков прикладного ПО, а приложения на ее основе - широкое распространение на рынке ИС.