Web -технологии чрезвычайно сильно используются в современном корпоративном программном обеспечении. Перечислим основные используемые технологии Web- программирования.
CGI -скрипт - это программа, выполняемая на стороне сервера и следующая правилам интерфейса CGI (Common gateway interface).Исторически это первая технология "динамического" программирования для Web. CGI -скрипты могут быть как обычными исполняемыми модулями (написанными на любом языке программирования, например, на C++ ), так и сценариями ("скриптами"), написанными на интерпретируемых языках
(например, на Perl, Unix shell, Tcl.)
Последовательность действий при работе с CGI -скриптом следующая:
Из современных Web -технологий это, пожалуй, самая простая, но и самая немаштабируемая, а также немобильная (платформо-зависимая) и не вполне устойчивая технология.
Ряд Web -серверов предусматривают встроенные интерпретаторы специальных языков для динамического Web -программирования. Примерами являются ASP для Web -сервера Internet Information Server (IIS) и PHP (например, для Web -сервера Apache).
ASP (или, соответственно, PHP) страница представляет собой обычный HTML файл, который кроме текста и тэгов HTML содержит еще и конструкции соответствующего языка (ASP или PHP).При запросе этого документа клиентом Web -сервер сначала просматривает документ, интерпретируя директивы соответствующего языка (ASP или PHP) и преобразуя их в обычный статический HTML,который и отдается клиенту. Важно отметить, что как ASP,так и PHP,являются полноценными языками программирования, что позволяет создать с использованием этих технологий сложнейшие Web -системы (вплоть до полномоаштабного управления производством или, например, торговлей). Эти технологии кроме того, весьма просты, и поэтому популярны, например, для создания электронных магазинов. Недостатком является принципиальная интерпретируемость этих языков, а также существенная привязка к конкретному Web- серверу (например, ASP работает только для IIS).
Апплеты - это программы на Java,работающие под управлением другой программы (как правило, интернет-браузера). Апплеты загружаются с Web сайта вместе со статическим HTML кодом, а затем выполняются браузером на компьютере пользователя (естественно, для этого браузер использует виртуальную Java -машину). Они могут использоваться для создания богатых графикой и интерактивными возможностями пользовательских интерфейсов, которые не способны выразить средствами обычного языка разметки HTML.Важно однако понимать, что апплет - это интеллектуальная программа, а не просто мультипликация (как, например, Flash анимация). Другими словами, апплет способен обрабатывать действия пользователя и динамически менять свое поведение. При работе с программами, полученными из сети, пользователь может столкнуться с неприятными последствиями их работы. Существует множество вирусов, "троянских коней" или просто некачественных программ. Апплет автоматически запускается при загрузке web- страницы, поэтому апплеты требуют повышенного режима безопасности. Для обеспечения защиты, создателями Java был разработан механизм, получивший название "песочницы" (sandbox),ограничивает доступ "ненадежных" апплетов к компьютеру пользователя. Если разработчику апплета понадобилось расширить возможности апплета - ему необходимо поставить цифровую подпись, тогда апплет воспринимается броузером как "надежный", и вы сами решаете, доверять апплету или нет. Хотя цифровая подпись не обеспечивает вашей безопасности, вы можете установить происхождение апплета, при возникновении проблем. "Песочница" включает в себя три основных механизма защиты:
Апплеты могли бы быть почти идеальным со всех точек зрения решением для создателей динамических Web -сайтов и корпоративных Web -систем: они не требуют затрат на установку, соответствуют лозунгу сторонников чистого HTML ("написано однажды -работает везде") и имеют собственный богатый графический пользовательский интерфейс. Но до сих пор эти надежды не сбылись. Апплеты, в общем, используются сравнительно редко. Возможно, потому, что некоторые разработчики неверно оценили накладные расходы при интерпретации байт-кода в виртуальной машине Java.У других множество нареканий вызывает защита, основанная на принципе "песочницы" ( sandbox ), который не позволяет Java использовать в полной мере локальные и удаленные службы. Третьи отмечают различия между виртуальными машинами основных браузеров, имеющихся на рынке. Так или иначе до сих апплеты не оправдали возложенных на них ожиданий, и Web -приложения на базе HTML не были вытеснены Web -приложениями с равным уровнем переносимости и мобильности, но функционально более мощным графическим пользовательским интерфейсом.
Тем не менее, при помощи апплетов можно сделать немало полезного. Вот несколько ярких примеров.
Сервлеты - это программы на Java,которые работают на серверном компьютере. Их выполнение инициируется Web -сервером или сервером приложений (Application Server) по запросу клиента. Последовательность выполнения сервлета следующая.
На самом деле схема, как правило, чуть более сложная. В связке с сервером работает базовый сервлет. Именно ему сервер отправляет данные и от него же получает ответ, отправляемый клиенту. Фактически, базовый сервлет является "мозгом" сервера. Основная функция этого сервлета - прочитать запрос клиента, расшифровать его и, в соответствиии с расшифровкой, передать работу сервлету, отвечающему за конкретный тип запрашиваемой информации. Зачастую, для достижения скорости, роль базового сервлета играет сам сервер. Именно по такой схеме работает, скажем, Web -сервер Jakarta Tomcat.По сути дела, в этой схеме нет ничего принципиально нового по сравнению с CGI- скриптами, кроме, конечно, большей унифицированности и существенно меньшей зависимости от платформ (благодаря использованию Java).Действительно, сервлеты и были разработаны, чтобы заменить CGI -скрипты.
Среда исполнения сервлетов, кроме того, обеспечивает некоторые полезные и экономящие время возможности, включая преобразование HTTP-запросов из сети в удобный для использования HttpServletRequest объект, обеспечивая выходной поток для программиста, чтобы использовать его для ответа, и преобразование удобного в работе объекта HttpServletResponse в HTTP-ответ,который может быть послан обратно по сети. Она также обеспечивает удобные возможности управления сессиями, в том числе хранения состояния сессии, что позволяет, например, назначать ресурсы (такие как подключения к базе данных), которые могут использоваться для многократных запросов.
По сравнению с апплетами сервлеты имеют преимущества с архитектурной точки зрения. Если апплет, посланный по сети, окажется в несовместимой с ним виртуальной машине Java,то он, скорее всего, корректно работать не будет. Сервлет развертывается в более управляемой среде. Так как параметры JVM известны, проблем совместимости не возникает. Более того, среда, которая окружает данную виртуальную машину, может увеличивать производительность сервлета. Некоторые серверы Java -приложений могут компилировать сервлеты в "родной" для себя код и тем самым значительно увеличивать скорость выполнения. Другие серверы запускают параллельно несколько JVM,иногда в различных процессах хостовой ОС. Эти стратегии увеличивают масштабируемость и отказоустойчивость службы.
Вариантом сервлета является JSP -страница (Java Server Pages). JSP -страница, подобно ASP или PHP скрипту представляет собой обычный HTML файл с записанным внутри него при помощи специального синтаксиса исходным Java -кодом сервлета. Каждая JSP -страница автоматически преобразуется в сервлет Web -сервером при запросе на эту страницу со стороны клиента. Затем сервлет выполняется по описанной схеме. Подытоживая, можно сказать, что сервлеты имеют преимущество максимальной переносимости: они могут работать на большем количестве Web -серверов или серверов приложений и на большем количестве платформ, чем любая другая технология динамических Web -приложений, доступная сегодня. Следует также отметить, что API сервлета намного проще в изучении и в использовании, чем технология EJB,поэтому и применяется пока что чаще (хотя EJB также уже стал фактически промышленной технологией).
В современном развитии программных и аппаратных платформ прослеживаются две отчетливые тенденции:
Таким образом, одна и та же задача по разработке программного продукта может быть решена множеством разных способов, и менеджер проекта по разработке программного продукта должен уметь выбирать платформы и технологии, исходя из особенностей задачи и конкретных условий.