В настоящее время в мире разработано и широко применяется несколько десятков программ, реализующих эти функции. Практически для каждой операционной системы существует целый ряд таких программ. Некоторые из них являются независимыми от операционной системы и могут использоваться одновременно в разных ОС. Но в подавляющем большинстве Web-серверы ориентированы на применение только в одной операционной системе. Среди них есть как коммерческие программы, так и распространяемые бесплатно. Иногда функции Web-сервера являются только частью функций, заложенных разработчиками в программу. Кроме минимального набора выполняемых задач, определяющих основные функции Web-сервера, большинство программ содержит в себе много дополнительных возможностей. К ним относятся ограничение прав доступа к отдельным документам, возможность криптографической защиты передаваемых и принимаемых данных, создания на одном компьютере нескольких Web-серверов с разными доменными именами, использования нестандартных портов входа для сервера. Кроме этого от Web-серверов часто требуется поддержка работы с системами управления базами данных и языками Perl и Java. Кроме набора функций, существенное влияние на выбор Web-сервера оказывают простота настройки и удобство в администрировании. Немаловажное значение для высоко посещаемых серверов имеет также быстрота ответа программы на запрос клиента. На сегодняшний день (по данным обзора Netcraft Web Server Survey) бесспорным лидером среди Web-серверов является бесплатно распространяемый сервер Apache. В пятерку лидеров входят также серверы Microsoft Internet Information Server, Netscape, NCSA и WebSite.
2.4.2. Трехзвенная архитектура клиент-сервер.
Обыкновенно для небольших организаций разработчики применяют двухзвенную архитектуру клиент-сервер, когда с рабочих станций осуществляется удаленный доступ к базе данных, и не более того. В самых простых, примитивных системах даже не используются возможности, предоставляемые пользователям РСУБД (Распределения Управления Базами данных), какие, как триггеры и сохраненные процедуры; и хотя разработчики именуют подобные системы клиент-серверами, они имеют весьма мало общего с истинными распределенными приложениями. Более того, идеология «толстого клиента» принуждает к установке на рабочих местах весьма дорогостоящих Wintel-компьютеров, способных произвести все основные вычисления обмен данными с удаленным сервером. Операция производится сквозь толстый многоуровневые слой провайверов, которые должны быть установлены на персональной рабочей станции и лицензированы их разработчиками для каждого рабочего места. Иногда получается совершенно нелепая вещь: если пропускная способность сети не достаточно велика или или недостаточно эффективно организован поток прохождения транзакций, то быстродействующие процессоры клиентских машин совершенно бездействуют; в противном же случае, наоборот, сервер базы данных «задыхается» и не успевает ответить каждому из многочисленных и буквально долбящих его, как дятлы, клиентов. При числе одновременно работающих клиентов более 30 необходимо переходит на трехзвенную архитектуру. В трехзвенной архитектуре всю логику работы с сервером можно возложить на специальный сервер приложения, а разделенные на отдельные фрагменты приложения уменьшают нагрузку на и на машину-клиента, и на сервер, перенося соответствующие операции на специальный сервер. Серверная часть приложения лучше защищена, а сами приложения могут либо непосредственно адресоваться к другим серверным приложениям, либо маршрутизировать запросы к ним (рис. 2.8).
2.4.3. Архитектура Internet/Intranet.
Достоинства этой архитектуры (рис 2.9) сводятся к достоинствам соответствующей части системы клиент-сервер.
Рисунок 2.9. Универсальная схема клиент-сервер для сетей Internet/Intranet.
2.2.4. Обзор серверных программ для различных ОС.
Сегодня выпускаются Web-серверы для всех основных платформ, в том числе различных версий UNIX, Windows NT, IntranetWare фирмы Novell (дополнительный компонент NetWare 4.x), OS/2 Warp, Mac OS и даже Windows 95. Web-серверы стали доступными для массового пользователя.
Функции Web-серверов не ограничиваются пересылкой статических HTML-страниц. Java и сопутствующие языки составления сценариев представляют собой идеальную платформу разработки для Web. Во все рассмотренные продукты, за исключением Apache и ICSS, входят средства для работы с прикладными программами Java, размещенными на сервере. Ряд Web-серверов предусматривают собственные API (Application Programming Interface), а некоторые из них снабжены широко известным интерфейсом Netscape Server API (NSAPI).
Наибольшее распространение среди этих серверов получил метод программирования для Web с применением языков сценариев. Фирмы Microsoft и Netscape включили в свои пакеты даже объектно-ориентированные инструменты для быстрой разработки программ (rapid applications development – RAD), рассчитанные на серьезных разработчиков.
Web-серверы все чаще выпускаются в виде комплексов функциональных средств, встраиваемых в ОС. Универсальность сетей на базе TCP/IP означает, что в интрасети допустимо применение различных типов серверов – например, подключение сервера UNIX к сети Windows NT, - но данный подход может оказаться не самым эффективным с точки зрения использования ресурсов.
Благодаря Web-браузерам для администрирования сервера вовсе не обязательно всегда находиться в непосредственной близости от него. В большинстве продуктов имеются функции дистанционного администрирования через Web-браузер.
Чем больше число Web-узлов, участвующих в обмене конфиденциальной информацией, тем острее необходимость в надежной защите и шифровании данных. Самая распространенная форма обеспечения безопасности, применяемая на Web-серверах, - простая аутентификация, во время которой каждый пользователь должен сообщить свой идентификатор и пароль. Средствами для базовой аутентификации снабжены все рассмотренные серверы. Разработчики некоторых серверов пошли дальше, позволив ограничивать доступ по IP-адресу и имени узла.
Для защиты от непрошеных посетителей можно подвергнуть информацию процедуре шифрования. На Web-серверах для шифрования данных служит протокол защиты на уровне гнезд – Secure Sockets Layer (SSL). Для организации защищенного, шифрованного канала связи между сервером и браузером по протоколу SSL выполняется проверка подлинности сертификата. Учреждения уполномоченные выдавать сертификаты, скажем VeriSign, за плату сертифицируют серверы при помощи протокола SSL.
2.4.5. Стандарты, облегчающие создание Web-узлов.
Трудности Web-дизайнеров ныне не ограничиваются написанием программ на JavaScript, подключающих пользователей к версиям одного и того же узла для браузера Netscape или Microsoft. Пользователи мобильных вычислительных устройств (например, персональных цифровых помощников), также получившие доступ к Web, нуждаются в наличии быстро работающих текстовых версий узлов, в то время как разработчики стараются создавать богатые графикой Web-страницы, быстро отображаемые лишь при наличии скоростных каналов.
Web-дизайнерам остается лишь надеяться, что одна из организаций, занимающихся установлением стандартов, например Консорциум World Wide Web (W3C), предложит способ, благодаря которому не придется создавать отдельных версий Web-узлов для каждого типа клиентов.
Между тем стандарт прозрачного выбора типа информационного наполнения существует, причем еще с 1989 года. Проблема в том, что полностью его не поддерживает почти ни один Web-сервер.
Функция выбора типа информационного наполнения является частью протокола HTTP. Она же используется для отправки пользователям загружаемых шрифтов, предусмотренных спецификацией Cascading Style Sheets 2.0.
Известны лишь два Web-сервера, полностью поддерживающих эту функцию, - Apache и Jigsaw. В частности, функция выбора типа информационного наполнения используется на Web-узле для локализации: сервер автоматически устанавливает язык текста согласно данным, полученным от браузера пользователя. Узел поддерживает несколько языков, но не содержит ссылок для выбора одного из них, поскольку этого не требуется.
2.4.6. Web-технологии.
HTML-страницы системы World Wide Web бывают динамические и статические. Средства, наращивающие функциональные возможности Web и позволяющие создавать динамические HTML-страницы, подразделяются на расширения серверной части и расширения клиентской части. Расширения серверной части – это программы, позволяющие повысить функциональность Web-серверов. Расширения клиентской части – это программы, позволяющие наращивать функциональные возможности браузеров. Расширения серверной части можно подразделить на следующие три категории: