Языки разработки веб-приложений

Содержание 

 

     Введение

    В настоящее время Интернет стал неотъемлемой частью жизни в большинстве развитых и развивающихся стран. За период в пять лет аудитория всемирной паутины перевалила за 50 миллионов пользователей и продолжает неуклонно возрастать [1].

    Как отметил Александр Ложечкин, директор департамента стратегических технологий Microsoft в России, – "Веб уже давно  прочно вошел в жизнь каждого  из нас. Сегодня веб-приложения и  сервисы доступны не только через  ПК, но и мобильное устройство. Компании самого разного объема бизнеса все активней используют Веб для повышения эффективности, начиная с корпоративных порталов и порталов совместной работы и заканчивая облачной инфраструктурой. Веб является социально-значимым: он объединяет огромное сообщество и предоставляет самые широкие возможности, чтобы начать свой бизнес". [2]

    Вследствие  удешевления программного и аппаратного  обеспечения для создания и поддержки  сайтов, их число в сети возрастает лавинообразно. Можно сказать, что веб-сайты – это любые программные комплексы, имеющие Интернет-интерфейс, в полном соответствии с названием: "web site" – место в паутине. Все меньше становится программных комплексов, которые не имеют (или в ближайшие годы не будут иметь) этот самый Интернет-интерфейс. Поэтому локальные программы консолидируются с вебсайтами, а грань между веб-программированием и собственно прикладным программированием становятся все тоньше.

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

 

     1. Архитектура веб-приложений и технологии их создания

    Обычно  Веб-приложения создаются как приложения в архитектуре "клиент-сервер", однако серверная часть при этом может иметь различные архитектурные решения [3].

    Схематически  такая архитектура представлена на рис.1.

Рисунок 1 Архитектура веб-приложений 

    Изначально World Wide Web (WWW) представлялась ее создателям как "пространство для обмена информацией, в котором люди и компьютеры могут общаться между собой" [4]. Поэтому первые Веб-приложения базировались на простой файл-серверной архитектуре, т.е. просто возвращали по запросу пользователей статические HTML-страницы. Таким образом, Веб начиналась как простая документо-ориентированная среда.

    Следующий этап развития Веб связан с появлением уже приложений, которые базировались на таких интерфейсах, как CGI (или FastCGI), а в дальнейшем – на ISAPI. Common Gateway Interface (CGI) [5, 6] – это стандартный интерфейс работы с серверами, позволяющий выполнять серверные приложения, вызываемые через URL. Входной информацией для таких приложений служило содержимое HTTP-заголовка (и тело запроса при использовании протокола POST). CGI-приложения генерировали HTML-код, который и возвращался браузеру. Однако основной проблемой CGI-приложений стало то, что при каждом новом клиентском запросе сервер заново выполнял CGI-программу в реальном времени, загружая ее в отдельное адресное пространство сервера.

    Появление Internet Server API (ISAPI) [4, 7] позволило не только решить проблемы производительности, связанные с использованием CGI-приложений, но и предоставить в распоряжение разработчиков расширенный программный интерфейс. ISAPI DLL могли уже ассоциироваться с расширениями имен файлов через специальную мета-базу. Именно эти два механизма (CGI и ISAPI) и послужили основой для создания первого типа Веб-приложений, в которых, в зависимости от каких-либо клиентских действий, выполнялся серверный код. Это дало возможность динамически генерировать содержимое Веб-страниц, благодаря чему Веб-контент перестал быть чисто статическим.

    Интерфейс ISAPI является особенностью Microsoft Internet Information Server. ISAPI-приложения представляют собой динамические загружаемые библиотеки (DLL), которые исполняются в адресном пространстве Веб-сервера. Через некоторое время на Веб-серверах других разработчиков также была реализована возможность выполнения приложений с помощью динамических библиотек. Для веб-серверов Netscape этот программный интерфейс назывался NSAPI (Netscape Server API). У наиболее популярного Веб-сервера Apache также имеется возможность выполнять Веб-приложения при помощи механизма Apache DSO (Dynamic Shared Objects).

    Поскольку при использовании как CGI-, так и ISAPI-приложений разработчики в основном решали одни и те же задачи, то следующим естественным шагом стало появление нового, высокоуровневого интерфейса, благодаря которому упростилась генерация HTML-кода, появилась возможность обращения к компонентам и базам данных. Таким интерфейсом стала объектная модель Active Server Pages (ASP) [8], построенная на основе ISAPI-фильтра.

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

    Вслед за ASP были созданы и другие технологии, реализующие идею размещения внутри Веб-страницы кода, выполняемого Веб-сервером. Наиболее известной из них на сегодняшний день является технология JSP (Java Server Pages). Основная идея данной технологии заключается в однократной компиляция Java-кода (т.н. сервлета) при первом обращении к нему, выполнение методов этого сервлета и помещение результатов выполнения этих методов в набор данных, отправляемых в браузер.

    Новейшая  версия технологии Active Server Pages – это ASP.NET [9], являющаяся ключевой в архитектуре Microsoft .NET Framework. При помощи ASP.NET можно создавать как Веб-приложения, так и Веб-сервисы, которые позволяют реализовать не только динамическую генерацию HTML-страниц, но и дают возможность интеграции с серверными компонентами и могут использоваться для решения широкого круга бизнес-задач, возникающих перед разработчиками современных Веб-приложений.

    В наше время клиентом Веб-сервера может быть уже не только персональный компьютер, оснащенный обычным Веб-браузером. Одновременно с широким распространением мобильных устройств появилась и задача предоставления Веб-серверами данных, которые могут быть интерпретированы этими устройствами. Поскольку характеристики мобильных устройств скромнее в сравнении с характеристиками ПК (ограниченный размер экрана, меньший объем памяти, для старых моделей – возможность работы только в текстовом режиме), то для них существуют и другие протоколы передачи данных (WAP – Wireless Access Protocol) и соответствующие языки разметки (WML – Wireless Markup Language, СHTML – Compact HTML и т.п. [10]). При этом передача данных на мобильное устройство производится или в соответствующем формате (путем создания специальных версий сайтов), либо, что более удобно, происходит опознание типа устройства в момент его обращения к серверу и преобразование исходного документа (например, в формате XML) в формат, требующийся данному мобильному устройству (например, с помощью XSLT-преобразования).

    Другим  способом поддержки различных типов  клиентов является создание "разумных" серверных компонентов, которые  способны генерировать различный код  в зависимости от типа клиента (как это реализовано в Microsoft ASP.NET).

    Другим  направлением развития клиентских частей Веб-приложений стало размещение некоторой части логики приложения (такой как проверка корректности вводимых данных) в самом Веб-браузере. В частности, современные Веб-браузеры способны интерпретировать скриптовые языки (VBScript, JavaScript), код на которых, как и ASP-код, внедряется в Веб-страницу, но интерпретируется не Веб-сервером, а браузером и соответственно выполняется на клиентском устройстве. Кроме того, современные браузеры способны отображать и выполнять Java-аплеты – специальные Java-приложения, которые пользователь получает в составе Веб-страницы, а некоторые из браузеров могут также служить контейнерами для элементов управления ActiveX, которые выполняются в адресном пространстве браузера специальных COM-серверов, также получаемых в составе Веб-страницы. Посредством Java-аплетов и элементов управления ActiveX можно реализовать практически любую функциональность.

Рисунок 2 – Трехзвенная архитектура веб-приложений 

    Стоит отметить, что с ростом объема используемых данных и числа посетителей Веб-сайтов возрастают и требования к надежности, производительности и масштабируемости Веб-приложений. Следующим этапом эволюции подобных приложений стало отделение бизнес-логики, реализованной в Веб-приложении, а нередко и сервисов обработки данных и реализации транзакций от его интерфейса. В этом случае в самом Веб-приложении обычно остается так называемая презентационная часть, а бизнес-логика, обработка данных и реализация транзакций переносятся в сервер приложений в виде бизнес-объектов. В зависимости от типа сервера приложений такие бизнес-объекты могут быть выполняющимися самостоятельно COM-серверами, CORBA-серверами, а также объектами COM+, выполняющимися с помощью служб компонентов MS Windows, или объектами EJB (Enterprise Java Beans), исполняемыми сервером приложений, поддерживающим спецификацию J2EE (Java 2 Enterprise Edition). В качестве механизма доступа к данным подобные объекты обычно используют OLE DB, ODBC, JDBC (в зависимости от архитектурной реализации самого бизнес-объекта).

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

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

    Хронология  развития веб-технологий отражена на рис.3.

Рисунок 3 Хронология развития веб-технологий

    Обобщая вышесказанное можно выделить основные особенности веб-архитектуры [11]:

  • отсутствие необходимости использовать дополнительное ПО на стороне клиента, что позволяет реализовать кросс-платформенную клиентскую часть;
  • возможность подключения практически неограниченного количества клиентов;
  • объем хранимых и обрабатываемых данных ограничивается лишь пропускной способностью каналов связи и мощностью веб-серверов;
  • благодаря единственному месту хранения данных и наличия системы управления базами данных обеспечиваются простота администрирования;
  • доступность зависит от работоспособности сервера и каналов передачи данных;
  • более низкая скорость отклика Веб-сервера и каналов передачи данных (сравнительно с локальной сетью);

    2. Языки веб-программирования

    Таким образом, веб-программирование (веб-разработка) – наиболее бурно развивающийся  в настоящее время раздел программирования, ориентированный на создание динамических Интернет-приложений [12].

    Языки, используемые для веб-программирования, можно разделить на две группы: клиентские и серверные.

    2.1. Клиентские языки

    Приложения, написанные с использованием данной технологии, обрабатываются на стороне  пользователя (в основном браузером).

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

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

    HTML

    HyperText Markup Language ("язык разметки гипертекста") – стандартный язык разметки документов во Всемирной паутине [13]. Большинство веб-страниц создаются при помощи HTML. Хотя HTML интерпретируется браузером и отображается в виде документа, в удобной для человека форме, он не является языком программирования в стандартном понимании этого слова. HTML (как и его продолжения xHTML/DHTML, XML) является приложением SGML (стандартного обобщенного языка разметки) и соответствует международному стандарту ISO 8879.

    HTML создавался как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области верстки. HTML успешно справлялся с проблемой сложности SGML путем определения небольшого набора структурных и семантических элементов – дескрипторов. Дескрипторы также называют "тегами". С помощью HTML можно легко создать относительно простой, но красиво оформленный документ. Помимо упрощения структуры документа, в HTML внесена поддержка гипертекста. Позднее были добавлены мультимедийные возможности. Изначально язык HTML был задуман и создан как средство структурирования и форматирования документов без их привязки к средствам воспроизведения (отображения).

    Текстовые документы, содержащие HTML-код обрабатываются специальными приложениями, которые отображают документ в уже форматированном виде. Такие приложения, называемые "браузерами" или "Интернет-обозревателями", обычно предоставляют пользователю удобный интерфейс для запроса веб-страниц, их просмотра (и вывода на иные внешние устройства) и, при необходимости, отправки введенных пользователем данных на сервер.

    CSS

    Cascading Style Sheets (каскадные таблицы стилей) – также не являются языком программирования, а представляют технологию описания внешнего вида документа, написанного языком разметки [14]. Преимущественно используется как средство оформления веб-страниц в формате HTML и XHTML, но может применяться с любыми видами документов в формате XML, включая SVG и XUL.

    XHTML

    Extensible Hypertext Markup Language (расширяемый язык разметки гипертекста) – язык разметки веб-страниц, по возможностям сопоставимый с HTML, но созданный на базе XML [14]. Как и HTML, XHTML соответствует спецификации SGML, поскольку XML является ее подмножеством.

    Стандарт XHTML построен не как самодостаточное  описание языка, а как перечень различий между HTML 4.01 и XHTML [15]:

    XML

    eXtensible Markup Language ("расширяемый язык разметки") – рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил [16]. XML – текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. XML является упрощенным подмножеством языка SGML. Годом рождения XML можно считать 1996 год, в конце которого появился черновой вариант спецификации языка, или 1998, когда эта спецификация была утверждена.

    Целью создания XML было обеспечение совместимости при передаче структурированных данных между разными системами обработки информации, особенно при передаче таких данных через Интернет. Словари, основанные на XML (например, RDF, RSS, MathML, XHTML, SVG), сами по себе формально описаны, что позволяет программно изменять и проверять документы на основе этих словарей, не зная их семантики, то есть, не зная смыслового значения элементов. Важной особенностью XML также является применение так называемых пространств имен (namespace).

    Наиболее  распространены три способа преобразования XML-документа в отображаемый пользователю вид:

  1. применение стилей CSS;
  2. применение преобразования XSLT;
  3. написание на каком-либо языке программирования обработчика XML-документа.

    Без использования CSS или XSL XML-документ отображается как простой текст в большинстве Веб-браузеров. Некоторые браузеры, такие как Internet Explorer, Mozilla и Mozilla Firefox отображают структуру документа в виде дерева, позволяя сворачивать и разворачивать узлы с помощью нажатий клавиши мыши.

    Java Script

    Объектно-ориентированный  скриптовый язык программирования JavaScript [17] обычно используется как встраиваемый язык для программного доступа к объектам приложений. Наиболее широкое применение находит в браузерах как язык сценариев для придания интерактивности веб-страницам.

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

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

    Структурно  JavaScript можно представить в виде объединения трех четко различимых друг от друга частей:

    • ядро (ECMAScript);
    • объектная модель браузера (Browser Object Model или BOM);
    • объектная модель документа (Document Object Model или DOM).

    Если  рассматривать JavaScript в отличных от браузера окружениях, то объектная модель браузера и объектная модель документа могут не поддерживаться. Объектную модель документа иногда рассматривают как отдельную от JavaScript сущность, что согласуется с определением DOM как независимого от языка интерфейса документа.

    VB Script

    Visual Basic Scripting Edition [18] – скриптовый язык программирования, интерпретируемый компонентом Windows Script Host. Является объектно-ориентированным языком программирования, схожим с языком JavaScript. В отличие от JavaScript, поддерживает и функции и процедуры (подпрограммы), не чувствителен к регистру символов в описании переменных.

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

    • автоматизация администрирования систем Windows;
    • серверный программный код в страницах ASP;
    • клиентские скрипты в браузере Internet Explorer.

    Adobe Flash

    Это мультимедийная платформа (ранее известная как Macromedia Flash), используемая для создания векторной анимации и интерактивных приложений, а также для интеграции видеороликов в веб-страницы.

    В основе Flash лежит векторный морфинг, то есть плавное "перетекание" одного ключевого кадра в другой. Это позволяет делать сложные мультипликационные сцены, задавая лишь несколько ключевых кадров для каждого персонажа.

    Flash использует язык программирования ActionScript, основанный на ECMAScript [19].

    Основной  недостаток Flash-приложений – чрезмерная требовательность к ресурсам процессора. Недостаточная мощность компьютера может повлиять на производительность операционной системы в целом, либо привести к искажению результатов работы Flash-приложения, связанных с отображением анимации или подсчетом времени.

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

    Также использование Flash для размещения текстовой информации препятствует ее индексированию поисковыми системами. Однако существует множество способов решить эту проблему.

    Microsoft Silverlight

    Это мультимедийная технология, схожая по решаемым задачам с Adobe Flash [20]. Также Microsoft Silverlight – это плагин для браузера [21], который позволяет запускать приложения, содержащие анимацию, векторную графику и аудио-видео ролики, что характерно для RIA (Rich Internet application).

    Silverlight объединяет мультимедиа, графику, анимацию и интерактивность в одной программной платформе. Он был разработан, чтобы работать с XAML и с языками Microsoft .NET. XAML используется для разметки страниц, использующих векторную графику и анимацию. Текст, содержащийся в Silverlight приложениях, доступен для поисковых систем, так как он не компилируется, а доступен в виде XAML.

    Silverlight позволяет динамически загружать  XML и использовать DOM для взаимодействия с ним. Silverlight содержит объект Downloader, благодаря которому можно скачивать скрипты, медиа файлы и т. д., если это необходимо приложению. Начиная с версии 2.0, логика программы может быть описана в любом из языков .NET, включая динамические языки программирования, такие как Iron Ruby и Iron Python, которые в свою очередь исполняются в DLR (Dynamic Library Runtime), а не CLR (Common Language Runtime).

    2.2. Серверные языки

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

    В этом случае корректность работы целиком  зависит от работы самого веб-сервера  и его программного обеспечения.

    Важным  компонентом для работы серверных языков являются системы управления базами данных. По своей сути это также сервер (физический или программный), на котором в упорядоченном виде хранится различная информация, которая может быть запрошена пользователями. Наиболее распространенными СУБД для веб-приложений в настоящее время являются:

    • MySQL;
    • PostgreSQL;
    • MS SQL Server;
    • SQLite;
    • Oracle;
    • IBM DB2.

    SSI

    Server Side Includes ("Включения на стороне сервера") [22, 23] – несложный язык для динамической "сборки" веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа. Реализован в веб-сервере Apache.

    Синтаксис SSI позволяет включать другие SSI-страницы, вызывать внешние CGI-скрипты, реализовывать  условные операции (if/else), работать с  переменными и т.п. Благодаря крайней простоте языка, сборка SSI-страниц происходит очень быстро, однако многие возможности полноценных языков программирования, например, работа с файлами, в SSI отсутствуют.

    Отдельные элементы синтаксиса SSI используются и  в других скриптовых языках, например в ASP.

    PHP

    PHP: Hypertext Preprocessor ("PHP: препроцессор гипертекста"), Personal Home Page Tools – ("Инструменты для создания персональных веб-страниц") – скриптовый язык программирования общего назначения, интенсивно применяющийся для разработки веб-приложений [24]. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.

    В области веб-программирования PHP – один из популярнейших скриптовых языков (наряду с JSP, Perl и языками, используемыми в ASP.NET) благодаря своей простоте, скорости выполнения, богатой функциональности, кроссплатформенности и распространению исходных кодов на основе лицензии PHP.

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

    Perl

    Высокоуровневый интерпретируемый динамический язык программирования общего назначения, созданный в 1987 г. Ларри Уоллом, лингвистом по образованию [25]. Название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language – "практический язык для извлечения данных и составления отчетов".

    Основной  особенностью языка считаются его богатые возможности для работы с текстом, в том числе реализованные при помощи регулярных выражений. Перл унаследовал много свойств от языков С, shell script, awk.

    Perl также знаменит огромной коллекцией дополнительных модулей CPAN.

    ASP.NET

    Технология создания веб-приложений и веб-сервисов от компании Microsoft [9]. Она является составной частью платформы Microsoft .NET и развитием более старой технологии Microsoft ASP.

    Хотя  ASP.NET берет свое название от старой технологии Microsoft ASP, она значительно от нее отличается. Microsoft полностью перестроила ASP.NET, основываясь на Common Language Runtime (CLR), который является основой всех приложений Microsoft .NET. Разработчики могут писать код для ASP.NET, используя практически любые языки программирования, в том числе, и входящие в комплект .NET Framework (C#, Visual Basic.NET, и JScript .NET). ASP.NET имеет преимущество в скорости по сравнению со скриптовыми технологиями, так как при первом обращении код компилируется и помещается в специальный кэш, и впоследствии только исполняется, не требуя затрат времени на парсинг, оптимизацию, и т. д.

Языки разработки веб-приложений