WEB - технологии ФКН ВГУ некоторые вопросы и ответы (весьма много)))

1. Передача данных в Интернет. Коммутация пакетов. Проблема совместимости
аппаратного и программного обеспечения в Интернет. Telnet и FTP.
2. Идентификация компьютеров и ресурсов в Интернет. URL, IP-адрес, доменное имя, DNS,
TCP-порты.
3. Основные утилиты: ipconfig, ping, tracert, netstat, telnet.
4. Основные протоколы Интернет: IP, TCP, HTTP, FTP, Telnet.
5. Международные организации, курирующие развитие архитектуры и протоколов
Интернет. RFC документы.
6. HTTP протокол. Структура запроса клиента и ответа сервера.
7. Спецификация MIME. Применение MIME в рамках протокола HTTP.
8. Cookie. Хранение, запись и передача Cookie.
9. Исполняемые коды программ для Web. Программы, исполняющиеся на стороне сервера
и программы, исполняющиеся на стороне клиента.
10. Язык JavaScript. Основные конструкции языка. Взаимодействие с элементами HTML
страницы. Объектная иерархия JavaScript. Обработка событий.
11. CGI стандарт. CGI сценарий. Порядок работы CGI сценария. Передача данных сценарию
методами GET и POST. Переменные окружения Web-сервера.
12. SSI и ASP. Краткая характеристика и использование в HTML страницах.
13. Язык Perl. Краткое описание.
14. Предопредёленные переменные в Perl.
15. Функции для работы с потоками в Perl. Дескриптор потока.
16. Массивы в Perl: скалярные, ассоциативные. Их инициализация и обращение к элементам
массива.
17. Предопределённый массив ENV.
18. Расширенные формы Бэкуса-Наура (EBNF). Регулярные выражения.
19. Операторы поиска и замены, посимвольной замены и связывания в Perl. Использование
предопределенных переменных в операторах поиска и замены. Функция split().
20. Введение в PHP. Краткая характеристика языка.
21. PHP: имена, константы, переменные. Внешние переменные. Переменные, содержащие
имена переменных.
22. PHP: функции, передача аргументов по ссылке, область видимости, переменные,
ссылающиеся на функции.
23. PHP: массивы, их инициализация, обращение к отдельным элементам и обход массивов в
цикле (оператор foreach). Встроенные функции массивов. Предопределенные массивы.
Многомерные массивы.
24. ISAPI – расширения и ISAPI – фильтры. Их назначение, достоинства и недостатки.
25. Программные и объектные интерфейсы для взаимодействия Web-сервера с СУБД-
сервером: DB Library, ODBC, RDO, OLE DB, ADO. Их достоинства и недостатки.
26. Недостатки языка HTML
27. Языки разметки: SGML, HTML, XML. Их связь между собой.
28. Преимущества языка XML.
29. Web-порталы. Их назначение, классификация. Средства разработки.
30. Веб-сервисы
31. Стандарты для Web-сервисов.
32. WEB - интеграция.
33. Интеграция на основе XML
34. XML
35. XSL
36. XSLT
37. Парсеры 1. Передача данных в Интернет. Коммутация пакетов. Проблема совместимости аппаратного и
программного обеспечения в Интернет. Telnet и FTP
Типы поставщиков услуг Интернета:
? просто поставщик услуг Интернета выполняет транспортную функцию для конечных
пользователей – передачу их трафика в сети других поставщиков услуг Интернета;
? поставщик интернет-контента имеет собственные информационно-справочные
ресурсы, предоставляя их содержание в виде веб-сайтов;
? поставщик услуг хостинга предоставляет свои помещения, каналы связи и серверы для
размещения внешнего контента;
? поставщик услуг по доставке контента занимается только доставкой контента в
многочисленные точки доступа с целью повышения скорости доступа пользователей к
информации;
? поставщик услуг по поддержке приложений предоставляет клиентам доступ к крупным
универсальным программным продуктам, например SAP R3;
? поставщик биллинговых услуг обеспечивает оплату счетов по Интернету;
Коммутация IP-пакетов — технология, использующаяся для оптимизации работы
маршрутизаторов при использовании неизменных или редко меняющихся маршрутов. Суть
технологии — обработка IP-пакета без участия центрального процессора маршрутизатора.
Первый пакет заданного типа обрабатывается процессором в полном объёме, все последующие
аналогичные уже не обрабатываются процессором, а коммутируются. Подобная технология
позволяет существенно снизить нагрузку на процессор маршрутизатора и уменьшить задержку в
прохождении пакета. Самым существенным недостатком этой технологии является проблема
смены маршрута, которая обнаруживается не сразу после изменения
Преимущества и недостатки обратной совместимости
Главным недостатком обратной совместимости является усложнение аппаратного или
программного обеспечения. В случае с ПО это чаще всего приводит к увеличению размеров
программного продукта, а в случае с аппаратным обеспечением это приводит усложнению
архитектуры соответствующего элемента аппаратного обеспечения. В конечном итоге всё это
приводит к увеличению стоимости производства и поддержки (часто после смены базовой
технологии невозможно найти специалистов поддержки, владеющих обеими технологиями в
достаточной степени). Между тем отсутствие обратной совместимости вызывает ряд неудобств.
Во многих случаях предприятия вынуждены пользоваться более ранними версиями
операционной системы, так как используемое программное обеспечение требует устаревшую
версию.

FTP (File Transfer Protocol — протокол передачи файлов) — протокол, предназначенный для
передачи файлов в компьютерных сетях. FTP позволяет подключаться к серверам FTP,
просматривать содержимое каталогов и загружать файлы с сервера или на сервер; кроме того,
возможен режим передачи файлов между серверами. FTP позволяет обмениваться файлами и
выполнять операции над ними через TCP-сети. Данный протокол работает независимо от
операционных систем. Исторически протокол FTP предложил открытую функциональность,
обеспечивая прозрачный перенос файлов с одного компьютера на другой по сети.

TELNET (TErminaL NETwork) — сетевой протокол для реализации текстового интерфейса по сети.
Протокол telnet работает в соответствии с принципами архитектуры «клиент-сервер» и
обеспечивает эмуляцию алфавитно-цифрового терминала, ограничивая пользователя режимом
командной строки. Приложение telnet предоставило язык для общения терминалов с
удаленными компьютерами. Достаточно было написать для каждого компьютера программное обеспечение, поддерживающее «терминал telnet», чтобы один терминал мог
взаимодействовать с компьютерами всех типов.

2. Идентификация компьютеров и ресурсов в Интернет. URL, IP-адрес, доменное имя, DNS,
TCP-порты
Структура и принципы WWW (идентификация)
Сеть WWW образуют миллионы веб-серверов, расположенных по всему миру. Веб-сервер
является программой, запускаемой на подключённом к сети компьютере и передающей данные
по протоколу HTTP. Для идентификации ресурсов в WWW используются идентификаторы
ресурсов URI. Для определения местонахождения ресурсов в этой сети используются локаторы
ресурсов URL. Такие URL-локаторы представляют собой комбинацию URI и системы DNS.
Доменное имя (или IP-адрес) входит в состав URL для обозначения компьютера (его сетевого
интерфейса), на котором работает программа веб-сервер. На клиентском компьютере для
просмотра информации, полученной от веб-сервера, применяется специальная программа —
веб-браузер. Основная функция веб-браузера - отображение гипертекстовых страниц (веб-
страниц). Для создания гипертекстовых страниц в WWW изначально использовался язык HTML.
Множество веб-страниц образуют веб-сайт.

Единый указатель ресурсов (URL — Uniform Resource Locator) — единообразный локатор
(определитель местонахождения) ресурса. URL — это стандартизированный способ записи
адреса ресурса в сети Интернет. Структура URL. Изначально локатор URL был разработан как
система для максимально естественного указания на местонахождения ресурсов в сети. Локатор
должен был быть легко расширяемым и использовать лишь ограниченный набор ASCII-символов
(к примеру, пробел никогда не применяется в URL). В связи с этим, возникла следующая
традиционная форма записи URL: ://:@:/ путь>?#
IP-адрес — уникальный сетевой адрес узла в компьютерной сети, построенной по протоколу
IP. При связи через сеть Интернет требуется глобальная уникальность адреса, в случае работы в
локальной сети требуется уникальность адреса в пределах сети. Имеет длину 4 байта. Обычно
первый и второй байты определяют адрес сети, третий байт определяет адрес подсети, а
четвертый - адрес компьютера в подсети. IP-адрес состоит из двух частей: номера сети и номера
узла. В случае изолированной сети её адрес может быть выбран администратором из
специально зарезервированных для таких сетей блоков адресов (192.168.0.0/16, 172.16.0.0/12
или 10.0.0.0/8).
Доменное имя — символьное имя, служащее для идентификации областей — единиц
административной автономии в сети Интернет — в составе вышестоящей по иерархии такой
области. Каждая из таких областей называется доменом. Общее пространство имён Интернета
функционирует благодаря DNS — системе доменных имён. Доменные имена дают возможность
адресации интернет-узлов и расположенных на них сетевых ресурсов (веб-сайтов, серверов
электронной почты, других служб) в удобной для человека форме. Полное доменное имя
состоит из непосредственного имени домена и далее имён всех доменов, в которые он входит,
разделённых точками. Например, полное имя ru.wikipedia.org. обозначает домен третьего
уровня ru, который входит в домен второго уровня wikipedia, который входит в домен верхнего
уровня org, который входит в безымянный корневой домен. В обыденной речи под доменным
именем нередко понимают именно полное доменное имя.
DNS — компьютерная распределённая система для получения информации о доменах. Чаще
всего используется для получения IP-адреса по имени хоста (компьютера или устройства),
получения информации о маршрутизации почты, обслуживающих узлах для протоколов в
домене. Основой DNS является представление об иерархической структуре доменного имени и зонах.
Каждый сервер, отвечающий за имя, может делегировать ответственность за дальнейшую часть
домена другому серверу (с административной точки зрения — другой организации или
человеку), что позволяет возложить ответственность за актуальность информации на серверы
различных организаций (людей), отвечающих только за «свою» часть доменного имени. В
протоколах TCP и UDP порт — идентифицируемый номером системный ресурс, выделяемый
приложению, выполняемому на некотором сетевом хосте, для связи с приложениями,
выполняемыми на других сетевых хостах (в том числе c другими приложениями на этом же
хосте).
3. Основные утилиты: ipconfig, ping, tracert, netstat, telnet.

Утилита ipconfig - это утилита командной строки для вывода деталей текущего соединения
компьютера с сетью и контроля над клиентским сервисом DHCP. DHCP - это сетевой протокол,
позволяющий компьютерам автоматически получать IP-адрес и другие параметры,
необходимые для работы в сети TCP/IP.
Синтаксис команды:
ipconfig/ключи

Команда ipconfig/all - отображает полную информацию по всем сетевым адаптерам.

Ping - это системная программа, предназначенная для проверки соединений в сетях на основе
TCP/IP. Она отправляет Echo-Request запросы протокола ICMP указанному узлу сети и фиксирует
поступающие ответы. Время между отправкой запроса и получением ответа позволяет
определять двусторонние задержки по маршруту и частоту потери пакетов. Что позволяет
косвенно определять загруженность каналов передачи данных и промежуточных устройств.
Полное отсутствие ICMP-ответов может также означать, что удалённый узел (или какой-либо из
промежуточных маршрутизаторов) блокирует ICMP Echo-Reply или игнорирует ICMP Echo-
Request.
Синтаксис:
ping –параметры конечное_имя
Конечное имя – это доменное имя или IP-адрес хоста
Traceroute (сокращенно tracert) — это служебная программа, предназначенная для
определения маршрутов следования пакетов в сетях TCP/IP. Работа traceroute основана на
протоколе ICMP. Traceroute выполняет отправку пакетов указанному узлу сети, отображая при
этом сведения о всех промежуточных маршрутизаторах, через которые прошли пакеты на пути к
целевому узлу. В случае проблем при доставке пакетов до какого-либо узла программа
traceroute позволяет определить, на каком именно участке сети возникли неполадки.
Синтаксис:
tracert –параметры конечное_имя
Конечное имя – это доменное имя или IP-адрес хоста
Netstat – служебная программа, отображающая статистику протокола и текущих сетевых
подключений TCP/IP. Команда netstat показывает содержимое различных структур данных,
связанных с сетью, в различных форматах в зависимости от указанных опций. Первая форма
команды показывает список активных сокетов (sockets) для каждого протокола. Вторая
форма выбирает одну из нескольких других сетевых структур данных. Третья форма
показывает динамическую статистику пересылки пакетов по сконфигурированным сетевым
интерфейсам; аргумент интервал задает, сколько секунд собирается информация между
последовательными показами. «telnet» имеет также утилита, реализующая клиентскую часть протокола. Исторически telnet
служил для удалённого доступа к интерфейсу командной строки операционных систем.
Протокол telnet может использоваться для выполнения отладки других протоколов на основе
транспорта TCP.
Утилита telnet поддерживает следующие команды:
• Close – закрытие текущего подключения.
• Display – отображение параметров операции.
• Open – подключение к сайту.
• Quit – выход из telnet.
• Set – установление параметров.
• Send – отправление строки на сервер.
• Status – вывод сведений о текущем состоянии.
• Unset – сброс параметров.

4. Основные протоколы Интернет: IP, TCP, HTTP, FTP, Telnet
Internet Protocol — межсетевой протокол. Относится к маршрутизируемым протоколам сетевого
уровня семейства TCP/IP.
Протокол IP используется для негарантированной доставки данных, разделяемых на так
называемые пакеты от одного узла сети к другому. Это означает, что на уровне этого протокола
(третий уровень сетевой модели OSI) не даётся гарантий надёжной доставки пакета до адресата.
В частности, пакеты могут прийти не в том порядке, в котором были отправлены,
продублироваться (когда приходят две копии одного пакета; в реальности это бывает крайне
редко), оказаться повреждёнными (обычно повреждённые пакеты уничтожаются) или не
прибыть вовсе. Гарантию безошибочной доставки пакетов дают протоколы более высокого
(транспортного уровня) сетевой модели OSI — например, TCP — которые используют IP в
качестве транспорта.
Transmission Control Protocol (TCP) (протокол управления передачей) — один из основных
сетевых протоколов Интернета, предназначенный для управления передачей данных в сетях и
подсетях TCP/IP.
Выполняет функции протокола транспортного уровня модели OSI.
TCP — это транспортный механизм, предоставляющий поток данных, с предварительной
установкой соединения, за счёт этого дающий уверенность в достоверности получаемых данных,
осуществляет повторный запрос данных в случае потери данных и устраняет дублирование при
получении двух копий одного пакета (см. также T/TCP). В отличие от UDP гарантирует, что
приложение получит данные точно в такой же последовательности, в какой они были
отправлены, и без потерь.
Реализация TCP, как правило, встроена в ядро системы, хотя есть и реализации TCP в контексте
приложения.
Когда осуществляется передача от компьютера к компьютеру через Интернет, TCP работает на
верхнем уровне между двумя конечными системами, например, веб-обозреватель и веб-сервер.
Также TCP осуществляет надежную передачу потока байтов от одной программы на некотором
компьютере к другой программе на другом компьютере. Программы для электронной почты и
обмена файлами используют TCP. TCP контролирует длину сообщения, скорость обмена
сообщениями, сетевой трафик. HTTP (сокр. от англ. HyperText Transfer Protocol — «протокол передачи гипертекста») — протокол
прикладного уровня передачи данных (изначально — в виде гипертекстовых документов).
Основой HTTP является технология «клиент-сервер», то есть предполагается существование
потребителей (клиентов), которые инициируют соединение и посылают запрос, и поставщиков
(серверов), которые ожидают соединения для получения запроса, производят необходимые
действия и возвращают обратно сообщение с результатом. HTTP в настоящее время повсеместно
используется во Всемирной паутине для получения информации с веб-сайтов. В 2006 году в
Северной Америке доля HTTP-трафика превысила долю P2P-сетей и составила 46 %, из которых
почти половина — это передача потокового видео и звука[1]
.
HTTP используется также в качестве «транспорта» для других протоколов прикладного уровня,
таких как SOAP, XML-RPC, WebDAV.
Основным объектом манипуляции в HTTP является ресурс, на который указывает URI
(англ. Uniform Resource Identifier) в запросе клиента. Обычно такими ресурсами являются
хранящиеся на сервере файлы, но ими могут быть логические объекты или что-то абстрактное.
Особенностью протокола HTTP является возможность указать в запросе и ответе способ
представления одного и того же ресурса по различным параметрам: формату, кодировке, языку
и т. д. Именно благодаря возможности указания способа кодирования сообщения клиент и
сервер могут обмениваться двоичными данными, хотя данный протокол является текстовым.
HTTP — протокол прикладного уровня, аналогичными ему являются FTP и SMTP. Обмен
сообщениями идёт по обыкновенной схеме «запрос-ответ». Для идентификации ресурсов HTTP
использует глобальные URI. В отличие от многих других протоколов, HTTP не сохраняет своего
состояния. Это означает отсутствие сохранения промежуточного состояния между парами
«запрос-ответ». Компоненты, использующие HTTP, могут самостоятельно осуществлять
сохранение информации о состоянии, связанной с последними запросами и ответами. Браузер,
посылающий запросы, может отслеживать задержки ответов. Сервер может хранить IP-адреса и
заголовки запросов последних клиентов. Однако сам протокол не осведомлён о предыдущих
запросах и ответах, в нём не предусмотрена внутренняя поддержка состояния, к нему не
предъявляются такие
5.Международные организации, курирующие развитие архитектуры и протоколов
Интернет. RFC документы.
Результат работы по стандартизации воплощается в документах RFC.
RFC (англ. Request for Comments) — документ из серии пронумерованных информационных
документов Интернета, содержащих технические спецификации и Стандарты, широко
применяемые во Всемирной сети. В настоящее время первичной публикацией документов RFC
занимается IETF под эгидой открытой организации Общество Интернета (ISOC). Правами на RFC
обладает именно Общество Интернет. Формат RFC появился в 1969 г. при обсуждении проекта
ARPANET. Первые RFC распространялись в печатном виде на бумаге в виде обычных писем, но
уже с декабря 1969 г., когда заработали первые сегменты ARPANET, документы начали
распространяться в электронном виде. В таблице 2 приведены некоторые из наиболее
известных документов RFC.

организации
• World Wide Web Consortium, W3C
• The Internet Engineering Task Force, IETF
• Internet Society, ISOC
• International Organization for Standardization, ISO
• Web Standards Group, WSG • The Web Standards Project
• Unicode Organization
• The Semantic Web Community Portal
Request for Comments, RFC) — документ из серии пронумерованных информационных
документов Интернета, содержащих технические спецификации и стандарты, широко
применяемые во всемирной сети. Название «Request for Comments» ещё можно перевести
как «заявка на обсуждение» или «тема для обсуждения». В настоящее время первичной
публикацией документов RFC занимается IETF под эгидой открытой организации Общество
Интернета (англ. Internet Society, ISOC). Правами на RFC обладает именно Общество
Интернета.
Содержимое RFC
Несмотря на название, запросы комментариев RFC сейчас рассматриваются как стандарты
Интернета (а рабочие версии стандартов обычно называют драфтами, от англ. draft здесь —
черновик). Согласно RFC 2026, жизненный цикл стандарта выглядит следующим образом:
1. Выносится на всеобщее рассмотрение Интернетовский черновик (Internet Draft).
Черновики не имеют официального статуса, и удаляются из базы через шесть месяцев
после последнего изменения.
2. Если черновик стандарта оказывается достаточно удачным и непротиворечивым, он
получает статус Предложенного стандарта (Proposed Standard), и свой номер RFC.
Наличие программной реализации стандарта желательно, но не обязательно.
3. Следующая стадия — Черновой стандарт (Draft Standard) означает, что предложенный
стандарт принят сообществом, в частности, существуют две независимые по коду
совместимые реализации разных команд разработчиков. В черновые стандарты ещё
могут вноситься мелкие правки, но они считаются достаточно стабильными и
рекомендуются для реализации.
4. Высший уровень — Стандарт Интернета (Internet Standard). Это спецификации с большим
успешным опытом применения и зрелой формулировкой. Параллельно с нумерацией RFC
они имеют свою собственную нумерацию STD. Список стандартов имеется в документе
STD 1 (сейчас это RFC 5000, но нумерация может измениться). Из более чем трёх тысяч RFC
этого уровня достигли только несколько десятков.
5. Многие старые RFC замещены более новыми версиями под новыми номерами, или
вышли из употребления. Такие документы получают статус Исторических (Historic)
Практически все стандарты Глобальной сети существуют в виде опубликованных заявок RFC. Но в
виде документов RFC выходят не только стандарты, но также концепции, введения в новые
направления в исследованиях, исторические справки, результаты экспериментов, руководства
по внедрению технологий, предложения и рекомендации по развитию существующих
Стандартов и другие новые идеи в информационных технологиях:
1. Экспериментальные (Experimental) спецификации содержат информацию об
экспериментальных исследованиях, интересных для интернет-сообщества. Это могут
быть, например, прототипы, реализующие новые концепции.
2. Информационные (Informational) RFC предназначены для ознакомления общественности,
не являются стандартами и не являются результатом консенсуса или рекомендациями.
Некоторые черновики, не получившие статуса Предложенного стандарта, но
представляющие интерес, могут быть опубликованы как Информационные RFC.
3. Лучший современный опыт (Best Current Practice). Эта серия RFC содержит рекомендации
по реализации стандартов, в том числе от сторонних организаций, а также внутренние
документы о структуре и процедурах стандартизации. Почти все стандарты разрабатываются под эгидой каких-либо научных или интернет-
организаций (например W3C, IETF, консорциум Юникода, Интернет2).
Запросы комментариев официально существуют только на английском языке. Строгих
требований к оформлению нет. Встречаются RFC, написанные в строгом академическом стиле,
иные — в дружеской неформальной манере. Существует традиция выпуска первоапрельских
шуточных RFC, например, RFC 1149 рассказывает о передаче пакетов IP с помощью почтовых
голубей.

6. HTTP протокол. Структура запроса клиента и ответа сервера
HTTP (HyperText Transfer Protocol - RFC 1945, RFC 2616) - протокол прикладного уровня для
передачи гипертекста.
Центральным объектом в HTTP является ресурс, на который указывает URI в запросе клиента.
Обычно такими ресурсами являются хранящиеся на сервере файлы. Особенностью протокола
HTTP является возможность указать в запросе и ответе способ представления одного и того же
ресурса по различным параметрам: формату, кодировке, языку и т. д. Именно благодаря
возможности указания способа кодирования сообщения клиент и сервер могут обмениваться
двоичными данными, хотя изначально данный протокол предназначен для передачи
символьной информации. На первый взгляд это может показаться излишней тратой ресурсов.
Действительно, данные в символьном виде занимают больше памяти, сообщения создают
дополнительную нагрузку на каналы связи, однако подобный формат имеет много преимуществ.
Сообщения, передаваемые по сети, удобочитаемы, и, проанализировав полученные данные,
системный администратор может легко найти ошибку и устранить ее. При необходимости роль
одного из взаимодействующих приложений может выполнять человек, вручную вводя
сообщения в требуемом формате.
В отличие от многих других протоколов, HTTP является протоколом без памяти. Это означает,
что протокол не хранит информацию о предыдущих запросах клиентов и ответах сервера.
Компоненты, использующие HTTP, могут самостоятельно осуществлять сохранение информации
о состоянии, связанной с последними запросами и ответами. Например, клиентское веб-
приложение, посылающее запросы, может отслеживать задержки ответов, а веб-сервер может
хранить IP-адреса и заголовки запросов последних клиентов.
Всё программное обеспечение для работы с протоколом HTTP разделяется на три основные
категории:
• Серверы - поставщики услуг хранения и обработки информации (обработка запросов).
• Клиенты - конечные потребители услуг сервера (отправка запросов).
• Прокси-серверы для поддержки работы транспортных служб.
В состав HTTP-запроса, передаваемого клиентом серверу, входят следующие компоненты.
• Строка состояния (иногда для ее обозначения используют также термины стро¬ка-
статус, или строка запроса).
• Поля заголовка.
• Пустая строка.
• Тело запроса.
Строка состояния имеет следующий формат:
метод_запроса URL_pecypca версия_протокола_НТТР
Метод, указанный в строке состояния, определяет способ воздействия на ресурс, URL
которого задан в той же строке
Версия протокола HTTP, как правило, задается в следующем формате:
HTTP/версия.модификация

Поля заголовка, следующие за строкой состояния, позволяют уточнять запрос, т.е. передавать
серверу дополнительную информацию. Поле заголовка имеет следующий формат:
Имя_поля: Значение Во многих случаях при работе в Веб тело запроса отсутствует. При запуске CGI-сценариев
данные, передаваемые для них в запросе, могут размещаться в теле запроса.

Рисунок 1. Структура запроса клиента.
Получив от клиента запрос, сервер должен ответить ему. ответ сервера также состоит из
четырех перечисленных ниже компонентов.
• Строка состояния.
• Поля заголовка.
• Пустая строка.
• Тело ответа.
Ответ сервера клиенту начинается со строки состояния, которая имеет следующий формат:
Версия_протокола Код_ответа Пояснительное_сообщение
В ответе используется такая же структура полей заголовка, как и в запросе клиента. Поля
заголовка предназначены для того, чтобы уточнить ответ сервера клиенту
В теле ответа содержится код ресурса, передаваемого клиенту в ответ на запрос. Это не
обязательно должен быть HTML-текст веб-страницы. В составе ответа могут передаваться
изображение, аудио-файл, фрагмент видеоинформации, а также любой другой тип данных,
поддерживаемых клиентом. О том, как следует обрабатывать полученный ресурс, клиенту
сообщает содержимое поля заголовка Content-type.
Поля заголовка и тело сообщения могут отсутствовать, но строка состояния является
обязательным элементом, так как указывает на тип запроса/ответа.

7.Спецификация MIME. Применение MIME в рамках протокола HTTP.
Поле с именем Content-type может встречаться как в запросе клиента, так и в ответе сервера.
В качестве значения этого поля указывается MIME-тип содержимого запроса или ответа. MIME-
тип также передается в поле заголовка Accept, присутствующего в запросе.
Спецификация MIME (Multipurpose Internet Mail Extension — многоцелевое почтовое
расширение Internet) первоначально была разработана для того, чтобы обеспечить передачу
различных форматов данных в составе электронных писем. Однако применение MIME не
исчерпывается электронной почтой. Средства MIME успешно используются в WWW и, по сути,
стали неотъемлемой частью этой системы.
Стандарт MIME разработан как расширяемая спецификация, в которой подразумевается, что
число типов данных будет расти по мере развития форм представления данных. Каждый новый
тип в обязательном порядке должен быть зарегистрирован в IANA (Internet Assigned Numbers
Authority).
До появления MIME компьютеры, взаимодействующие по протоколу HTTP, обменивались
исключительно текстовой информацией. Для передачи изображений, как и для передачи любых
других двоичных файлов, приходилось пользоваться протоколом FTP.

Заголовок Тело запроса Пустая строка
Строка состояния Поля заголовка
Запрос клиента
Метод
запроса
URL
ресурса
Версия
протокола
HTTP В соответствии со спецификацией MIME, для описания формата данных используются тип и
подтип. Тип определяет, к какому классу относится формат содержимого HTTP-запроса или
HTTP-ответа. Подтип уточняет формат. Тип и подтип отделяются друг от друга косой чертой:
тип/подтип
Поскольку в подавляющем большинстве случаев в ответ на запрос клиента сервер возвращает
исходный текст HTML-документа, то в поле Content-type ответа обычно содержится значение
text/html. Здесь идентификатор text описывает тип, сообщая, что клиенту передается символьная
информация, а идентификатор html описывает подтип, т.е. указывает на то, что
последовательность символов, содержащаяся в теле ответа, представляет собой описание
документа на языке HTML.
8. Cookie. Хранение, запись и передача Cookie

дополнительное средство под названием cookie. Механизм cookie позволяет серверу хранить
информацию на компьютере клиента и извлекать ее оттуда.
Инициатором записи cookie выступает сервер. Если в ответе сервера присутствует поле
заголовка Set-cookie, клиент воспринимает это как команду на запись cookie. В дальнейшем, если
клиент обращается к серверу, от которого он ранее принял поле заголовка Set-cookie, помимо
прочей информации он передает серверу данные cookie. Для передачи указанной информации
серверу используется поле заголовка Cookie.
Пример: клиент передает запросы на серверы А, В и С. сервер В, в отличие от А и С, передает
клиенту команду записать cookie. Последовательность запросов клиента серверу и ответов на
них будет выглядеть приблизительно следующим образом.
1. Передача запроса серверу А.
2. Получение ответа от сервера А.
3. Передача запроса серверу В.
4. Получение ответа от сервера В. В состав ответа входит поле заголовка SetCookie. Получив
его, клиент записывает cookie на диск.
5. Передача запроса серверу С. Несмотря на то что на диске хранится запись cookie, клиент не
предпринимает никаких специальных действий, так как значение cookie было записано по
инициативе другого сервера.
6. Получение ответа от сервера С.
7. Передача запроса серверу А. В этом случае клиент также никак не реагирует на тот факт,
что на диске хранится cookie.
8. Получение ответа от сервера А.
9. Передача запроса серверу В. Перед тем как сформировать запрос, клиент определяет, что
на диске хранится запись cookie, созданная после получения ответа от сервера В. Клиент
проверяет, удовлетворяет ли данный запрос некоторым требованиям, и, если проверка
дает положительный результат, включает в заголовок запроса поле Cookie.
Таким образом, процедуру записи и получения cookie можно представить себе как
своеобразный "запрос" сервера, инкапсулированный в его ответе клиенту. Соответственно
получение cookie также можно представить себе как ответ клиента, инкапсулированный в
составе запроса тому же серверу.
Поле Set-cookie имеет следующий формат:
Set-cookie: имя = значение; expires = дата; path = путь; домен = имя_домена, secure
где
• Пара имя = значение – именованные данные, сохраняемые с помощью механизм cookie.
Эти данные должны храниться на клиент-машине и передаваться серверу в составе
очередного запроса клиента.
• Дата, являющаяся значением параметра expires, определяет время, по истечении
которого информация cookie теряет свою актуальность. Если ключевое слово expires
отсутствует, данные cookie удаляются по окончании текущего сеанса работы браузера. • Значение параметра domain определяет домен, с которым связываются данные cookie.
Чтобы узнать, следует ли передавать в составе запроса данные cookie, браузер сравнивает
доменное имя сервера, к которому он собирается обратиться, с доменами, которые
связаны с записями cookie, хранящимися на клиент-машине. Результат проверки будет
считаться положительным, если сервер, которому направляется запрос, принадлежит
домену, связанному с cookie. Если соответствие не обнаружено, данные cookie не
передаются.
• Путь, указанный в качестве значения параметра path, позволяет выполнить дальнейшую
проверку и принять окончательное решение о том, следует ли передавать данные cookie в
составе запроса. Помимо домена с записью cookie связывается путь. Если браузер
обнаружил соответствие имени домена значению параметра domain, он проверяет,
соответствует ли путь к ресурсу пути, связанному с cookie. Сравнение считается успешным,
если ресурс содержится в каталоге, указанном посредством ключевого слова path, или в
одном из его подкаталогов. Если и эта проверка дает положительный результат, данные
cookie передаются серверу. Если параметр path в поле Set-Cookie отсутствует, то считается,
что запись cookie связана с URL конкретного ресурса, передаваемого сервером клиенту.
• Последний параметр, secure, указывает на то, что данные cookie должны передаваться по
защищенному каналу.

Для передачи данных cookie серверу используется поле заголовка Cookie. Формат этого поля
достаточно простой:
Cookie: имя=значение; имя=значение; ...
C помощью поля Cookie передается одна или несколько пар имя = значение. Каждая из этих
пар принадлежит записи cookie, для которой URL запрашиваемого ресурса соответствуют имени
домена и пути, указанным ранее в поле Set-cookie.

9.Исполняемые коды программ для Web. Программы, исполняющиеся на стороне сервера
и программы, исполняющиеся на стороне клиента.
Никакой HTTP-обмен невозможен без клиента и сервера
Программы, выполняющиеся на клиент-машине
Одним из типов программ, предназначенных для выполнения на клиент-машине,
являются сценарии, например, JavaScript (VBScript). Исходный текст сценария представляет собой
часть веб-страницы, поэтому сценарий JavaScript передается клиенту вместе с документом, в
состав которого он входит. Обрабатывая HTML-документ, браузер обнаруживает исходный текст
сценария и запускает его на выполнение.
Ко всем программам, которые передаются с сервера на клиент-машины и запускаются на
выполнение, предъявляется одно общее требование: эти программы должны быть лишены
возможности обращаться к ресурсам компьютера, на котором они выполняются. Такое
требование вполне обосновано. Ведь передача по сети и запуск Java-апплетов и JavaScript-
сценариев происходит автоматически без участия пользователя, поэтому работа этих
программ должна быть абсолютно безопасной для компьютера. Другими словами, языки,
предназначенные для создания программ, выполняющихся на клиент-машине, должны быть
абсолютно непригодны для написания вирусов и подобных программ.
Программы, выполняющиеся на сервере
Код программы, работающей на сервере, не передается клиенту. При получении от
клиента специального запроса, предполагающего выполнение такой программы, сервер
запускает ее и передает параметры, входящие в состав запроса. Средства для генерации
подобного запроса обычно входят в состав HTML-документа. Результаты своей работы программа оформляет в виде HTML-документа и передает их веб-
серверу, а последний, в свою очередь, дополняет полученные данные HTTP-заголовком и
передает их клиенту. Взаимодействие клиента и сервера в этом случае показано на рисунке 1.

Рисунок 1. Взаимодействие клиента с программой, выполняющейся на сервере.

10. Язык JavaScript. Основные конструкции языка. Взаимодействие с элементами
HTML страницы. Объектная иерархия JavaScript. Обработка событий.
JavaScript - интерпретируемый язык программирования, стандартизированный
международной организацией ECMA в спецификации ECMA-262. Языки JavaScript, JScript и
ActionScript являются расширением стандарта ECMA-262.
Название "ECMAScript" явилось фактически компромиссом между организациями,
вовлеченными в процесс стандартизации, в частности Netscape и Microsoft. Хотя JavaScript и
JScript стремились к совместимости с ECMAScript, они имеют ряд дополнительных
возможностей не предусмотренных спецификацией ECMA.
Синтаксис JScript во многом аналогичен языку JavaScript, однако, помимо добавления
клиентских скриптов на веб-страницы и некоторых других функций, JScript может
использоваться и для других целей, например:
? автоматизация администрирования систем Microsoft Windows;
? создание страниц ASP.
Язык JScript получил дальнейшее развитие в виде языка JScript.NET, который ориентирован
на работу в рамках платформы Microsoft.NET
JScript - интерпретируемый, объектно-ориентированный язык. Хотя он имеет существенно
меньшее количество возможностей, чем такие объектно-ориентированные языки как C++ и Java.
Возможности языка существенно ограничены:
• язык не позволяет разрабатывать самостоятельные приложения;
• сценарии на JScript могут выполняться только при помощи интерпретатора, в частности
веб-браузером.
Программа
(CGI-сценарий)
Веб - сервер
Запуск программы и передача
параметров
Веб - клиент
Запуск
программы и
передача
параметров
Результаты
выполнения
программы
апплета
Результаты
выполнения
программы
апплета • JScript - язык без строгого контроля типов. Поэтому не требуется объявлять тип
переменных явно. Кроме того, во многих случаях JScript исполняет преобразования
автоматически, когда они необходимы. Например, при сложении строки и числа, число
будет преобразовано в строку.

Код на JScript пишется в текстовом формате, и организован в инструкции, блоки, состоящие из
связанных наборов инструкций, и комментариев. В пределах инструкции можно использовать
переменные и данные, такие как строки, числа и выражения. Для объявления конца инструкции
используется точка с запятой (;). Группа JScript-инструкций, заключенная в фигурные скобки {},
называется блоком.
Комментарием в JScript является текст, расположенный после // до конца строки.
Многострочный комментарий начинается с /*, и заканчивается */.
Знак равенства (=) используется в JScript как присваивание. Следующий код
Pi = 3.14;
подразумевает "Присвоить значение 3.14 переменной Pi".
При сравнении двух значений на равенство применяется двойной знак равенства (==).
JScript выражения можно разделить на логические или числовые. Выражения содержат
некоторые особенности, к примеру, символ "+" означает "добавить к...". Любая допустимая
комбинация значений, переменных, операторов, и других выражений является выражением.
Объявление переменной перед использованием является необязательным. Для этого
используется инструкция var. Инструкция var является обязательной при объявлении локальной
переменной внутри функции. Разрешается объявление переменной неявно - без инструкции var.
Однако, в выражениях применять необъявленные переменные не допускается. JScript различает
регистр в имени переменной. Name и name рассматриваются как различные переменные.
Типы данных
JScript - язык с нестрогим контролем типов, переменные в JScript не имеют строго
фиксированного типа. Переменные имеют тип, эквивалентный типу значения, которое они
содержат. Однако, в некоторых случаях, необходимо принудительное преобразование
переменной в определенный тип. Числа могут быть объявлены как строки, а строки необходимо
преобразовать в числовой тип. Для этого применяют функции parseInt() и parseFloat().
В JScript используется шесть типов данных. Основные из них - числа, строки, объекты,
логический. Остальные два - null и undefined (т.е. неопределенный).
Строки объявляются при помощи двойных кавычек или апострофов. Строка может состоять
из нуля или более символов unicode. Когда количество символов равно нулю, это называется
пустой строкой ("").
JScript поддерживает числа как целые, так и с плавающей запятой. Также существуют
специальные представления чисел, например NaN (не число).
Примеры чисел:
3.14 // Вещественное число
15 // Целое число
0177 // Восьмеричное число 177
0XA8 // Шестнадцатиричное число A8
Логический тип допускает значения - true и false. Любое выражение, равное 0, считается
эквивалентным false, а любое выражение, равное числу, отличному от 0 будет эквивалентным
true.
Undefined – означает, что тип не определен. Значение undefined имеет переменная после ее
объявления и до присвоения ей какого-либо определенного значения.
Переменная типа null - не имеет никакого определенного значения.
Операторы
Язык поддерживает условные выражения if и if...else. При использовании нескольких условий
одновременно можно использовать операторы || (ИЛИ ) или && (И).
В JScript поддерживается несколько типов циклов: for, for...in, while, do...while и switch. Также
существует инструкция остановки выполнения цикла. Оператор завершения break может использоваться, чтобы остановить цикл, при выполнении какого-либо условия. Инструкция
continue используется, чтобы немедленно перейти к выполнению следующей итерации,
пропуская остальную часть выполнения кода текущей итерации, но обновляя переменную-
счетчик.
Функции и объекты
В JScript имеется два вида функций: встроенные и определяемые. Программист имеет
возможность создавать собственные функции. Определение функции состоит из объявления
параметров и блока инструкций JScript.
Объекты в JScript, по-сути, являются совокупностями методов и свойств. Все объекты можно
разделить на три вида: встроенные, созданные и браузерные. Обработка объектов и массивов
идентична. Можно обратиться к любой части объекта (его свойствам и методам) либо по имени,
либо по индексу. Нумерация индексов в JScript начинается с нуля.
11. CGI стандарт. CGI сценарий. Порядок работы CGI сценария. Передача данных
сценарию методами GET и POST. Переменные окружения Web-сервера.
Круг задач, решаемых Web-сервером, ограничен. В основном он сводится к поддержке НТТР-
взаимодействия и доставке клиенту Web-документов. Любые "нестандартные" действия
реализуются с помощью специальной программы, которая взаимодействует с веб-сервером и
клиентом. Это взаимодействие подчиняется определенным правилам.
Основной набор таких правил - стандарт CGI (Common Gateway Interface - интерфейс общего
шлюза), который определяет порядок запуска программы на компьютере-сервере, способы
передачи программе параметров и доставки результатов ее выполнения клиенту. Программа,
написанная по правилам CGI, называется CGI-сценарием (script CGI), хотя это не означает, что
на сервере не может выполняться двоичный файл.
Благодаря этому интерфейсу для разработки приложений можно использовать любой язык
программирования, который располагает средствами взаимодействия со стандартными
устройствами ввода/вывода. Такими возможностями обладают в также сценарии для встроенных
командных интерпретаторов операционных систем.
Выполнение любой программы (в том числе CGI-сценария) можно условно разделить на пять
этапов.
1. Запуск программы.
2. Инициализация и чтение выходных данных.
3. Обработка данных.
4. Вывод результатов выполнения.
5. Завершение программы.
Различия между CGI-сценарием и консольным приложением касаются первого, второго и
четвертого этапов выполнения.
Каждый раз, когда веб-сервер получает запрос от клиента, он анализирует содержимое
запроса и возвращает соответствующий ответ:
? Если запрос содержит указание на файл, находящийся на жестком диске, то сервер
возвращает в составе ответа этот файл;
? Если запрос содержит указание на программу и необходимые для нее аргументы, то
сервер исполняет программу и результат ее работы возвращает клиенту.
CGI определяет:
? каким образом информация о сервере и запросе клиента передается программе в форме
аргументов и переменных окружения;
? каким образом программа может передавать назад дополнительную информацию о
результатах (например о типе данных) в форме заголовков ответа сервера.

В подавляющем большинстве случаев запуск CGI-сценария осуществляется щелчком на
кнопке Submit, сформированной с помощью дескриптора , который
находится на HTML-странице между

и

. Не зная назначения атрибутов action и
method, невозможно понять, как происходит вызов программы и передача параметров.
Значением атрибута action дескриптора

является URL файла, содержащего код CGI-
сценария. Так, приведенное ниже выражение означает, что файл с кодом CGI-сценария
находится на сервере www.myhp.edu в каталоге cgi-bin в файле script.рl.
Как веб-сервер различает, что надо сделать с файлом, на который указывает URL, — передать
его содержимое клиенту или запустить файл на выполнение? Существует два способа
распознавания файлов, содержащих тексты CGI-сценариев.
? Первый способ заключается в том, что при установке веб-сервера один из каталогов
специально выделяется для хранения сценариев. Обычно такой каталог получает имя cgi-
bin (или Scripts для веб-сервера IIS). В этом случае, если клиент запрашивает файл из
каталога cgi-bin, сервер воспринимает такой запрос как команду на запуск сценария. Файлы
из других каталогов интерпретируются как HTML-документы.
? Второй способ использует расширение файла. При настройке сервера указывается, что
файлы с определенными расширениями содержат коды сценариев.
Идентификация по расширению используется относительно редко. Чаще всего все сценарии
помещаются в /cgi-bin, /Scripts или в другой каталог, специально выделенный для их хранения.
Вывод результатов выполнения CGI-сценария осуществляется чрезвычайно просто. Для того
чтобы данные были переданы клиенту, достаточно вывести их в стандартный выходной поток.
Однако, разрабатывая CGI-сценарий, не следует забывать о том, что он все же отличается от
консольной программы и имеет следующие особенности.
Информация, передаваемая клиенту, должна соответствовать протоколу HTTP, т.е. состоять из
заголовка и тела ответа. Как правило, получив данные от сценария, сервер самостоятельно
добавляет первую строку заголовка.
НТТР/1.0 200 OK
Формирование информационных полей, входящих в состав заголовка, - задача сценария.
Чтобы данные, переданные сценарием, были правильно интерпретированы клиентом,
необходимо, чтобы в заголовке присутствовало как минимум поле Content-type. За заголовком
должна следовать пустая строка. При отсутствии полей заголовка реакция браузера будет
непредсказуемой. В подобных случаях браузер обычно пытается отобразить полученную
информацию как текстовый файл.
Самый естественный формат для браузера - формат HTML. Результаты работы сценария
обычно оформляются в виде веб-страницы, т.е. возвращаемые данные следует дополнить
дескрипторами HTML. Таким образом, ответ CGI-сценария клиенту обычно выглядит так:
Content-type: text/html



ответ сценарияе>
еаd>


……………………

Обратите внимание на пустую строку после выражения Content-type: text/html. Она
обязательно должна присутствовать в ответе, в противном случае клиент воспримет все
последующие данные как продолжение заголовка.
После компиляции программы необходимо скопировать исполняемый файл в каталог cgi-bin
(или в другой каталог, предназначенный для размещения исполняемых файлов) из которого он
может запускаться веб-сервером на выполнение по запросу клиента.
Для вызова данного сценария достаточно включить в веб-страницу следующий фрагмент
HTML-кода:


Если сценарий вызывается из формы, ему передаются те данные, которые пользователь ввел с
помощью интерактивных элементов, отображаемых на веб-странице - передача информации CGI-сценарию осуществляется в два этапа: сначала браузер передает данные веб-серверу, затем
веб-сервер передает их сценарию.
В большинстве случаев кроме кнопки Submit форма содержит другие интерактивные
элементы, каждый из которых имеет имя (атрибут NAME) и значение (атрибут VALUE, либо
последовательность символов, введенная пользователем). Из имен элементов и их значений
формируется строка параметров, которая имеет следующий формат.
имя=значение&имя=значение& . . . &имя=значение
Каждый параметр представляет собой имя управляющего элемента и его значение,
разделенные знаком равенства, а несколько таких пар объединяют строку с помощью символа
"&". Если в состав имени или значения входит символ "&" или "=", то подобные символы
кодируются последовательность знака процента "%", за которым следуют две
шестнадцатеричные цифры, определяющие код символа. Так, например, последовательностью
"%21" кодируется восклицательный знак "!". Как правило, при передаче параметров
трехсимвольными последовательностями заменяются все знаки, кроме латинских букв, цифр и
символа пробела (последний заменяется знаком "+").
Таким образом, перед использованием строки параметров ее надо декодировать. Алгоритм
декодирования чрезвычайно прост и включает в себя следующие действия:
? Выделить из строки параметров пары имя = значение.
? Выделить из каждой пары имя и значение.
? В каждом имени и каждом значении заменить символы "+" пробелами.
? Каждую последовательность из символа "%" и двух шестнадцатеричных и преобразовать
в ASCII-символ.

Атрибут method дескриптора

имеет либо значение "GET", либо значение "POST".
Значения "GET" и "POST" определяют два различных метода передачи параметров сценарию:
? Если атрибут method имеет значение "GET", строка параметров передается вместе с URL
вызываемого сценария. Разделителем между URL и строкой параметров является символ
"?".
? Если атрибут method имеет значение "POST", строка параметров передается в теле HTTP-
запроса.

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

имел значение "GET", строка параметр
передается серверу в качестве значения переменной окружения QUERY_STRING.
При использовании метода POST данные доставляются сценарию по-другому. Они
передаются через стандартный поток ввода (STDIN). Чтобы сценарий смог определить, сколько
символов следует читать из стандартного ввода, веб-сервер устанавливает значение переменной
окружения CONTENT_LENGTH, равным длине строки параметров.
Получив управление, сценарий в первую очередь должен выяснить, с помощью какого метода
выполнялась передача параметров. Эта информация содержится в переменной окружения
REQUEST_METHOD.
Таким образом, в простейшем случае, чтобы выполнить обработку строки параметров,
достаточно знать назначение трех переменных окружения: REQUEST_METHOD,
QUERY_STRING и CONTENT_LENGTH.
Пример сценария на языке Perl, который возвращает клиенту строку параметров, приведен
ниже. Сценарий определяет, какой метод использовался для передачи данных, читает строку
параметров и передает ее клиенту, предварительно дополнив HTML-дескрипторами.

$method = $ENV{'REQUEST_METHOD'};

if ($method eq "GET")
{ $pars = $ENV{'QUERY_STRING'}; }
else { $length =$ENV{'CONTENT_LENGTH'}; }

read (STDIN, $pars, $ length);

print "Content-type: text/html\n\n";
print "

\n";
print "

METHOD = ", $method;
print "

String of parameters:

\n";
print $pars;
print "\n";

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

REMOTE_ADDR IP-адрес узла, с которого поступил запрос
REMOTE_HOST Доменное имя узла, с которого поступил запрос
SERVER_PORT Номер порта, который использовался при обращении к серверу
SERVER_SOFTWARE Имя и версия сервера, посредством которого был запущен
сценарий
SERVER_NAME Имя или адрес узла, на котором выполняется сервер
SERVER_PSOTOCOL Название и версия протокола, с помощью которого был
передан запрос
HTTP_USER_AGENT Клиентская программа, отправившая запрос серверу
HTTP_REFERER URL документа, отображаемого браузером при вызове
сценария

Сценарии

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

Поскольку сценарии интерпретируются из исходного кода динамически при каждом
исполнении, они выполняются обычно значительно медленнее готовых программ,
транслированных в машинный код на этапе компиляции.
В плане быстродействия сценарные языки можно разделить на:
? Языки динамического разбора (например command.com). Интерпретатор считывает
инструкции из файла программы минимально требующимися блоками, и исполняет эти
блоки, не читая дальнейший код.
? Предварительно компилируемые (например Perl). Вначале считывается вся программа,
затем компилируется либо в машинный код, либо в один из внутренних форматов, после
чего получившийся код исполняется.

В рассмотрим кратко наиболее известные языки разработки сценариев для веб-приложений.

12. SSI и ASP. Краткая характеристика и использование в HTML страницах. SSI (Server Side Includes — включения на стороне сервера) — несложный язык для динамической
«сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного
HTML-документа. Реализован в веб-сервере Apache при помощи модуля mod_include.
Включённая в настройках по умолчанию веб-сервера возможность позволяет подключать HTML-
файлы, поэтому для использования инструкций файл должен оканчиваться расширением .shtml,
.stm или .shtm
Синтаксис SSI позволяет включать в текст страницы другие SSI-страницы, вызывать внешние
CGI-скрипты, реализовывать условные операции (if/else), работать с переменными и т.п.
Благодаря крайней простоте языка, сборка SSI-страниц происходит очень быстро, однако многие
возможности полноценных языков программирования, например, работа с файлами, в SSI
отсутствуют.
Отдельные элементы синтаксиса SSI используются и в других скриптовых языках, например в
ASP.

ASP (Active Server Pages) — технология, разработанная компанией Microsoft, позволяющая
легко создавать приложения для Веб.
Программирование на ASP дает разработчикам доступ к интерфейсу программирования
приложений Internet Information Server с помощью языка сценариев VBScript и JScript.
ASP работает на платформе операционных систем линии Windows NT и на веб-сервере
Microsoft IIS.
Архитектура ASP представлена ниже.

Файлы ASP представляют собой сценарии, интерпретируемые по мере поступления запросов.
ISAPI-расширение ASP.DLL связано в IIS с расширениями файлов .asp или .asa.
Порядок обработки таких файлов выглядит следующим образом:
• ASP.DLL просматривает файлы с указанными расширениями на наличие тегов,
обозначающих внедренный код для выполнения на сервер и передает найденный код в
Windows Script Host (WSH).
• WSH выполняет этот код и возвращает результат файлу ASP.DLL.
• ASP.DLL передает IIS этот результат и содержимое самого файла ASP.
• IIS возвращает ответ клиенту, от которого поступил запрос.
Рассмотрим основы синтаксиса ASP.
IIS различает код, выполняющийся на сервере, и содержимое, отправляемое клиенту с
помощью ASP.DLL, анализируя файл ASP на наличие начального “” тегов
и выполняя код, расположенный между ними, с помощью WSH.
Рассмотрим пример:



Response.Write(“

Hello world!

”)
%>

В примере первая строка кода сообщает о необходимости
использовать интерпретатор языка VBScript. Для вставки строки в документ был использован
метод Write стандартного объекта Response.
Событие веб-запроса в ASP обрабатывается с помощью следующих объектов:
• Response. Используется для записи данных в запрос HTTP, возвращаемый клиенту.
• Application. Содержит параметры и конфигурации по настройке работы ASP для
данного веб-сайта. • Request. Хранит содержимое HTTP-запроса и обеспечивает вспомогательные функции
для обработки данных HTTP-запроса.
• Server. Содержит информацию о веб-сервере, веб-сайте, а также обеспечивает
поддержку вызывающей программы.
• Session. Представляет собой состояние заданного веб-сеанса с заданным хостом
клиентом.

13. Язык Perl. Краткое описание.
Язык Perl (Practical Extraction and Report Language) — это язык программирования, сильными
сторонами которого считаются его богатые возможности для работы с текстом, в том числе
реализованные при помощи регулярных выражений. Также язык известен тем, что имеет
огромную коллекцию дополнительных модулей CPAN.
Чтобы запустить программу на языке Perl на выполнение, ее компиляция не требуется, она
вполне может выполняться под управлением интерпретатора. Чтобы файл с исходным текстом
Perl можно было запускать на выполнение, надо чтобы первая его строка выглядела так:
#!путь_к_интерпретатору_Perl
14. Предопредёленные переменные в Perl.
Основными типами данных в языке являются: скаляры, массивы (скалярные), хеш-таблицы
(ассоциативные массивы), функции, файловые дескрипторы и константы.
Переменные разных типов отличаются знаком, который стоит перед именем переменной:
$a - скаляр или указатель
@b - скалярный массив
%c - ассоциативный массив (хеш-таблица)
&d - функция
F - дескриптор ввода-вывода или константа

Скалярные переменные используются для хранения одиночных значений. Они могут
содержать числа, строки и ссылки на другие объекты. Перед именем скалярной переменной
необходимо ставить знак доллара '$'. Тип скалярной переменной не фиксирован и определяется
динамически в зависимости от контекста.

Рассмотрим приведенный следующий фрагмент программы на языке Perl.
while ()
{ print; }
Несмотря на то, что формально программа составлена правильно, она на первый взгляд может
показаться бессмысленной. Однако при запуске она ведет себя точно так же, как и одна из
программ "эхо". В языке Perl существует предопределенная скалярная переменная $_,
используемая по умолчанию. Именно в нее помещаются данные, прочитанные из стандартного
ввода, и из нее берется значение для вывода в STDOUT.
Кроме $_ в Perl имеются и другие предопределенные переменные:
• $] - номер версии Perl.
• $. - номер строки, прочитанной из файла последней.
• $! - сообщение об ошибке.
• $$ - идентификатор текущего процесса.
• $^T - время в секундах с начала 1970 года до запуска данной программы.
• $O - имя файла, в котором содержится выполняемая программа.
• $1...$9 - фрагменты текста, отмеченные при выполнении операции сопоставления с
шаблоном.

15..Функции для работы с потоками в Perl. Дескриптор потока.
Для работы с файлами и потоками в Perl предусмотрены специальные файловые дескрипторы.
Файловые дескрипторы представляет собой указатель на файл, устройство или PIPE канал,
открытые для записи, чтения или для записи и чтения. Оператор “” в Perl называется
бриллиантовым оператором (diamond operator). Он определяет операцию чтения строки из
потока, дескриптор которого содержится в угловых скобках: $str=; #чтение строки из дескриптора STDIN (стандартного потока ввода)
@lines=; #чтение всех строк из связанного с дескриптором файла F.
print STDOUT $str; #печать в STDOUT (стандартный поток вывода)

Для связывания файла с файловым дескриптором используется функция open. Ниже
приводятся варианты использования этой функции:
open дескриптор_потока > имя_файла файл открывается для вывода данных. Если
файл с указанным именем отсутствует,
создается новый файл.
open дескриптор_потока >> имя_файла файл открывается в режиме, позво-ляющем
записывать данные в конец файла.
open дескриптор_потока +> имя_файла открытый файл становится доступным для
чтения и для записи.
Функция
сlose дескриптор_файла
закрывает файл, связанный с указанным дескриптором.

16. Массивы в Perl: скалярные, ассоциативные. Их инициализация и обращение к
элементам массива.
Скалярный массив является упорядоченным списком скаляров. Каждый элемент массива
имеет порядковый номер (индекс), с помощью которого к нему можно получить доступ.
Нумерация элементов начинается с нуля.
Перед именем переменной типа скалярный массив указывается знак @, а для доступа к
определенному элементу массива необходимо ставить знак $, так как определенный элемент
массива является скаляром:
@winter = ("декабрь", "январь", "февраль");
print "Второй месяц зимы ", $winter[1], "\n";
Хеш-таблица представляет собой ассоциативный массив, позволяющий ассоциировать строку
(ключ) со скаляром (значение). Строка при этом называется ключом, а скаляр в хеш-таблице -
значением. Перед именем переменной-списка необходимо ставить знак процента %, а для
доступа к определенному элементу массива ставят знак $.
Фактически хеш-таблица представляет собой массив, где в нечетных позициях находятся
ключи, а на четных - значения.
Использование ассоциативных массивов напоминает использование массивов скалярных
значений, однако индексация производится не целыми числами, а ключевыми словами. Кроме
того, индексы заключаются не в квадратные, а в фигурные скобки.
Так, например, для того чтобы присвоить значение трем элементам массива %dict с индексами
first, second и third, можно воспользоваться одним из двух способов, указанных ниже.
$dict { 'first' } = "первый";
$dict { 'second' } = "второй";
$dict { 'third' } = "третий";
или
%dict { 'first', 'second', 'third' } = "первый", "второй", "третий";
Кроме того, существует способ одновременно записать в ассоциативный массив и ключевые
слова, и их значения. Сделать это можно с помощью следующего выражения:
имя_массива = ( ключ 1, значение 1, ключ 2, значение 2, ... );
Для примера, приведенного выше, это выражение будет выглядеть так:
%dict = ("first", "первый", "second", "второй", "third", "третий");

17. Предопределённый массив ENV.
Подобно предопределенным скалярным переменным, в Perl существуют массивы, имеющие
специальное значение. Наиболее важный из них - ассоциативный массив %ENV, содержащий
текущие значения переменных окружения. Чтобы получить значение переменной окружения,
надо обратиться к элементу данного массива, указав в качестве индекса имя переменной окружения. Так, приведенное ниже выражение записывает в скалярную переменную $path_string
значение переменной окружения PATH.
$path_string = $ENV { 'PATH' };
Одна из первых строк CGI-сценария на Perl, может выглядеть так
$method = $ENV { 'REQUEST_METHOD' };

19. Операторы поиска и замены, посимвольной замены и связывания в Perl.
Использование предопределенных переменных в операторах поиска и замены.
Функция split().
В состав языка Perl входят средства поиска и замены, причем, задавая шаблон для поиска,
можно использовать регулярные выражения. Это значит, что сложные операции, встречающиеся
в специализированных приложениях, можно легко реализовать в любой Perl-программе.
Оператор поиска m// записывается следующим образом:
m/шаблон/
Если значение переменной $_ содержит подстроку, соответствующую указанному шаблону,
оператор поиска возвращает значение true.
Рассмотрим следующий пример:
$_ = ;
if (m/Scripts/)
{ print "В URL есть каталог Scripts \n"; }
else
{ print " В URL нет каталога Scripts \n"; }

Оператор замены s/// записывается следующим образом:
s/шаблон поиска/выражение для замены/[набор модификаторов]
При выполнении оператора s/// производится поиск соответствия шаблону, и если поиск
завершается успешно, найденная подстрока заменяется указанным выражением. Подобно
оператору m//, оператор s/// использует переменную $_. Ниже приведен простейший пример
применения оператора s///.
$_ = "CGI-сценарий написан на языке С";
s/C$/Perl/;
print;
В результате выполнения сценария на консоль будет выведена следующая строка:
CGI-сценарий написан на языке Perl
Поскольку символ С содержится в аббревиатуре CGI, поэтому в шаблоне поиска указано, что
он должен быть последним в строке.
За последним разделителем в операторе s/// могут следовать один или несколько
модификаторов. Назначение некоторых модификаторов приведено ниже.
• g - глобальный поиск. Если этот модификатор не указан, после обнаружения первого
соответствия оператор s/// закончит свою работу. Поэтому при отсутствии модификатора
g будет произведено не более одной замены.
• i - указывает, что при поиске следует игнорировать регистр символов.
• e - указывает, что последовательность символов для замены следует интерпретировать не
как подстроку, а как выражение Perl.
В выражении для подстановки могут присутствовать переменные $1 - $9, и в этом случае
необходимо указать модификатор е. Так, например, если требуется интерпретировать десятичное
число как код символа, можно воспользоватъся следующим выражением:
s/([0-9]+)/chr($1)/e;
Чтобы поиск или замена производились в строке, содержащейся в нужной переменной, надо
использовать следующее выражение:
Переменная =~ оператор_поиска_или_замены
Так, например, для преобразования шестнадцатеричных чисел, содержащихся в переменной
$string, в десятичное представление можно использовать инструкцию:
$string =~ s/([0-9A-Fa-f]+)(H|h)/hex($1)/ge;

20. Введение в PHP. Краткая характеристика языка.
Язык PHP (PHP:Hypertext Preprocessor) - один из наиболее популярных сценарных языков
ввиду своей простоты, скорости выполнения, богатой функциональности и распространенности
исходных кодов на основе лицензии PHP.
PHP состоит из ядра и набора подключаемых расширений: для работы с базами данных,
сокетами, динамической графикой, криптографическими библиотеками, документами формата
PDF и др. Возможна разработка своих собственных расширений с их последующим
подключением. Хотя и существуют сотни расширений, однако в стандартную поставку входит
лишь несколько десятков хорошо зарекомендовавших себя расширений.
Интерпретатор PHP подключается к веб-серверу либо через DLL модуль, созданный
специально для этого сервера, либо в виде CGI-приложения.
В настоящее время PHP используется сотнями тысяч разработчиков. Порядка 20 миллионов
сайтов сообщают о работе с PHP, что составляет более пятой доли доменов Интернета
Синтаксис PHP подобен синтаксису языка Си. При этом некоторые элементы, как например
ассоциативные массивы и цикл foreach, заимствованы из языка Perl.
Для работы программы на PHP не требуется описывать какие-либо переменные,
используемые модули, и т.п. Любая программа может начинаться непосредственно с оператора
PHP.
echo 'Hello, world!';
?>

Помимо ограничителей , допускается использование дополнительных вариантов,
таких как ?> и

. Кроме того, до версии 6.0 допускается
использование ограничителей языка программирования ASP .
* PHP поддерживает широкие объектно-ориентированные возможности, полная поддержка
которых была введена в пятой версии языка. Класс в PHP объявляется с помощью ключевого
слова class. Методы и поля класса могут быть общедоступными (public, по умолчанию),
защищёнными (protected) и скрытыми (private). PHP поддерживает все три основные механизма
ООП — инкапсуляцию, полиморфизм и наследование (родительский класс указывается с
помощью ключевого слова extends после имени класса). Поддерживаются интерфейсы (ставятся
в соответствие с помощью implements). Разрешается объявление финальных, абстрактных
методов и классов. Множественное наследование классов не поддерживается, однако класс
может реализовывать несколько интерфейсов. Для обращения к методам родительского класса
используется ключевое слово parent. Экземпляры класса создаются с помощью ключевого слова
new, обращение к полям и методам объекта производится с использованием символов ->. Для
доступа к членам класса из его методов используется переменная $this.
Среди наиболее часто используемых возможностей PHP стоит отметить следующие:
• имеется большой набор функций для работы со строками;
• работа с регулярными выражениями PCRE.
• работа с базами данных, осуществляемая посредством модулей:
? php5-mysql для MySQL,
? php5-pgsql для PostgreSQL
? и др.
• для PHP разработаны средства шаблонирования веб-страниц, позволяющие эффективно
разделить представление от модели, например Smarty;
• имеется библиотека для работы с графическими изображениями GD, позволяющая
производить преобразования с графическими файлами, и создавать изображения «на
лету».

21. PHP: имена, константы, переменные. Внешние переменные. Переменные,
содержащие имена переменных.
Имена переменных начинаются с символа $, тип переменной объявлять не требуется. В
отличие от имён функций и классов, имена переменных чувствительны к регистру. Переменные
обрабатываются в строках, заключённых в двойные кавычки.
Инструкции завершаются точкой с запятой (;) PHP поддерживает два типа комментариев:
• в стиле языка С (ограниченные /* */),
• C++ (начинающиеся с // и идущие до конца строки)
PHP является языком программирования с динамической типизацией, не требующим указания
типа при объявлении переменных, равно как и самого объявления переменных. Преобразования
между скалярными типами может осуществляться автоматически (хотя и имеются возможности
для явного преобразования типов).
К скалярным типам данных относятся
• целый тип (integer),
• вещественный тип данных (float, double),
• логический тип (boolean),
• строковый тип (string)
• специальный тип NULL.
К нескалярным типам относится
• «ресурс» (resource),
• массив (array)
• и объект (object).
Тип NULL предназначен для переменных без определённого значения. Значение NULL
принимают неиницализированные переменные, переменные инициализированные константой
NULL, а также переменные, удалённые при помощи конструкции unset().

22. PHP: функции, передача аргументов по ссылке, область видимости, переменные,
ссылающиеся на функции.
Ссылки на внешние ресурсы имеют тип resource. Переменные данного типа, как правило,
представляют собой дескриптор, позволяющий управлять внешними объектами, такими как
файлы, динамические изображения, результирующие таблицы базы данных и т. п.
23. PHP: массивы, их инициализация, обращение к отдельным элементам и обход
массивов в цикле (оператор foreach). Встроенные функции массивов.
Предопределенные массивы. Многомерные массивы.
Массивы поддерживают числовые и строковые ключи и являются гетерогенными. Массивы
могут содержать значения любых типов, включая другие массивы. Суперглобальными
массивами (superglobal arrays) в PHP называются предопределённые массивы, которые видны в
любом месте исходного кода без использования ключевого слова global.
• $GLOBALS - массив всех глобальных переменных (в том числе и пользовательских).
• $_SERVER - содержит множество информации о текущем запросе и сервере.
• $_ENV - текущие переменные среды. Их набор специфичен для каждой конкретной
платформы, на которой выполняется сценарий.
• $_GET - ассоциативный массив с параметрами GET-запроса. В исходном виде эти
параметры доступны в $_SERVER['QUERY_STRING'] и в $_SERVER['REQUEST_URI'] в
составе URI.
• $_POST - ассоциативный массив значений полей HTML-формы при отправки методом
POST.
• $_FILES - ассоциативный массив со сведениями об отправленных методом POST файлах.
Каждый элемент имеет индекс идентичный значению атрибута «name» в форме и, в свою
очередь, также является массивом со следующими элементами:
? ['name'] — исходное имя файла на компьютере пользователя.
? ['type'] — указанный агентом пользователя MIME-тип файла.
? ['size'] — размер файла в байтах.
? ['tmp_name'] — полный путь к файлу во временной папке.
? ['error'] — код ошибки.
• $_COOKIE - ассоциативный массив с переданными агентом пользователя значениями
cookie.
• $_REQUEST - общий массив вводных данных запроса пользователя как в массивах
$_GET, $_POST, $_COOKIE. Начиная с версии PHP 4.1 включается и содержимое
$_FILES. • $_SESSION - информация о текущей сессии пользователя.

24. ISAPI – расширения и ISAPI – фильтры. Их назначение, достоинства и недостатки.
Для веб-сервера IIS (Internet Information Server). был разработан специальный программный
интерфейс для создания приложений расширяющих стандартные возможности веб-сервера.
ISAPI (Internet Server Application Programming Interface) – многозвенный API для IIS.
ISAPI также реализован в виде модуля mod_isapi для веб-сервера Apache. Таким образом,
серверные приложения, разработанные для MS IIS могут также выполняться в Apache и других
веб-серверах.
В противоположность CGI - ISAPI-приложение загружается в том же адресном пространстве,
что и веб-сервер IIS. Это позволяет повысить производительность приложений благодаря
сокращению издержек на запуск отдельных процессов. Однако сбой ISAPI-приложения может
привести к неустойчивой работе самого веб-сервера. В 6-ой версии IIS имеется возможность
запуска приложений в рамках отдельного процесса.
ISAPI включает в себя 2 компоненты: расширения и фильтры.
Таким образом, все многообразие разрабатываемых ISAPI-приложений сводится только к этим
двум типам. И фильтры и расширения компилируются в DLL файлы динамически запускаемые
веб-сервером.
ISAPI приложения могут разрабатываться с помощью любых языков, поддерживающих
экспорт стандартных С-функций, например С, С++, Delphi Pascal. Для разработки имеется
ограниченное число библиотек для разработки ISAPI приложений, например Intraweb-
компоненты Delphi Pascal, специальные MFC-классы, специальная С++ библиотека серверных
технологий ATL.
К наиболее важным особенностям ISAPI-расширений можно отнести следующие:
• ISAPI-расширения имеют доступ ко всем функциональным возможностям IIS.
• Реализуются в виде DLL-модулей, загружаемых в пространстве процесса,
контролируемого IIS.
• Клиенты могут обращаться к ISAPI-расширениям также как к статическим HTML
страницам.
• ISAPI-расширения могут быть ассоциированы с отдельными расширениями файлов, с
целыми каталогами или сайтами.
ISAPI-фильтры необходимы для изменения или совершенствования функциональности IIS.
Они обычно работают с IIS-сервером и фильтруют каждый запрос. Фильтры применяются для
анализа и модификации входящих и исходящих потоков данных.
Фильтры также как и расширения реализуются в виде DLL файлов.
Обычно ISAPI-фильтры используются для решения следующих задач:
• Изменение данных в запросе клиента (URL или заголовков).
• Управление отображением URL в физические файлы.
• Управление именами и паролями пользователей при анонимной или базовой
аутентификации.
• Анализ и модификация запросов по завершении аутентификации.
• Модификация ответа веб-сервера.
• Ведение журналов и анализ трафика.
• Реализация собственной аутентификации.
• Управление шифрацией и сжатием.

Стоит отметить, что существуют реализации в виде ISAPI-расширений для таких
инструментальных средств как:
• ASP (Active Server Pages )
• ASP.NET
• ColdFusion
• Perl ISAPI (Perlis)
• PHP
26. Недостатки языка HTML.
• HTML имеет фиксированный набор тэгов. Нельзя создавать свои тэги, понятные другим
пользователям.
• HTML - это исключительно технология представления данных. HTML не несет
информации о значении содержания, заключенного в тэгах.
• HTML - "плоский" язык. Значимость тэгов в нем не определена, поэтому с его помощью
нельзя описать иерархию данных.
• В качестве платформы для приложений используются браузеры. HTML не обладает
достаточной мощью для создания веб-приложений на том уровне, к которому в настоящее
время стремятся веб-разработчики. Например, на языке HTML невозможно разработать
приложение для профессиональной обработки и поиска документов.
• Большие объемы трафика сети. Существующие HTML-документы, используемые
как приложения, перегружают Интернет большими объемами трафика в системах клиент-
сервер. Примером может служить пересылка по сети большого по объему документа, в то
время как необходима только небольшая часть этого документа.
27. Языки разметки: SGML, HTML, XML. Их связь между собой.
Язык HTML первоначально был всего лишь одним из SGML-приложений. Он описывал правила,
по которым должна быть подготовлена информация для World Wide Web. Таким образом, язык
HTML - это набор предписаний SGML, сформулированных в виде определения типа документа
(DTD), объясняющих, что именно обозначают тэги и элементы. Схема DTD для языка HTML
хранится в веб-браузере.
Таким образом, с одной стороны, язык HTML является очень удобным средством разметки
документов для использования в веб, а с другой - документ, размеченный в HTML, имеет мало
информации о своем содержании. Если тот или иной документ несет достаточно полную
информацию о своем содержании, появляется возможность сравнительно легко провести
автоматическую обобщенную обработку и поиск в файле, хранящем документ. Язык SGML
позволяет сохранять информацию о содержании документа, однако вследствие особой
сложности он никогда не использовался так широко, как HTML.
Группа экспертов по языку SGML, возглавляемая Джоном Боузэком (Jon Bosak) из компании Sun
Microsystems, приступила к работе по созданию подмножества языка SGML, которое могло бы
быть принято Web-сообществом. Решено было удалить многие несущественные возможности
SGML. Перестроенный таким образом язык назвали XML. Упрощенный вариант оказался
значительно более доступным, чем оригинал, его спецификации занимали всего 26 страниц по
сравнению с более чем 500 страницами спецификаций SGML.
28. Преимущества языка XML.
• Это человеко-ориентированный формат документа, он понятен как человеку, так и
компьютеру.
• Поддерживает Юникод.
• В формате XML могут быть описаны основные структуры данных - такие как записи,
списки и деревья.
• Это самодокументируемый формат, который описывает структуру и имена полей также
как и значения полей.
• Имеет строго определенный синтаксис и требования к анализу, что позволяет ему
оставаться простым, эффективным и непротиворечивым.
• Широко используется для хранения и обработки документов;
• Это формат, основанный на международных стандартах;
• Иерархическая структура XML подходит для описания практически любых типов
документов; • Представляет собой простой текст, свободный от лицензирования и каких-либо
ограничений;
• Не зависит от платформы;
• Является подмножеством SGML, для которого накоплен большой опыт работы и созданы
специализированные приложения; 29. Web-порталы. Их назначение, классификация. Средства разработки.
Портал предоставляет единую точку безопасного доступа часто в форме веб-интерфейса, и
предназначен для аггрегирования и персонализации информации с помощью подходящих
портлетов.
Портлеты - подключаемые программные компоненты пользовательского интерфейса,
управляемые и отображаемые в веб-портале. Портлеты генерируют фрагменты кода разметки,
которые внедряются на страницу портала. Страница портала представляет собой набор
непересекающихся окон портлетов. Например, окно электронной почты, окно погоды, окно
форума или новостей. Стандартизация портлетов нацелена на предоставление в распоряжение
программиста портлетов, которые могут быть встроены в любой портал, поддерживающий
стандарты.
WSRP (Web Services for Remote Portlets) – протокол, который можно рассматривать как стандарт
для веб-сервисов, позволяющий автоматически встраивать удаленно запущенные портлеты из
совершенно разных источников.
Спецификация Java-портлетов (JSR168, JSR286) дает возможность для портлетов из разных
веб-порталов взаимодействовать между собой. Эта спецификация определяет множество API для
взаимодействия контейнера портлета с портлетом и рассматривает такие вопросы как
персонализация, представление и безопасность.
Веб-портал - это веб-сайт, предоставляющий пользователю различные интерактивные сервисы,
работающие в рамках одного веб-сайта (веб-страницы). Веб-порталы зачастую выполняют роль
единой точки доступа к информации в WWW. Порталы представляют информацию из разных
источников единообразным способом. Наряду с стандартной функцией поиска, веб-порталы
предлагают и другие сервисы такие как электронная почта, новости, форумы, голосования и
другие.

Первичная классификация порталов включает два основных класса:
• Горизонтальные порталы.
• Вертикальные порталы.

Кроме того, можно рассматривать и другие классы порталов:
• Персональные.
• Академические.
• Правительственные.
• Корпоративные.
• Тематические.

Общедоступные (или горизонтальные) порталы (называемые иногда мегапорталами), такие как
Yahoo!, Lycos, Excite, Rambler и др. Эти порталы предназначены для самой широкой аудитории,
что отражается на содержании предоставляемой ими информации и услуг — обычно они носят
общий характер (например, новости о политических событиях и культурной жизни, электронная
почта, новостные рассылки и т.д.). Сфера деятельности таких порталов пересекается со сферой
деятельности средств массовой информации, поэтому в последнее время наблюдаются процессы
слияния общедоступных порталов и средств массовой информации в рамках одной компании.
Вертикальные порталы предназначены для специфических видов рынка и обслуживают
аудиторию, пользующуюся услугами этого рынка или работающую на нем. Примерами таких
порталов могут служить приложения B2C (Business-to-consumer), например туристические
агентства, предоставляющие услуги по бронированию мест в гостиницах, заказу и доставке
билетов, доступу к картам и т.п., либо порталы типа B2B (business-to-business), позволяющие
своим клиентам реализовывать совместные бизнес-операции (например, выбирать поставщиков
и осуществлять закупку товаров, проводить аукционы и т.п.). Число подобных порталов в
последнее время быстро растет, поскольку все новые рынки товаров и услуг перемещаются в
Интернет.
Корпоративные порталы предназначены для сотрудников, клиентов и партнеров одного
предприятия (иногда они называются B2E-порталы - Business-to-employees). Пользователи такого
портала получают доступ к предназначенным им сервисам и приложениям в зависимости от их роли и персонального профиля, и это наиболее интересная категория порталов в плане
реализации корпоративной инфраструктуры и интеграции приложений.

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

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

В составе типичного корпоративного портала условно можно выделить три основных
функциональных слоя:
• Слой базовой инфраструктуры, отвечающий за базовые сервисы, такие как управление
транзакциями, система безопасности, управление порталом и др. Технически он содержит,
как правило, сервер приложений, сервер баз данных и веб-сервер, либо несколько
подобных серверов.
• Слой интеграции приложений, отвечающий за взаимодействие портала со всеми
существующими в компании приложениями, такими как СУБД, CRM- и ERP-системы,
унаследованные приложения и др.
• Слой интерфейсов, включающий в себя средства управления информационным
наполнением (CMS – Content Management System), интерфейсы для обмена данными с
информационными системами бизнес-партнеров, средства для работы с мобильными и
беспроводными устройствами и др. К этому же слою относятся визуальные и
невизуальные компоненты порталов, называемые обычно портлетами, но иногда
имеющие и другие названия (Pagelets, Gadgets, iViews и т.д.).

Из числа наиболее распространенных средства создания порталов можно назвать следующие:
• Microsoft SharePoint Server 2007.
• WebSphere Portal Server - компании IBM.
• Oracle 9iAS Portal - компании Oracle Corporation.
• Enterprise Portal - компании SAP Portals.
• iPlanet Portal Server - компании Sun Microsystems.

30. Веб-сервисы
Веб-сервис (web service) — программная система, имеющая идентификатор URI, и
общедоступные интерфейсы которой определены на языке XML. Описание этой программной
системы может быть найдено другими приложениями, которые могут взаимодействовать с ней в
соответствии с этим описанием посредством сообщений, основанных на XML, и передаваемых с
помощью интернет-протоколов. Веб-служба является единицей модульности при использовании
сервис-ориентированной архитектуры приложения.
Сервис-ориентированная архитектура (SOA, service-oriented architecture) — модульный
подход к разработке программного обеспечения, основанный на использовании сервисов со
стандартизированными интерфейсами.
В основе SOA лежат принципы многократного использования функциональных элементов ИТ,
унификации типовых операционных процессов . Компоненты программы могут быть
распределены по разным узлам сети, и предлагаются как независимые и слабо связанные,
заменяемые сервисы-приложения.
Интерфейс компонентов SОА-программы осуществляет инкапсуляцию деталей реализации
конкретного компонента (ОС, языка программирования и т. п).
Веб-сервисы .NET имеют следующие достоинства:
• Открытость стандартов. В веб-сервисах отсутствуют какие-либо скрытые или
недоступные элементы. Каждый аспект технологии, от способа поиска веб-сервисы до ее
описания и организации связи с ней, определен общедоступными стандартами.
• Межплатформенность. Язык программирования, который позволяет создавать XML-
документы и отправлять информацию посредством HTTP, позволяет взаимодействовать с
любым веб-сервисом. Можно получать веб-услугу из системы, отличной от .NET.
• Простота.
• Поддержка сообщений на понятном человеку языке. Переход от двоичных стандартов,
применяемых в СОМ и CORBA, к XML-тексту позволил упростить исправление ошибок и
обеспечил возможность осуществлять взаимодействие с веб-сервисами по обычным
каналам HTTP.
Реализация веб-сервисов .NET осуществляется так же просто, как и активизация удаленной веб-
сервисы или вызов метода локального класса. Это достигается за счет применения инструментов,
предоставляемых системой .NET Framework, которые позволяют создать полноценный веб-
сервис, без необходимости изучения деталей работы таких стандартов, как SOAP, WSDL и
UDDI. При этом выполняются следующие действия:
1. Веб-сервис разрабатывается как .NET-класс с атрибутами, которые идентифицируют его
как веб-сервис с некоторыми функциями.
2. В среде .NET автоматически создается документ WSDL, где описывается, как клиент
должен взаимодействовать с веб-сервисом.
3. Потребитель находит созданный веб-сервис и может добавить соответствующую веб-
ссылку в проект Visual Studio .NET.
4. В среде .NET осуществляется автоматическая проверка документа WSDL и генерируется
прокси-класс, который позволяет потребителю взаимодействовать с веб-сервисом.
5. Потребитель вызывает один из методов вашего класса веб-сервиса. С его точки зрения
этот вызов внешне ничем не отличается от вызова метода любого другого класса, хотя
взаимодействие происходит на самом деле с прокси-классом, а не с веб-сервисом.
6. Прокси-класс преобразует, переданные параметры в сообщение SOAP и отправляет его
веб-сервису.
7. Затем прокси-класс получает SOAP-ответ, преобразует его в соответствующий тип
данных и возвращает его как обычный тип данных .NET.
8. Потребитель использует полученные данные.

При работе веб-сервисов .NET используется технология ASP .NET, являющаяся частью системы
.NET Framework. Она также требует поддержки со стороны сервера Microsoft IIS.
Главными недостатками веб-сервисов являются меньшая производительность и больший размер
сетевого трафика по сравнению с такими технологиями как RMI, CORBA, DCOM за счет
использования текстовых XML-сообщений.
31. Стандарты для Web-сервисов.
Спецификация WSDL
Каждый веб-сервис предоставляет документ WSDL (Web Service Description Language - язык
описания веб-сервиса), в котором описывается все, что клиенту необходимо для работы с этим
сервисом. WSDL-документ предоставляет простой и последовательный способ задания
разработчиком синтаксиса вызова любого веб-метода. Более того, этот документ позволяет
использовать инструменты автоматического генерирования прокси-классов, подобные
включенным в среды Visual Studio .NET и .NET Framework. Благодаря указанным средствам
использование веб-сервиса является таким же простым, как и применение локального класса.
WSDL-документ имеет основанный на XML формат, в соответствии с которым информация
подразделяется на пять групп. Первые три группы представляют собой абстрактные
определения, не зависящие от особенностей платформы, сети или языка, а оставшиеся две
группы включают конкретные описания.
Протокол SOAP
Связь между веб-сервисами и их клиентами осуществляется посредством сообщений в формате
XML.
SOAP (Simple Object Access Protocol - простой протокол доступа к объектам) представляет собой
протокол сообщений для выбора веб-сервисов.
Основная идея стандарта SOAP заключается в том, что сообщения должны быть закодированы в
стандартизированном XML-формате.
Кроме сообщений SOAP, для обмена данными с сервисами .NET можно использовать методы
GET и POST протокола HTTP.
Преимущества применения формата SOAP перед другими форматами для передачи данных:
• Кодировать в XML структуры данных и наборы DataSet с использованием SOAP так же
легко, как и данные простых скалярных типов.
• При использовании SOAP-сообщений предоставляются дополнительные инструменты,
позволяющие легко добавлять, например, функции обеспечения безопасности или
трассировки.
• Имеются наборы инструментов SOAP для различных языков программирования (и даже
для предыдущих версий Microsoft C++ и Visual Basic). Иначе, для того чтобы обеспечить
связь с сервисом посредством методов GET и POST протокола HTTP, придется, очевидно,
самостоятельно конструировать строку запроса, а затем проводить синтаксический анализ
ответа.
Стандарт DISCO
Стандарт DISCO предоставляет простейший способ получения доступа к файлам манифестов,
позволяющий группировать ссылки на веб-сервисы.
DISCO-файл может включать файлы различных веб-серверов и поддерживает "динамический
поиск" - автоматический поиск каталога файлов веб-сервисов на сервере.
Файлы манифеста полезны тем, что объединяют множество веб-сервисов в единственном списке,
однако они не позволяют клиентам отыскивать веб-сервисы определенного типа без указания
наименования компании-разработчика.
Спецификация UDDI
Спецификация UDDI (Universal Description, Discovery, and Integration - универсальное описание,
поиск и интеграция) позволяет избежать указанных проблем посредством использования
специального хранилища (репозитория), где предприятия и организации могут размещать
данные о предоставляемых ими сервисах. Инициаторами создания технологии UDDI стали более
100 компаний (полный список можно найти по адресу http://www.uddi.org/community.html),
включая Sun и Microsoft. Объединив свои усилия, эти компании разработали проект
спецификации UDDI, которая по истечении 18 месяцев была стандартизирована.
Информация в этом репозитории должна обновляться вручную. С этой целью некоторые
"узловые операторы" хранят идентичные копии репозитория UDDI. Эти компании обеспечивают
хранение указанного репозитория и бесплатный доступ к нему для популяризации веб-серисов.
Кроме того, Майкрософт включила версию UDDI в программное обеспечение сервера Windows
.NET для использования в корпоративных сетях интранета.
В хранилище UDDI содержатся сведения о предприятиях, предоставляющих веб-сервисы, о типе
каждого сервиса и связях с информацией и спецификациями, относящимися к этим сервисам. Интерфейс UDDI сам по себе представляет собой веб-сервис. Для регистрации или поиска
службы следует отправить SOAP-сообщение.

32. WEB - интеграция.
Задача веб-интеграции заключается в том, чтобы объединить разнородные веб-приложения и
системы в единую среду на базе сети Веб.
Практикуются следующие подходы к веб-интеграции:
• Интеграция на уровне представления. Данный уровень позволяет пользователю
взаимодействовать с приложением. Интеграция на уровне представления дает доступ к
пользовательскому интерфейсу удаленных приложений.
• Интеграция на уровне функциональности. Данная интеграция подразумевает
обеспечение прямого доступа к бизнес-логике приложений. Это достигается непосредственным
взаимодействием приложений с API (программному интерфейсу приложений) или же
взаимодействием посредством веб-сервисов.
• Интеграция на уровне данных. В данном случае предполагается доступ к одной или
нескольким базам данных, используемых удаленным приложением.
• Комплексная интеграция. Коммерческие решения по веб-интеграции, как правило,
включают все три типа интеграции
Использование веб-интеграции выгодно по многим причинам:
• Веб-интеграция позволяет развертывать информационные системы на базе
сторонних приложений без необходимости разбираться в их родительских системах,
программных средах и архитектурах баз данных.
• SOA и веб-сервисы используют программный язык и платформо-независимые
интерфейсы между приложениями корпоративной инфраструктуры ИТ. Это дает очевидные
преимущества в поддержке, управляемости, развертывании информационных сетей.
• Веб-интеграция позволяет конструировать комплексную функциональность,
комбинируя разнородные компоненты посредством протоколов веб-сервисов.
• Веб-интеграция позволяет использовать веб-сервисы разработчиков.
• Веб-интеграция позволяет развивать программные интерфейсы приложений через
протоколы веб-сервисов без программирования.
Для веб-интеграции обычно используется коммерч ПО или популярные тех-ии, такие как
PHP/Python/Perl, XForms, SOAP и т.д.
33. Интеграция на основе XML
Вместо реализации взаимодействия между каждой парой систем следует всего лишь научить
каждую из них "говорить" на XML языке. Иначе говоря, все сводится к разработке нескольких
врапперов (wrapper - упаковщик, программное средство создания системной оболочки для
стандартизации внешних обращений и изменения функциональной ориентации действующей
системы), которые будут переводить со стандартного XML-языка интегрированной системы на
язык, понятный каждой системе в отдельности.
• средства разработки и стандартные библиотеки для XML существуют практически
на всех платформах и для большинства популярных языков программирования;
• методы работы с XML достаточно стандартны для того, чтобы в разных системах
можно было пользоваться одинаковыми приемами;
• информация, оформленная в виде XML, может обрабатываться не только
машинами, но и человеком (что намного облегчает отладку).
В принципе, интеграция по XML-схеме не отличается коренным образом от интеграции на
основе любого другого общего стандарта. Вместе с тем, она имеет целый ряд весомых
преимуществ:
• XML языки не зависят от аппаратных и программных платформ, что позволяет
связывать разнородные системы;
• выразительная мощность XML достаточно велика для того, чтобы описать данные
практически любой сложности;
Интеграция на основе XML практически реализуется в рамках протоколов:
• XML-RPC. Это протокол удаленного вызова процедур с передачей данных в
формате XML через TCP-порт 80, т.е. HTTP -порт. • WDDX (Web Distributed Exchange). Представляет собой механизм обмена
сложными структурами данных по протоколу HTTP. Протокол базируется не на структурах, а на
событиях.
• ebXML (electronic buisiness XML) – XML для электронного бизнеса. Основное
назначение – предоставление открытой XML-инфраструктуры, обеспечивающей безопасное
глобальное использование информации электронного бизнеса. • Веб-сервисы (веб-службы).
34. XML
XML (eXtensible Markup Language) - рекомендованный W3C язык разметки. XML - текстовый
формат, предназначенный для хранения структурированных данных, для обмена информацией
между программами, а также для создания на его основе специализированных языков разметки.
XML является упрощенным подмножеством языка SGML.

Язык XML имеет следующие достоинства:
• Это человеко-ориентированный формат документа, он понятен как человеку, так и
компьютеру.
• Поддерживает Юникод.
• В формате XML могут быть описаны основные структуры данных - такие как записи,
списки и деревья.
• Это самодокументируемый формат, который описывает структуру и имена полей также
как и значения полей.
• Имеет строго определенный синтаксис и требования к анализу, что позволяет ему
оставаться простым, эффективным и непротиворечивым.
• Широко используется для хранения и обработки документов;
• Это формат, основанный на международных стандартах;
• Иерархическая структура XML подходит для описания практически любых типов
документов;
• Представляет собой простой текст, свободный от лицензирования и каких-либо
ограничений;
• Не зависит от платформы;
• Является подмножеством SGML, для которого накоплен большой опыт работы и созданы
специализированные приложения;

К известным недостаткам языка можно отнести следующие:
• Синтаксис XML избыточен.
• Размер XML документа существенно больше бинарного представления тех же данных.
• Размер XML документа существенно больше, чем документа в альтернативных текстовых
форматах передачи данных (например JSON, YAML) и особенно в форматах данных,
оптимизированных для конкретного случая использования.
• Избыточность XML может повлиять на эффективность приложения. Возрастает
стоимость хранения, обработки и передачи данных.
• Для большого количества задач не нужна вся мощь синтаксиса XML, и можно
использовать значительно более простые и производительные решения.
• Пространства имен XML сложно использовать и их сложно реализовывать в XML
парсерах.
• XML не содержит встроенной в язык поддержки типов данных. В нем нет понятий "целых
чисел", "строк", "дат", "булевых значений" и т. д.
• Иерархическая модель данных, предлагаемая XML, ограничена по сравнению с
реляционной моделью и объектно-ориентированными графами.

По-сути, XML служит метаязыком для описания структуры других языков. Взаимосвязь между
SGML, XML, HTML и некоторыми другими языками показана на следующей диаграмме:

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

Проверка действительности документа предполагает выполнение следующих действий:
• Проверка использования только заданного набора дескрипторов.
• Проверка полного соответствия порядка следования элементов и атрибутов содержанию
документа или определенным правилам.
• Контроль типов данных (достигается при использовании соответствующей схемы).
• Контроль целостности данных для обеспечения оптимального обмена информацией через
Веб с помощью транзакций.

Основные синтаксические правила построения XML документов.
• XML документ содержит один и только один корневой элемент, содержащий все
остальные элементы
• Дочерние элементы, содержащиеся в корневом элементе, должны быть правильно
вложены.
• Имена элементов подчиняются правилам:
• Имя начинается с буквы, знака подчеркивания или двоеточия.
• После первого символа в имени могут быть буквы, цифры, знаки переноса,
подчеркивания, точка или двоеточие.
• Имена не могут начинаться с буквосочетания XML.

XML документ имеет следующую структуру :
• Первая строка XML документа называется объявлением XML. Это необязательная строка,
указывающая версию стандарта XML (обычно это 1.0). Также здесь может быть указана
кодировка символов и внешние зависимости.
• Комментарий может быть размещен в любом месте дерева. XML комментарии
размещаются внутри пары тегов

. Два знака дефис (--) не могут
быть применены ни в какой части внутри комментария.
• Остальная часть этого XML-документа состоит из вложенных элементов, некоторые из
которых имеют атрибуты и содержимое.
• Элемент обычно состоит из открывающего и закрывающего тегов, обрамляющих текст и
другие элементы.
• Открывающий тег состоит из имени элемента в угловых скобках;
• Закрывающий тег состоит из того же имени в угловых скобках, но перед именем еще
добавляется косая черта.
• Содержимым элемента называется все, что расположено между открывающим и
закрывающим тегами, включая текст и другие (вложенные) элементы.
• Кроме содержания у элемента могут быть атрибуты - пары имя=значение, добавляемые
внутрь открывающего тега после названия элемента.
• Значения атрибутов всегда заключаются в кавычки (одинарные или двойные), одно и то
же имя атрибута не может встречаться дважды в одном элементе.
• Не рекомендуется использовать разные типы кавычек для значений атрибутов одного
тега.
• Для обозначения элемента без содержания, называемого пустым элементом, необходимо
применять особую форму записи, состоящую из одного тега, в котором после имени
элемента ставится косая черта "/". DTD
DTD (Document Type Definition определение типа документа) — язык описания
структуры SGML-документа.
Схема DTD предоставляет шаблон разметки документа, в котором указываются наличие,
порядок следования и расположение элементов и их атрибутов в документе XML.
Сейчас идёт отказ от использования DTD в XML-технологии по ряду причин:
• Не являются экземплярами XML. Требуется изучение совершенно другого языка.
• Не предоставляют контроль за типами данных, за исключением самых простых
текстовых данных.
• Не являются экземплярами XML, поэтому их нельзя легко расширить или преобразовать к
другим языкам разметки – HTML или DHTML.
• Не обеспечивают поддержки пространств имен XML.

35. XSL
XSL-таблица стилей (eXtensible Stylesheet Language - расширяемый язык таблиц стилей)
связывается с XML-документом и сообщает браузеру, как отображать данные XML. XSL
позволяет открывать XML-документ непосредственно в браузере без посредничества HTML-
страницы. XSL позволяет осуществлять отбор и сортировку данных XML при их отображении,
предоставляет доступ ко всем компонентам XML (элементам, атрибутам, комментариям и
инструкциям по обработке), даёт возможность включать в таблицу стилей сценарии.
Существуют два основных шага для отображения XML-документа при использовании XSL-
таблицы стилей:
1. Создание файла XSL-таблицы стилей. XSL является приложением XML, т.е. XSL-таблица
представляет собой корректно сформированный XML-документ, который отвечает
правилам XSL.
2. Связывание XSL-таблицы стилей с XML-документом. В XML-документ включается
инструкция по обработке xml-stylesheet.

Связывание в XML состоит из двух частей: XLink и XPointers.
XLink (XML Linking Language, Расширяемый язык соединений) определяет, как один
документ связывается с другим.
XPointers (XML Pointer Language, Расширяемый язык указателей) описывает, как
общаются отдельные части документов. XLink указывает на универсальный локатор
ресурса (URI), который устанавливает отдельный ресурс.

36. XSLT
XSLT (Extensible Stylesheet Language Transformations) — часть спецификации XSL, задающая
язык преобразований XML-документов. Спецификация XSLT является рекомендацией W3C.
При применении таблицы стилей XSLT, состоящей из набора шаблонов, к XML-документу
(исходное дерево) образуется конечное дерево, которое может быть другой XML-
структурой, HTML-документом или обычным текстом. Правила выбора (и, отчасти,
преобразования) данных из исходного дерева пишутся на языке запросов XPath.
XSLT имеет множество различных применений, в основном в области web-программирования и
генерации отчётов. Одной из задач, решаемых языком XSLT, является отделение данных от их
представления, как часть общей парадигмы MVC (Model-view-controller). Другой стандартной
задачей является преобразование XML-документов из одной XML-схемы в другую.

37. Парсеры
XML-парсер - это часть кода, которая читает XML-документ и анализирует его структуру.
Для программной обработки XML документов используется модель XML DOM, которая
определяет объекты и свойства всех XML элементов и методы (интерфейс) для доступа к ним.
Иначе говоря, XML DOM описывает каким образом необходимо получать, изменять, добавлять и
удалять XML элементы.

Согласно DOM:
• все, что содержится внутри XML документа, является узлом;
• весь документ представляется узлом документа;
• каждый XML элемент – узел элемента;
• текст внутри XML элементов - текстовый узел;
• каждый атрибут - узел атрибута;
• комментарии - узлы комментариев.

XML документ в соответствии с моделью XML DOM представляется как дерево из узлов, при
этом:
• Все узлы дерева находятся в определенных отношениях друг с другом.
• Все узлы доступны через дерево. Их содержимое может быть изменено, удалено; новые
элементы могут быть добавлены в дерево.
• Дерево начинается с корневого узла и разветвляется вниз вплоть до текстовых узлов на
самом низшем уровне дерева.
• Все узлы находятся в иерархических отношениях между собой.
• Эти отношения описываются с помощью понятий родитель, дочерний и потомок (все
дочерние на одном уровне).

SAX (Simple API for XML) - прикладной программный интерфейс для парсера с
последовательным доступом к XML. Этот интерфейс предоставляет механизм чтения данных из
XML документа.
SAX парсер является поточным и управляемым событиями. Задачей пользователя SAX API
заключается в описании методов, вызываемых событиями, возникающими при анализе
документа.
Такими событиями могут быть следующие:
• текстовый узел;
• узел элемента XML;
• инструкция обработки XML;
• комментарий XML.

События вызываются появлением как открывающего тэга, так и закрывающего тэга любого из
этих элементов документа. Атрибут XML также рассматривается как событие.
Анализ документа является однонаправленным (т.е. без возвратов по дереву).
В отличие от DOM формальной спецификации для SAX не существует. В качестве нормативной
рассматривается Java реализация SAX.

Достоинства:
• Затраты памяти существенно меньше (зависит от максимальной глубины дерева
документа и количества атрибутов в узле элемента), чем в случае DOM (требуется
хранить в памяти все дерево документа).
• Скорость работы выше за счет сокращения затрат времени на выделение памяти для
элементов дерева в случае DOM.
• Потоковое чтение данных с диска в случае DOM невозможно. Если для размещения всего
документа в памяти недостаточно места, то использование SAX является
безальтернативным.

Недостатки: • Процедура проверки правильности предполагает доступ ко всему документу
одновременно.
• Это также требуется и в случае XSLT преобразования.