Здравствуйте, подскажите пожалуйста где можно достать материалы по курсу Кросс-платформенные и многозвенные технологии, о которых говориться, к примеру, в Лекции 2. Пример "Служба мгновенных сообщений" |
Основные платформы и технологии
Web-технологии
Web -технологии чрезвычайно сильно используются в современном корпоративном программном обеспечении. Перечислим основные используемые технологии Web- программирования.
CGI-скрипты
CGI -скрипт - это программа, выполняемая на стороне сервера и следующая правилам интерфейса CGI (Common gateway interface).Исторически это первая технология "динамического" программирования для Web. CGI -скрипты могут быть как обычными исполняемыми модулями (написанными на любом языке программирования, например, на C++ ), так и сценариями ("скриптами"), написанными на интерпретируемых языках
(например, на Perl, Unix shell, Tcl.)
Последовательность действий при работе с CGI -скриптом следующая:
- Клиент посылает HTTP '-запрос Web -серверу.
- Web -сервер инициирует выполнение CGI -скрипта (т.е. просто запускает программу, если она представляет собой исполняемый модуль, либо запуская соответствующий интерпретатор с подачей ему на вход текста сценария, если это сценарий) и передает ему необходимые данные.
- CGI -скрипт выполняется, и по окончании работы передает результаты (ответ на исходный запрос) вызвавшему его серверу. При этом CGI -скрипт может производить сколь угодно сложные действия, например, обращаться к другим удаленным программам и т.п.
- Web -сервер отдает полученные от 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),ограничивает доступ "ненадежных" апплетов к компьютеру пользователя. Если разработчику апплета понадобилось расширить возможности апплета - ему необходимо поставить цифровую подпись, тогда апплет воспринимается броузером как "надежный", и вы сами решаете, доверять апплету или нет. Хотя цифровая подпись не обеспечивает вашей безопасности, вы можете установить происхождение апплета, при возникновении проблем. "Песочница" включает в себя три основных механизма защиты:
- проверки на уровне JVM;
- защита на уровне языка;
- интерфейс JavaSecurity.
Апплеты могли бы быть почти идеальным со всех точек зрения решением для создателей динамических Web -сайтов и корпоративных Web -систем: они не требуют затрат на установку, соответствуют лозунгу сторонников чистого HTML ("написано однажды -работает везде") и имеют собственный богатый графический пользовательский интерфейс. Но до сих пор эти надежды не сбылись. Апплеты, в общем, используются сравнительно редко. Возможно, потому, что некоторые разработчики неверно оценили накладные расходы при интерпретации байт-кода в виртуальной машине Java.У других множество нареканий вызывает защита, основанная на принципе "песочницы" ( sandbox ), который не позволяет Java использовать в полной мере локальные и удаленные службы. Третьи отмечают различия между виртуальными машинами основных браузеров, имеющихся на рынке. Так или иначе до сих апплеты не оправдали возложенных на них ожиданий, и Web -приложения на базе HTML не были вытеснены Web -приложениями с равным уровнем переносимости и мобильности, но функционально более мощным графическим пользовательским интерфейсом.
Тем не менее, при помощи апплетов можно сделать немало полезного. Вот несколько ярких примеров.
- AnywareOffice компании VistaSource (http ://www.anywareoffice.com/). VistaSource использует апплет Java для реализации Applixware,своего популярного офисного пакета, в браузерах, ориентированных на Java.Когда провайдер услуг доступа к приложениям использует AnywareOffice,приложения (такие, как текстовый процессор) работают на сервере, но отображаются в апплете.
- QuestAgent компании JObjects (http://www.jobjects.com/). Этот апплет представляет собой кроссплатформенный механизм поиска, часто включаемый в состав компакт-диска с публикациями на базе HTML.Браузер может отображать информационное наполнение таких публикаций, но не может выполнять поиск в своем индексе. QuestAgent предлагает мобильный поиск и позволяет отказаться от необходимости создавать и отображать оригинальный механизм поиска.
- MindTerm компании Mindbright Technologies (http://www.mindbright.com/). Предположим, что пользователь оказался вне офиса, и при нем нет мобильного компьютера, а ему необходимо передать файл на домашний сервер. MindTerm - реализация защищенной версии интерпретатора команд Secure Shell (SSH) на базе Java позволяет преобразовать любой ориентированный на Java браузер в клиент SSH,который можно применять для шифрования сеансов передачи файла.
Сервлеты
Сервлеты - это программы на Java,которые работают на серверном компьютере.Их выполнение инициируется Web -сервером или сервером приложений (Application Server) по запросу клиента. Последовательность выполнения сервлета следующая.
- Клиент посылает запрос Web -серверу или серверу приложений.
- Web -сервер или сервер приложений инициирует выполнение сервлета, передавая ему необходимые данные.
- Сервлет выполняется (как правило, на виртуальной Java -машине сервера), и по окончании работы передает результаты (ответ на исходный запрос) вызвавшему его серверу. При этом сервлет может производить сколь угодно сложные действия, например, обращаться к другим сервлетам или удаленным программам и т.п. Обмен данными между сервлетом сервлетом и сервером происходит при помощи специального Java-API (его главные составляющие это классы HttpServletRequest для передачи запроса и HttpServletResponse для ответа).
- Сервер отдает полученные от сервлета данные клиенту.
На самом деле схема, как правило, чуть более сложная. В связке с сервером работает базовый сервлет. Именно ему сервер отправляет данные и от него же получает ответ, отправляемый клиенту. Фактически, базовый сервлет является "мозгом" сервера. Основная функция этого сервлета - прочитать запрос клиента, расшифровать его и, в соответствиии с расшифровкой, передать работу сервлету, отвечающему за конкретный тип запрашиваемой информации. Зачастую, для достижения скорости, роль базового сервлета играет сам сервер. Именно по такой схеме работает, скажем, 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 также уже стал фактически промышленной технологией).
Заключение
В современном развитии программных и аппаратных платформ прослеживаются две отчетливые тенденции:
- программные и аппаратные платформы становятся все более и более совместимыми друг с другом, границы между ними становятся легко преодолимыми;
- все время появляются новые технологии, которые предлагают разные способы решения одних и тех же задач.
Таким образом, одна и та же задача по разработке программного продукта может быть решена множеством разных способов, и менеджер проекта по разработке программного продукта должен уметь выбирать платформы и технологии, исходя из особенностей задачи и конкретных условий.