Обработка запроса от Web-клиента. Последовательность шагов, реализуемых Web-сервером при обработке запроса, поступившего от Web-клиента.

1. Web-навигатор или другой Web-клиент посылает Web-серверу запрос на получение от него какого-либо информационного ресурса. Запрос пере­дается в формате HTTP, а адрес ресурса указывается в формате URL.

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

3. Если запрашиваемый ресурс имеется в наличии, то Web-сервер проверя­ет права доступа к этому ресурсу и, если права не нарушены, то возвра­щает содержимое ресурса Web-клиенту.

4. Если запрос Web-клиента нарушает права доступа к ресурсу, то Web-сервер отклоняет запрос и возвращает соответствующее предупреждение клиенту.

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

Схема перенаправления запроса

6. Если Web-сервер поддерживает виртуальное дерево другого Web-сервера, то запрос будет перенаправлен на нужный ресурс по аналогии с преды­дущим шагом.

7. Если Web-сервер используется в качестве сервера-посредника (proxy-сервера), то он выступает, с одной стороны, в качестве Web-сервера для клиента, пославшего запрос, а с другой стороны — в качестве Web-клиента, который посылает запрос к другому Web-серверу.

8. После возвращения информации клиенту сервер разрывает соединение с ним.

Использование Web-сервера в качестве сервера-посредника

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

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

- предварительная обработка данных перед ответом на запрос;

- взаимодействие с внешними программами и другими серверами, напри­мер, с информационно-поисковыми системами.

Большинство современных Web-серверов, таких как Enterprise Server от корпорации Netscape и Internet Information Server от Microsoft, реализуют криптографический протокол SSL (Secure Sockets Layer), обеспечивающий поддержание конфиденциальности, целостности и подлинности передавае­мых по сети данных. Этот протокол реализован и в современных Web-навигаторах — Netscape Navigator и Internet Explorer. Данная особенность позволяет безопасно использовать Web-технологию в компьютерных сетях.

2.3. Распределенная обработка информации на основе

мигрирующих программ.

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

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

- Java-аплеты, подготовленные и используемые по технологии Java;

- программы, написанные на языке сценариев JavaScript, VBScript (Visual Basic Scripting) или VRML;

- программные компоненты ActiveX Controls, соответствующие техноло­гии ActiveX.

Наличие нескольких разновидностей мигрирующих программ объясняется их различными возможностями, а также конкуренцией между ведущими корпорациями в области программных и сетевых технологий — корпора­циями Sun Microsystems, Netscape, Microsoft и другими.

Java-технология.Технология Java была разработана компанией Sun Microsystems в начале 90-х годов в связи с возникновением острой необходимости в компьютерных программах, ориентированных на использование в сетевой среде и интегра­цию с Web-сервисом. К таким программам изначально были предъявлены требования по мобильности, предполагающие независимость от аппаратных и операционных платформ, а также безопасность и надежность обработки информации.

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

Язык Java является простым объектно-ориентированным языком програм­мирования, построенным на основе языка C++, из которого убрали все лишнее и добавили новые возможности для обеспечения безопасности и надежности распределенных вычислений. Много полезных идей было заим­ствовано из языков Objective С и SmallTalk.

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

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

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

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

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

Схема передачи и выполнения машинно-независимых Java-программ.

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

Байт-коды Java-программ обладают следующими особенностями:

- они могут не только легко интерпретироваться, но и эффективно ком­пилироваться "на лету" непосредственно в машинные коды для любой современной аппаратной платформы;

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

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

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

Байт-коды разрабатывались так, чтобы максимально сократить среднюю длину команды. Java-процессор имеет минимум регистров, стековую архи­тектуру и часто использует косвенную адресацию. Поэтому большинство из команд занимает всего один байт, к которому добавляется при необходимо­сти номер операнда. Кроме того, для обработки каждого типа данных Java-процессор имеет свой набор команд. В результате средняя длина Java-команды составляет всего 1,8 байта. Средняя длина команды для классиче­ских RISC-процессоров равна примерно 4 байтам.

Для высокой надежности и безопасности выполнения Java-аплетов преду­смотрены две важные функции:

- проверка байт-кодов перед их выполнением на целостность и правиль­ность инструкций;

- контроль и блокирование опасных действий в процессе интерпретации байт-кодов.

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

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

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

Схема подготовки и выполнения Java-аплетов

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

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

В настоящее время существует достаточное количество инструментальных средств для разработки как Java-аплетов, так и Java-приложений. Среди них - Microsoft Visual J++, Symantec Cafe, Borland Jbuilder, Sun Microsys­tems Java Workshop и ряд других.

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

Языки сценариев часто называют еще языками скриптов (script — сценарий) или макроязыками. Их интерпретируемая природа упрощает отладку и созда­ние составленных на них программ. К основным представителям языков сце­нариев, предназначенных для написания мигрирующих программ, относятся:

- язык JavaScript, разработанный совместно компаниями Netscape и Sun Microsystems, а также подобный ему язык VBScript (Visual Basic Scripting) от Microsoft;

- язык VRML (Virtual Reality Modeling Language — язык моделирования виртуальной реальности), разработанный компанией Silicon Graphics.

Язык сценариев JavaScript впервые появился в Web-навигаторе Netscape Navigator 2.0 под названием LiveScript. Впоследствии Netscape отказалась от такого названия, начав работать вместе с Sun Microsystems и попав под влияние Java. JavaScript вовсе не представляет собой производную от Java. Хотя эти языки имеют некоторые общие атрибуты, но их можно назвать не более чем дальними родственниками.

JavaScript является упрощенным интерпретируемым языком с базовыми объ­ектно-ориентированными функциями. Свойство простоты объясняется отсут­ствием жесткой архитектуры типов и семантики. Объектно-ориентированная ориентация проявляется в возможностях работы с окнами, строкой состояния и другими элементами интерфейса Web-навигатора и сетевого окружения как с объектами в иерархии, к которым можно обращаться по имени.

JavaScript беднее языка Java, но гораздо удобнее и эффективнее для ряда за­дач, связанных с обработкой Web-документов и взаимодействием с пользова­телем при его просмотре. Он имеет большое число встроенных функций и команд. Программы, написанные с помощью JavaScript, могут выводить на экран диалоговые окна, производить математические вычисления, проигры­вать различные аудио- и видеофайлы, получать новые документы, обрабаты­вать нажатие на кнопки в формах и многое другое. С помощью JavaScript можно также устанавливать атрибуты и свойства бинарных библиотек Java, a также программных модулей (plug-ins), подключенных к Web-навигатору.

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

Как и для любой другой технологии или языка, используемых в компью­терной сети, обеспечение безопасности обработки информации является первоочередной задачей. JavaScript, хотя его и нельзя назвать языком с са­мым высоким уровнем защиты, тем не менее, адекватен большинству тре­бований. В нем не реализованы некоторые возможности, поскольку они косвенно делают защиту более уязвимой. Программе на JaveScript, как и программе на языке Java, запрещено выполнять операции с локальными файлами. Поэтому программа не в состоянии изменять или получать доступ к пользовательским данным. Кроме того, язык JavaScript не поддерживает сетевые функции. Он не может, например, напрямую открыть порт TCP/IP, а способен только обеспечить загрузку объекта по заданному адресу и фор­мирование данных, передаваемых Web-серверам. Современные Web-навигаторы позволяют устанавливать уровни безопасности и управлять ими так, что программа на JavaScript может обратиться только к ограниченному кругу информации.

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

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

Нужно отметить, что реализации языка JavaScript компаний Netscape и Microsoft различаются. Эти несоответствия могут привести к несовместимо­сти при использовании Web-навигаторов Netscape Navigator и Internet Explorer. Поэтому при создании приложений на JavaScript необходима про­верка их работоспособности в среде различных программ навигации.

Язык сценариев VBScript (Visual Basic Scripting) от Microsoft во многом по­добен JavaScript. Он является подмножеством языка Visual Basic и также предназначен для программирования страниц Web. С его помощью можно заставить взаимодействовать разные объекты на Web-странице, включая программные компоненты другого типа, например, аплеты Java и про­граммные компоненты ActiveX Controls.

В отличие от макроязыков JavaScript и VBScript язык VRML разработан кор­порацией Silicon Graphics специально для создания интерпретируемых про­грамм, моделирующих трехмерные виртуальные миры. Интерпретаторы VRML подключаются к Web-навигаторам чаще всего в виде отдельных про­граммных модулей (plug-ins). Исходные тексты программ на языке VRML оформляются в виде отдельного VRML-файла и вызываются по ссылке с Web-документа при его просмотре Web-навигатором. Щелчок мышью по такой ссылке приводит к открытию отдельного окна, позволяю­щего пройтись по расположенному в нем фрагменту трехмерной реальности.

Технологии ActiveX.Под ActiveX понимается набор технологий от Microsoft, направленных на дополнение, интеграцию и унификацию существующих методов представ­ления и обработки информации в компьютерных сетях, построенных по Web-архитектуре. Основная идея ActiveX-технологий заключается в исполь­зовании одинакового способа доступа ко всем информационным ресурсам сети. В качестве основы такого унифицированного способа дос­тупа выбрана Web-технология.

Схема единообразного доступа к информационным ресурсам сети

В соответствии с ActiveX Web-навигатор должен стать частью операционной системы. Более того, методы доступа к любой информации на собственном компьютере, на сервере локальной сети или в Internet должны быть совершенно одинаковы и прозрачны для пользователя. Данная концепция час­тично уже реализована в Web-навигаторе Microsoft Internet Explorer 4.0.

С точки зрения разработки мобильных программ набор технологий ActiveX с одной стороны выступает как альтернатива, а с другой – как существенное дополнение технологий Java и JavaScript. ActiveX обеспечивает не только разработку и выполнение мобильных программ, но и реализацию ряда дополнительных возможностей, например, вызов из среды Web-навигатора функций по просмотру и редактированию документов Word, Excel и PowerPoint. В распоряжение программистов и авторов Web-документов ActiveX предоставляет набор функций API (Application Program Interface), реализо­ванный как для клиента, так и для сервера.

ActiveX поддерживает следующие типы мобильных программ, которые мо­гут быть связаны с Web-документом и передаваться на рабочую станцию для выполнения - программные компоненты ActiveX Controls;

- аплеты Java;

- программы, написанные на языках сценариев JavaScript, VBScript (Visual Basic Scripting) и VRML.

Технологии по созданию и использованию программных компонентов ActiveX Controls, а также программ, написанных на макроязыке VBScript, являются собственными разработками Microsoft.

На сервере для действенности технологий ActiveX должны функционировать общесистемные программные средства от Microsoft: операционная система Windows NT Server и Web-сервер US (Internet Information Server). Взаимодейст­вие Web-сервера US с другими приложениями, например с системой управле­ния базами данных (СУБД), обеспечивается за счет реализованных в нем ин­терфейсов ISAPI (Internet Server API) и CGI (Common Gateway Interface).

Программные компоненты ActiveX Controls представляют собой обычные исполняемые программы, которые могут загружаться с сервера для испол­нения на рабочей станции. Как и при использовании Java-аплетов ссылки на эти программы располагаются в Web-документах. Непосредственно в со­став Web-документов программные компоненты ActiveX Controls не входят. Они хранятся в отдельных файлах на сервере.

Компоненты ActiveX Controls отличаются от Java-аплетов следующими осо­бенностями:

- программы ActiveX Controls включают исполняемый код, зависящий от аппаратно-операционной платформы: байт-коды же Java-аплетов явля­ются машинно-независимыми;

- загруженные элементы ActiveX Controls остаются в клиентской системе, тогда как аплеты Java необходимо каждый раз загружать заново;

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

Учитывая, что программы ActiveX Controls по сути являются обычными программными приложениями, то их разработка может осуществляться с помощью любого языка программирования. Могут быть использованы та­кие инструментальные системы, как Visual C++, Visual Basic, Delphi, Visual J++ и ряд других. Разработан и комплексный инструментальный пакет Mi­crosoft ActiveX Development Kit (MADK).

Программные компоненты ActiveX Controls, а также программы, написан­ные на макроязыках JavaScript и VBScript, могут включать вызовы функций API ActiveX по предоставлению ряда сервисов, таких как:

- создание высококачественных мультимедийных эффектов;

- открытие и редактирование электронных документов путем обращения к приложениям, поддерживающим стандарт OLE (Object Linking and Embedding — связывание и встраивание объектов), например, к прило­жениям Microsoft Office;

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

Программы, написанные на макроязыках JavaScript и VBScript, могут авто­матизировать взаимодействие между множеством объектов, включая аплеты Java, программные компоненты ActiveX Controls и другие программы на клиентском компьютере, позволяя им работать вместе как часть интегриро­ванного активного пространства Web. Можно написать свой макроязык и добавить его интерпретатор в Web-навигатор Internet Explorer с помощью динамически загружаемой библиотеки DLL.

В сравнении с технологией Java технология ActiveX Controls имеет как не­достатки, так и преимущества.

Недостатки связаны прежде всего с более низким уровнем безопасности распределенной обработки информации. Программные компоненты ActiveX Controls, загруженные на клиентскую систему, могут обращаться к любой ее части подобно обычному приложению. Microsoft реализовала в рамках Ac­tiveX доверительную защиту на основе цифровых сертификатов, которые обеспечивают подтверждение подлинности загруженных с сети программ­ных компонентов. Однако подтверждение подлинности еще не означает подтверждение безопасности. Кроме того, схема доверительной защиты ActiveX может оказаться недейственной, когда пользователи загружают про­граммные компоненты ActiveX Controls из Internet, особенно из неизвест­ных или сомнительных источников.

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

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

По независимости от аппаратных и операционных платформ ActiveX уступает Java-технологии. Несмотря на заявление компании Microsoft, что ActiveX обеспечивает открытую многоплатформенную поддержку операционных сис­тем Macintosh, Windows и UNIX, технологии ActiveX лучше работают на платформах Microsoft Windows, поскольку разработаны преимущественно для использования функций, встроенных в эти операционные системы. Соответ­ственно в полной мере ActiveX может использоваться в сетях, работающих под управлением операционных систем Microsoft Windows.

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

Взаимодействие Web-навигатора с сервером системы управления базами дан­ных (сервером СУБД) может осуществляться двумя основными способами:

- доступ к серверу СУБД через Web-сервер;

- доступ к серверу СУБД напрямую.

2.4. Доступ к серверу СУБД через Web-сервер

Для доступа Web-навигатора к серверу СУБД через Web-сервер использует­ся система программных шлюзов. Программный шлюз, полу­чив запрос от Web-сервера, выступает в качестве посредника между серве­ром Web и сервером СУБД. Программные шлюзы разрабатываются в соответствии с определенными стандартами, определяющими способы вы­зова Web-сервером прикладных программ или функций динамических библиотек, а также способы обмена информацией с этими программными объ­ектами. Одними из наиболее распространенных стандартов данного типа являются интерфейс CGI (Common Gateway Interface — общий интерфейс шлюзов), а также его усовершенствованная спецификация, названная как FastCGI (ускоренный CGI).

Схема доступа к СУБД через CGI-программу.

Интерфейс CGI.Для доступа Web-навигатора к серверу СУБД через Web-сервер по стандарту CGI необходима соответствующая CGI-программа, выполняющая роль про­граммного шлюза между Web-сервером и сервером СУБД .

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

Поскольку CGI-программы работают независимо от Web-сервера и имеют простой общий интерфейс, разработчики Web-документов имеют возмож­ность создавать свои CGI-программы на любом языке, поддерживающем стандартные файловые операции ввода/вывода. Кроме того, при независи­мой разработке можно создавать такие приложения, которые легко перено­сятся с одного на другой Web-сервер. Существуют и стандартные CGI-программы, специально разработанные для взаимодействия Web-серверов с различными СУБД, например, программа WebDBC.

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

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

Таким образом, разработчику CGI-приложения не надо ничего знать о том, как устроен Web-сервер. Более того, ему вовсе не обязательно использовать сложные языки типа C++. CGI-программа может быть написана и на ко­мандном языке, например Peri. Главное выдержать все соглашения, накла­дываемые стандартом CGI. Такой подход существенно облегчает разработку прикладного программного обеспечения для Web вообще и для сопряжения баз данных с Web-сервером в частности.

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

Интерфейсы API и FastCGI.Для того чтобы обойти проблемы, связанные с быстродействием CGI, мно­гие поставщики Web-серверов, включая Microsoft и Netscape, разработали соответствующие интерфейсы прикладного программирования (API). Кор­порацией Microsoft был разработан интерфейс ISAPI (Internet Server API), a корпорацией Netscape — интерфейс NSAPI (Netscape Server API).

Эти интерфейсы тесно интегрированы с Web-сервером, позволяя сохранять доступность постоянно используемых процессов и данных. Программы с интерфейсом ISAPI компилируются в файлы динамически подключаемых библиотек DLL. Они загружаются в память во время первого обращения к ним и поэтому для повторного вызова этих программ не нужно порождать новый процесс. Функции интерфейса NSAPI загружаются в серверное пространство процессов. Соответственно при вызове этих функций также не порождаются дополнительные процессы. Благодаря API-интерфейсу ис­пользующая его программа может оставлять соединение с СУБД открытым, так что следующему запросу к базе данных не придется тратить время на открытие и закрытие соединения.

Однако API-интерфейсы Web-серверов — хоть и неплохое, но нестандарт­ное решение. Большинство приложений нельзя переносить с одного API на другой, и очень редко удается переносить приложения на другие платфор­мы. Кроме того, большинство приложений для Web-серверов все еще соз­даются для интерфейса CGI, поэтому переход к приложениям на базе API не представляется экономически оправданным.

Поэтому стали появляться способы построения некоторого промежуточного варианта, который, с одной стороны, удовлетворял бы требованиям мо­бильности, независимости и простоты программирования, а с другой сторо­ны — был бы достаточно эффективным. Одним из таких решений является спецификация FastCGI. Идея этой спецификации в том, что прикладная программа использует способ передачи параметров и данных, который при­меняется в CGI, но при этом не удаляется из памяти, а остается резидент­ной, обрабатывая поступающие запросы.

Таким образом, приложения на базе FastCGI, подобно CGI-программам, работают независимо от Web-сервера и запускаются через стандартные ссылки в Web-документах. Но, как и программы на базе API, программы для FastCGI являются постоянно действующими. Когда программа заканчи­вает обработку очередного запроса, ее процесс остается открытым в ожида­нии нового запроса.

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

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

Доступ к серверу СУБД напрямую.Для доступа Web-навигатора к серверу СУБД напрямую могут использо­ваться как Java-аплеты и программные компоненты ActiveX Con­trols, так и подключаемые к навигатору специализированные программные модули (plug-ins).

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

Схема доступа к СУБД с помощью Java-аплета.

Доступ Web-навигатора к серверу СУБД с помощью программных компонен­тов ActiveX Controls предполагает, как и в случае Java-аплетов, за­прос и передачу соответствующей программы на рабочую станцию, а также ее дальнейшее выполнение на рабочей станции. В этом случае взаимодействие с сервером СУБД должно выполняться через интерфейс ODBC. Если учесть, что Java исполняется Web-навигатором в режиме интерпретации мобильного кода, то требования к аппаратуре рабочей станции по производительности и объему оперативной памяти существенно возрастают.

Схема доступа к СУБД с помощью программного компонента ActiveX Controls.

Использование для доступа Web-навигатора к серверу СУБД подключаемых к навигатору специализированных программных модулей (plug-ins) требует предварительной установки соответствующего программного дополнения на рабочей станции. После этого взаимодействие с сервером СУБД будет осу­ществлять установленное программное средство, получающее управление от Web-навигатора при обработке соответствующего вызова в Web-документе.

Для избежания несовместимости взаимодействие подключенных программ­ных модулей с сервером СУБД, как и в случае программных компонентов ActiveX Controls, должно выполняться через интерфейс ODBC.

2.5. Управление информацией о ресурсах и пользователях сети.

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

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

- административная информация, включающая сведения о пользователях и сетевых ресурсах, которые не детализируют описания информацион­ных ресурсов на уровне отдельных файлов, например, файлов докумен­тов (Web-документов, обычных текстовых документов, документов Word, Excel и др.);

- детальные сведения об информационных ресурсах сети на уровне от­дельных файлов, отражающие их содержимое и адреса.

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

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

Наши рекомендации