Языки Web-приложений

Первоначально многие исследования в области создания и усовершенствования глобальных сетей поддерживались Министерством обороны США. Целью этих разработок являлось создание такой сети, которая смогла бы функционировать даже в случае возникновения ядерной войны между США и бывшим СССР.

Запуск в СССР первого искусственного спутника Земли в 1957 году стал поводом для подписания президентом США Д.Эйзенхауэром документа о создании в рамках Министерства обороны Агентства по перспективным научным проектам – DARPA (Defense Advanced Research Projects Agency). Через несколько лет основная деятельность агентства сконцентрировалась на сетевых компьютерных технологиях.

В 1966 году в DARPA пришел Ларри Робертс с идеей распределенной сети (не имеющей центрального компьютера). В 1968 начали работать совместно четыре станции, в 1969 принят первый RFC (Request for Comment) «Программное обеспечение узла».

В 1972 произошел "выход в свет" - международная конференция с демонстрацией сети из 40 машин.

1982 - оформление протоколов ARPA в знакомое сегодня всем семейство TCP/IP.

Сеть Интернет является крупнейшей всемирной компьютерной сетью. Интернет вырос из сети ARPANET, созданной примерно четверть века назад для обмена информацией между рядом исследовательских центров военной промышленности США и их коллег за рубежом. Сеть ARPANET постепенно росла - от нескольких компьютеров в 1971г. до тысячи к 1984г. К 1987г. Интернет включала в себя 10 000. К 1989г. их число превысило 100 000. В 1990г. сеть ARPANET прекратила свое существование, но сеть Интернет продолжала расти - от миллиона компьютеров в 1992г. до двух миллионов в 1993г.

Но реальным рождением этого восьмого чуда света можно считать объединение шести крупных IP-сетей США в единую научную сеть NSFNET в 1986 году. Свою основополагающую роль NSFNET сохраняла до 1996 года, после чего стала менее значимой.

Всемирная паутина - World Wide Web (WWW) появилась много позже, в 1992 году. Точно известен автор - Тим Бернерс-Ли из Европейского центра ядерных исследований (CERN), расположенного в Женеве, Швейцария. Мало кому известная, появившаяся за счет энтузиазма, технология обеспечила лавинообразный рост Интернет. Рубежом можно считать 1993 год, когда количество подключенных серверов перевалило за миллион. После этого пропали последние сомнения в перспективах сети.

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

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

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

Идея создания гипертекстов появилась в 1985 году. В 1989 году это направление было чрезвычайно модным. В гипертекстовой информационной системе пользователь имеет возможность просматривать документы (страницы текстов) в том порядке, в котором это ему больше нравится.

Гипертекст - это нелинейный текст. Это достигается путем создания специального механизма связи различных страниц текста при помощи гипертекстовых ссылок. У обычного текста есть ссылки типа “следующий-предыдущий”. У гипертекста можно построить еще сколько угодно ссылок.

 

Основные компоненты технологии WWW

При разработке WWW-технологии была реализована идея применения гипертекстовой модели к информационным ресурсам, распределенным в сети, и сделать это максимально простым способом. Четыре основные компоненты технологии WWW:

- язык гипертекстовой разметки документов HTML (HyperText Markup Language);

- универсальный способ адресации ресурсов в сети URL (Universal Resources Locator);

- протокол обмена гипертекстовой информацией HTTP - (Hyper Text Transfer Protocol);

- универсальный интерфейс шлюзов CGI (Common Gateway Inetface).

В HTML заложены три идеи:

- простота набора текста;

- гипертекстовые ссылки храняться в теле документа как его часть;

- возможность включения в документ файлов других форматов.

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

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

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

CGI - расширение возможностей WWW за счет подключения внешнего программного обеспечения, например расчетных программ.

Архитектура WWW-технологии

Программное обеспечение WWW построено по схеме клиент-сервер.

Программа -клиент выполняет функции интерфейса пользователя и обеспечивает доступ практически ко всем ресурсам Internet. Фактически клиент - это интерпретатор HTML. В его функции входит размещение информации на экране и обмен информации с сервером по мере анализа полученного HTML - текста, что наиболее наглядно происходит при отображении встроенных в текст графических образов. При анализе URL - спецификации или по командам сервера клиент запускает дополнительные внешние программы для работы с документами в форматах, отличных от HTML (GIF, JPG и т.д.). Для запуска клиентом программ независимо от типа документов разработанная программа Launcher. Но в последнее время чаще используется механизм согласования запускаемых программ через MIME-типа.

Другую часть программного комплекса WWW составляют сервер протокола HTTP, базы данных документов в формате HTML, управляемые сервером, и программное обеспечение, разработанное в формате CGI.

Существует несколько программ-серверов:

CERN, NCSA - использовались до появления Netscape.

Сервер для Windows - свободно распространяемый без встроенного самоликвидатора.

Apachie- сервер для Unix - противовес Netscapeи реализует дополнительные функции HTML;

Netscape- сервер Netscape с самоликвидацией. Ориентирован на коммерческое распространение.

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

Проикладные программы делятся на 2 класса: шлюзы и прочие программы.

Шлюзы - это программы, обеспечивающие взаимодействия сервера с серверами других протоколов, например FTP.

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

Web-сервер

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

- он должен: а работать быстро, чтобы справляться со множеством запросов, используя минимум аппаратных средств;

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

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

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

-                                 предлагать разные форматы. Говоря техническим языком, пользователю могут понадобиться файлы в формате JPEG, а не GIF, или не то и не другое, а TIFF. Может ему захочется посмотреть текст не в формате PostScript, а в формате vdi;

-                                  работать как proxy-сервер. Proxy-сервер - это сервер, который принимает запросы от клиентов и пересылает их на реальные серверы, а затем передает ответы от этих серверов обратно клиентам. Необходимость такого двумя причинами:

- proxy-сервер может работать на внешней стороне брандмауэра, предоставляя своим пользователям доступ к Internet;

- он может кэшировать популярные страницы, обеспечивая повторный доступ к ним;

- быть надежным.

 

Протокол HTTP

Для обмена гиппертекстовой информацией в сети Internet используется НТТР,  HyperTexp Transfer Protocol протокол прикладного уровня. Протокол используется в системе Сети WWW.

НТТР позволяет реализовать в рамках обмена данными набор методов доступа, базирующихся на спецификации универсального идентификатора ресурсов (URI) Universal Recourse Indicator, применяемого в форме URL или универсального имени ресурса Universal Resource Name. НТТР используется для взаимодействия программ-клиентов с программами-шлюзами, разрешающими доступ к:

- файловым архивам FTP;

- системам Gopherи WAIS;

- ресурсам электронной почты;

- спискам новостей Usenet.

Протокол разработан для доступа к этим ресурсам посредством промежуточных программ-серверов (proxy), которые позволяют передавать различную информацию между различными информационными службами без потерь.

Протокол реализует принцип "запрос - ответ". Запрашивающая программа-клиент инициирует взаимодействие с сервером и посылает запрос:

- метод доступа;

- адрес URL;

- версию протокола;

- сообщение с модификаторами типа данных;

- информация клиента.

Сервер передает ответ в виде строки состояния включающей версию протокола и код возврата. Далее следует сообщение в формате MIME, предназначенное для описания тела почтового сообщения Internet.

При работе в Internet для обслуживания НТТР-запросов используется порт 80 ТСР/IP.

Технология работы: клиент устанавливает соединение и ждет ответа сервера. После отправки ответа сервер инициирует разрыв соединения. Таким образом, при передаче сложных гипертекстовых страниц соединение может устанавливаться несколько раз.

Структура прикладного программного обеспечения компьютера на  в сети TCP/IPимеет примерно следующий вид:

Методы доступа

В настоящее время в практике WWW реально используются три метода доступа: GET, POST, HEAD. В версии 1993 г. насчитывалось 13 методов доступа, но большинство из них не нашли применения.

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

HEAD - то же, что и GET, но не возвращает тела ресурса. Используется для получения информации о ресурсе. Метод используется для тестирования гиперссылок.

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

Запрос клиента

В протоколе НТТР задан набор команд, передающийся посредством строк в ASCII-кодах. Транзакция НТТР состоит из 4-х частей:

установление соединения - запрос - ответ - завершение.

Программа-клиент устанавливает ТСР-соединение с официальным портом НТТР (80) на удаленном компьютере. Затем клиент посылает запрос к серверу НТТР. После получения ответа сервер и клиент закрывают соедиенние. Каждая транзакция НТТР подчиняется данной схеме.

Запрос клиента к серверу для получения файла должен содержать имя файла, его местоположение в Internet и метод передачи. Схема доступа к НТТР:

http://<компьютер>:<порт>/<путь>?<информация для поиска>

Если элемент "путь" не указан, будет использоваться официальный порт 80.

Запросы НТТР-клиента делятся на две категории:

- простые;

- полные.

Запросы называются методами. Единственный метод простого запроса - GET. Пример: GET<uri>CRLF.

Простой запрос заставит сервер найти и передать объект, который указан в URI.

Так как клиент запрашивает определенный тип объекта, он должен знать как с ним обращаться. Для простого НТТР-запроса сервер является не более чем файловым сервером.

Полный НТТР-запрос начинается с метода НТТР. После команды полного запроса указывается URI и версия протокола НТТР.

<Полный_запрос>:=<Строка_запроса> (<общий_заголовок>/<заголовок_запроса>/<заголовок_ресурса>)

<CR><LF>[<тело_ресурса>].

Форма ответа сервера

Ответ сервера также может быть полным или простым.

<Полный_ответ>:=<строка_состояния>(общий_заголовок/

заголовок ответа/ заголовок ресурса) <CRLF>[тело ресурса].

Строка состояния включает код возврата, версию протокола, описание кода:

"НТТР/1.0 200 SUCESS

класс сообщения

Подробности о НТТР, его полях можно найти в последней спецификации по адресам:

http://www.w3.org/ или

ftp://ftp.www.w3.org.

Коды сообщений классифицированы:

1хх - информационное сообщения;

2хх - сообщение успешно выполненного запроса;

3хх - сообщения переадресации;

4хх - ошибки клиента;

5хх - ошибки сервера.

Заголовок ответа может содержать: адрес URI/наименование программы_сервера.

Заголовок ресурса: разрешение на метод доступа, тип кодировки тела ресурса, длина тела ресурса, типа ресурса, времени действия данной копии, время последнего применения заголовка.

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

Имя версии сервера: Server CERN/3.0 libwww 12.17

Документы HTML содержат информацию, которую нужно интерпретировать. Действия, выполненные WWW-клиентом просты, т.к. он должен уметь управлять одним ТСР-соединением, которое должно быть открыто только в момент передачи данных. Браузер - программа сложная, т.к. должна выполнить представление полученных от сервера данных в соответствии с адресом HTML.

Защита сервера от несанкционированного доступа

Потенциальной опасностью доступа к защищенной информации на сервере протокола НТТР создаются разрешением создания файлов (использование общего файлового пространства для WWW и FTP, домашние страницы). Эта проблема решается путем создания специальных файлов прав пользователей сервера WWW.

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

Мобильный код - программа, передаваемая по сети для выполнения клиентом. Код встраивается в www-страницу тагом <APP>. Это реализация мультимедиа. Это канал для использования разного рода вирусов.

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

 

Идеология языка HTML.

Язык HTML (HiperText Marcup Language) был предложен (Тим Бернерс-Ли) в 1993 г. как один из компонентов технологии разработки распределнной гипертекстовой системы Word Wide Web.

Разработчики пытались решить две задачи:

1) дать дизайнерам гипертекстовых баз данных простое средство создания  документов.

2) сделать это средство достаточно мощным, чтобы отразить имевшиеся на тот момент представления об интересах пользователя гипертекстовых баз данных.

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

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

Файл можно создать в любом текстовом редакторе.

Гипертекстовая_база_данных - это набор текстовых файлов, написанных на языке HTML, определяющим форму представления информации (разметка) и структуру связи этих файлов (гипертекстовые ссылки).

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

Сервер выполняет следующие функции:

- доступ к документам;

- обработку гипертекстовых ссылок;

- препроцессорную обработку документа.

Интерфейс пользователя осуществляет интерпретацию конструкций языка, связанных с представлением информации.

В настоящее время известна версия языка HTML3.0. Несмотря на то, что имеются средства и макросы для текстовых процессов, большинство пользователей создают WWW - страницы вручную.

Каждая HTML - команда вводится непосредственно в файл в место, начиная с которого она должна оказывать эффект.

<команда>     ............     </команда>.

начало команды          конец команды

Многие команды могут иметь параметры, которые управляют их работой. В этом случае синтаксис команды имеет вид:

<команда  параметр= значение>

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

Структура HTML-документа

Чтобы WWW - браузеры могли узнать, что тот или иной файл написан на языке HTML, в начале и в конце документа указываются таги:

<HTML>.........документ..........</HTML>.

В общем случае эти команды необязательны. Но лучше их использовать.

Страницы WWW состоят из заголовка и тела. Заголовок выделяется тагами

  <HEAD>..... ...... ....</HEAD>,

 а тело - тагами

 <BODY>....... ....   .....</BODY>.

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

<TITLE> текст названия HTML - страницы </TITLE>.

Эта команда должна использоваться только в разделе HEAD.

Структура HTML-документа:

<HIML>

<HEAD>

содержание заголовка

</HEAD>

<BODY>

содержание тела документа

</BODY>

</HTML>

Заголовок документа

Заголовок документа не имеет атрибутов. Таги начала и конца заголовка могут отсутствовать. Это возможно потому, что множества имен тагов заголовка и тела  не пересекаются. Расширение версии HTML 3.0. может привести к ошибкам при отсутствии заголовка.

Назначение заголовка - описание общих для всего документа параметров обозначения:

- стиль отображения документа;

- общий базовый адрес гиперссылок;

- общие гипертекстовые ссылки;

- идентификатор и имя документа и т.д.

Тело документа.

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

- иерархические контейнеры и заставки;

- заголовки от H1 до Н6;

- блоки (параграфы, списки, формы, таблицы, картинки и т.п.);

- горизонтальные отчеркивания и адреса;

- текст, разбитый на области действия стилей (подчеркивание, выделение, курсив);

- математические описания;

- гипертекстовые ссылки.

 

Расширенный язык разметки XML

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

Его прародитель - язык разметки SGML (Standard Generalized Markup Language), утвержденный в качестве стандарта ISO 8879 еще в 80-х годах, более универсален, но довольно сложен для освоения и использования. Ограниченность HTML преодолена в сравнительно новом языке XML (eXtensible Markup Language), также построенном на идеях SGML, но оказавшимся заметно более удобным для практических применений, чем SGML. В настоящее время язык XML претендует на роль основного языка представления документов в информационных технологиях, его можно рассматривать как метаязык, служащий основой для создания частных языков разметки в различных приложениях. Так, к числу частных языков разметки, называемых словарями XML [1], относится язык HTML.

XML-документсостоит из двух частей: размеченного документа, отображающего исходную информацию, и декларации средств используемого языка разметки. Эта декларация, называемая таблицей определения типов DTD (Document Type Definition), должна соответствовать общим правилам языка XML, но может содержать объявления элементов, специфичных для некоторого приложения и определяющих используемую разновидность XML. Разновидности XML (словари XML) могут создаваться по мере необходимости, что и оправдывает определение XML как метаязыка.

Элементы XML- части размеченного документа. Элементом может быть порция данных вместе с парой тегов (контейнером), между которыми она помещена. К элементам также относится пустой (бесконтейнерный) тег.

Объявление элемента, выполняемое в DTD, представляет собой строку следующего вида (далее в примерах нетерминальные символы в отличие от служебных слов языка XML будут русскими словами, записанными курсивом):

<!ELEMENT имя содержание>

где имя - имя элемента, содержание - параметр, который может быть описанием вложенных элементов, словом EMPTY или фразой (#PCDATA). Описание вложенных элементов отражает иерархическое построение документа и представляет собой перечисление частей документа (элементов, вложенных в данный элемент) в круглых скобках через запятую, необязательные элементы помечаются знаком ?. Знак * после закрывающей скобки означает, что элементы списка могут повторяться в документе ни разу, один или более раз. Например, некоторый элемент соответствует главе текста, а элементы, указанные в его содержании - вложенным в главу параграфам. Фраза (#PCDATA), где PCDATA - аббревиатура слов parseable character data, указывает на наличие текстового содержимого контейнера. Слово EMPTY записывается в строках бесконтейнерных элементов.

Для бесконтейнерных элементов в DTD могут быть указаны атрибуты (параметры) с помощью объявления:

<!ATTLIST имя атрибут (список значений) "значение по умолчанию" >

где имя - имя элемента, атрибут - имя параметра, список значений - список возможных значений параметра, разделенных вертикальной чертой (знаком "|"), значение по умолчанию - значение параметра по умолчанию. Вместо (список значений) может быть указан тип элемента, например, CDATA (любые символьные данные), ID (уникальный идентификатор) и т.п., В объявлении может быть представлено более одного параметра, т.е. часть вида имя атрибут (список значений) "значение по умолчанию" будет повторяться многократно.

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

<!ENTITY псевдоним "фраза" >

В частности, такие символы, как < , >, & и некоторые другие, нельзя использовать в документе иначе, чем в тегах, и их нужно заменить псевдонимами. Блок данных может быть списком атрибутов, который будет использоваться в DTD многократно:

<!ENTITY % имя перечня 'список атрибутов'>

где список атрибутов записывается по тем же правилам, что и в объявлении ATTLIST.

Комментарий- произвольный текст, записываемый между символами <!- и ->.

Командазаписывается между символами <? и ?>. Команды являются указателями XML-процессору на выполнение определенных действий по обработке данных.

ВXML-документе элементы описываются в соответствии с DTD. Документ начинается со следующих предложений:

<?xml version="номер версии" дополнения ?>

<!DOCTYPE имя документа SYSTEM "имя файла" >

В дополнениях (или в отдельной команде) может быть указана используемая кодировка, например, encoding='ISO 8859-1', указание на использование только внутреннего DTD (тогда в дополненни записывается standalone ="yes", иначе standalone ="no").Имя файла - это имя файла, в котором находится DTD. Но DTD может быть полностью или частично заключена в квадратные скобки и помещена непосредственно в объявление DOCTYPE.

В XML расширены возможности гиперсвязей. Механизм связей в XML изложен в спецификациях XLink и XPointer. Первая из них посвящена связям между документами, а вторая - связям внутри документа. Простая связь аналогична href-ссылке в HTML. Но возможны также связи многонаправленные, связи, которые не заменяют на экране просматриваемый документ данными из вызванного ресурса, а помещают эти данные в дополнительное окно или встраивают их в исходный документ. Ссылки в виде атрибутов включаются в соответствующие элементы, например, в элемент topic:

<topic href="url">...</topic>

гдеurl(Unified Resource Locator) - указательнаресурс.

Примерзаписи элементов XML-документа:

<?xml version="1.0" ?>

<!DOCTYPE networks [

<!ELEMENT item (features|description|examples) >

<!ELEMENT features EМPTY>

<!ATTLIST features type (Ethernet|TR|FDDI|other) "Ethernet" >

<!ATTLIST topology (bus|ring|star) "bus" >

<!ELEMENT description (#PCDATA)>

<!ELEMENT examples (#PCDATA)>

<!ENTITY LAN "Local Area Network" >

]>

<item>

<features type='TR' topology='ring' />

<description> This is LAN </description>

<examples> Protocol is IEEE 802.5 (/examples>

<loc href="http://www.bmstu.ru"> BMSTU </loc>

</item>

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

 

JAVA

Объединение глобальных сетей Internet использует ресурсы огромного количества серверов различного типа. До появления в Internet инфраструктуры WWW пользователи Сети осуществляли доступ к FTP; Gopher и др. серверам с помощью различных клиентских программ. С появлением WWW и Web-броузеров доступ к ресурсам Internet существенно упростился за счет нормального интерфейса программы-броузера. Система Netscape обеспечивает простой доступ ко многим ресурсам Internet. Web-броузеры исключают применение многочисленных маленьких приложений для каждой работы в Сети.

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

Несмотря на увеличение размеров броузеров, у пользователя было очень мало средств именно самому что-то сделать в сети. Web оставляли просто пассивным переносчиком содержания страниц.

Решить проблему пассивности возможно разгрузкой программ по Сети. Сдерживающим здесь является огромное количество используемых типов компьютеров и систем. Нужно архитектурно-нейтральное программное средств, т.к., например, исполнимый файл Windows не имеет смысла для UNIX или Mac.

Для решения указанных проблем был создан интерпретирующий язык JAVA.

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

В настоящее время интерпретатор JAVA встроен в броузер Nestcape. Фирмы Sun, Microsoft, Silicon Graphics ведут совместные работы над стандартизацией языка JAVA в Internet для различных приложений (например, трехмерные интерактивные приложения).

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

Синтаксис JAVA очень близок к С++. Но множество инструментов устранены из языка:

1) инструменты, служащие источником проблем в программах на С++.Это автоматическое согласование типов, множественное наследование, перегрузка операторов.

2) инструменты, связанные с управлением памятью. Память распределена при создании объектов и остается доступной до тех пор, пока есть ссылки на объект. Если объект не нужен, он устраняется сборщиком мусора.

Наряду с самим языком JAVA имеется инструментальный набор разработчика (JAVA Developer's Kit, JDK), в котором есть базовые библиотеки, релизующие общие типы данных и услуги. JAVA - это язык и набор классов.

ХарактеристикиJAVA

Огромный потенциал JAVA имеет благодаря четырем характеристикам:

- сетевая осведомленность;

- переносимость;

- безопасность;

- объектная ориентация.

1. Сетевая осведомленность JAVA означает, что каждое приложение JAVA имеет возможность обладать сетевыми характеристиками. Для Internet это вылилось в обеспечение интерфейса широкого уровня.

Клиент и сервер приложения JAVA устанавливают взаимодействие следующим образом:

Сервер: server Socket My Server Socket =

new Server Sjcket (1035);

Socket S = My Server Sock.accept ();

Клиент подсоединяется к серверу одной строкой

Socket My Client Socket = new Socket("имя_компа", 1035);

Когда эти вызовы возвращаются, то эти две машины оказываются соединенными и могут читать и/или писать в это соединение.

Работа с сетевым i/o на уровне сокетов требует реализации того протокола, который предполагается использовать. JAVA предлагает для такого случая классы высокого уровня. Например, класс URLConnectoin обрабатывает соединение с littp - доменом,

обслуживающим HTML-файлы. Он находит на сервере нужный файл и создает поток данных, которые можно считать с сервера. Класс Input Stream делает все остальное.

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

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

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

Доступ к системным ресурсам - файловой системе скрывает опасность нарушения защиты системы. В JAVA реализован компромисс безопасность / функциональность путем фильтрования всех опасных требований доступа к системным ресурсам через класс.

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

 

JavaScript,  VBScript иPerlScript

При всей своей универсальности язык Java достаточно сложен в использовании; во многих случаях не требуется  мощности Java, однако желательно производить некоторые действия (например, арифметические, недоступные HTML).

С этой целью был разработан (фирма Netscape Communication Corp., первоначальное название LiveScript) язык JavaScript (не имеющий прямого отношения к Java), язык JavaScript является средством создания активных WEB-страниц непрофессионалами. Фирма Microsoft Corp. реализовала в своем броузере Microsoft Internet Explorer поддержку языка JScript (весьма близкому  к JavaScript), давняя приверженность главы Microsoft к Basic’у  привела к  включению в упомянутый броузер поддержку языка  VBScript (по возможностям близкого JavaScript). Так же как и Java, программы на JavaScript и VBScript позволяют не только создавать активные (изменяющиеся предсказанным образом в процессе работы) WEB-страницы, но и снижают поток данных между рабочей станцией и сервером WEB (что благоприятно сказывается на скорости реакции сервера).

Ниже показан HTML-сценарий с встроенным кодом на JavaScript

<HTML>

<HEAD>

<TITLE>Динамическое создание WEB-страницы</TITLE>

</HEAD>

<BODY>

<H1>JavaScript test</H1>

<SCRIPT LANGUAGE="JavaScript">

document.write("Этоттекстдинамическисгенерирован"  +    

"программой на JavaScript");

</SCRIPT>

</BODY>

</HTML>

Здесь код на JavaScript заключен между тегами <SCRIPT LANGUAGE=“JavaScript”> и </SCRIPT> и вызывает метод write объекта document, причем  метод (по умолчанию) вызывается при загрузке HTML-файла броузером, что приводит к генерации соответствующего текста (и, соответственно, индикации его в окне броузера).

Язык JavaScript позволяет связать вызов конкретной функции с некоторым событием (загрузкой  или выгрузкой файла, перемещением указателя ‘мыши’ над заданным участком окна броузера, щелчком кнопки ‘мыши’ над графическим объектом и др.), что позволяет придать WEB-странице определенную ‘интеллектуальность’.

Например, следующий фрагмент HTML-сценария связывает вызов JavaScript-процедуры MakeOnLoad с загрузкой файла в броузер, а процедуры MakeOnUnload - с выгрузкой (например, в связи с переходом к следующей странице).

. . .

<BODY onLoad="MakeOnLoad()" onUnload="MakeOnUnload()">

. . .

Следующий пример сценария служит для выдачи окна запроса с двумя кнопками - ‘Ok’ и ‘Cancel’ (при щелчке левой кнопкой ‘мыши’ по выделенному словосочетанию-ссылке ‘Желаете выгрузить’) и совершения некоторого действия (в данном случае выгрузки файла OMD.RAR на компьютер клиента) при положительном ответе

. . .

<AHREF="JavaScript:

if (confirm('Вы действительно желаете выгрузить на свой '  +

'компьютер файл OMD.RAR размером аж 330 kb ?'))

location.href = './bin/omd.rar';">

Желаете выгрузить</A> на Ваш компьютер пакет OMD ?

. . .

В языке JavaScript определены функции работы с числами, строками, массивами, определения типа броузера, анализа и изменения содержимого WEB-страниц, диалога с пользователем, обработки данных форм (перед отсылкой на сервер),  взаимодействия с апплетами Java и др., поддерживается обьектно-ориентированный подход. Для отладки JavaScript-сценариев предлагается отладчик Microsoft Script Debugger.

Язык VBScript в целом обладает сходными с JavaScript возможностями, но имеет Basic-подобный синтаксис и поддерживается только броузером Microsoft Internet Explorer.

В отличие от Java, коды JavaScript и VBScriptпрактически безопасны с точки зрения совершения несанкционированных действий на компьютере пользователя.

Некоторые WEB-броузеры (например, MicrosoftInternetExplorerверсий выше 4) способны интерпретировать встроенный в HTML-код  язык PerlScript. Часто вместо создания полномасштабной CGI-программы возможно ограничиться внедрением текста на PerlScriptв WEB-страницу (ниже приведен пример простейший HTML-страницы с  выводом строки посредством PerlScript-кода), также см. [20].

<!DOCTYPE HTML PUBLIC “-//W#C//DTD HTML 3.2//EN”>

<HTML>

<HEAD>

<TITLE>My first PerlScript  example</TITLE>

</HEAD>

<BODY>

<H2>PerlScript example</H2>

<SCRIPT LANGUAGE="PerlScript">

$window->document->write("Hello, PERL !");

</SCRIPT>

</BODY></HTML>

 

PHP

PHP– это язык сценариев, выполняющийся на стороне сервера. Он был разработан специально для Web– программирования и в очень короткие сроки приобрел большую популярность. PHPявляется интерпретируемым  языком программирования.

Пример:

<?

        echo“Привет, мир”;

?>

Все конструкции, переменные и описание функций языка должны быть заключены в специальные теги. <? – открывающий тег, ?> - закрывающий тег. Указание тегов открытия и закрытия необходимо, т.к. интерпретатор языка не сможет найти начало и конец кода PHPи в окно броузера будет выдан код, а не результат его работы. Каждая строка должна заканчиваться точкой с запятой.

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

Пример:

<?

$1 = 2;// неверно

$; = 2;//неверно

$q1 = 2; //верно

$_q= 2; //верно

?>

Хотя переменная может начинаться со знака подчеркивания, не стоит использовать эту возможность, поскольку есть предопределенные переменные, которое так же начинаются со знака подчеркивания. Если вы не знаете всех предопределенных переменных, вы можете переопределить их значение, что приведет к ошибке.

В PHPне надо определять переменные, явно задавая их тип. Одна и та же переменная может сначала являться целым числом, а затем строкой!

Пример:

<?

$i = 2;

echo $i;

$i = “string”;

echo$i;

?>

Этот пример выведет в окно броузера сначала 2, потом строку string.

Типы в PHP:

Boolean– логический тип

Integer– целочисленный тип

Float, double  - числа с плавающей точкой.

String– строки.

Array– массивы.

Пример:

<?

$i = 2;//типinteger

$i = 2.5;//типfloat, double

$i = “строка”; //типstring

$i = true; // типbollean

$i= array();// тип массив

$i[2] = 5;// тип массив

?>

Строки.

Строка заключается в двойные или одинарные кавычки. Для подстановки переменной в строку нужно указать ее имя в строке.

Пример:

<?

$str = “Hello”;

echo “$str, world”;

?>

Стрка может быть рассмотрена, как массив, где нулевым элементом массива является первый символ строки. Над строками можно проводить операцию конкатенации (сложения) строк. Она осуществляется с помощью оператора – “.” – точка.

Пример:

<?

$str1 = “Hello, ”;

$str2 = “world”;

$str3 = $str1.$str2;

echo $str3;

?>

В окно броузера будет выведена строка Hello, world.

Массивы.

В PHPесть, как индексные массивы, так и ассоциативне. Массив может быть смешанным, т.е. часть массива индексируется по индексу часть по ключу.

Индексный массив – $array[0]  =  1, $array[1] = 2, …

Ассоциативный массив - $array[‘струнный’] = ‘гитара’, $array[‘клавишный’] =’пианино’…

Создание массива возможно с помощью функции array().

Пример:

<?

$array = array(‘a’,’b’,’c’);

?>

В этом примере создается массив с индексами, начиная с 0.

Пример:

<?

$array= array(‘a’=>’aaa’,’b’=>’bbb’,’c’=>’ccc’);

?>

В этом примере создается массив с ключами – a, b,c. В соответствии которым стоят значения – aaa, bbb, ccc.

Массив также можно создавать не используя функции array().

Пример:

<?

$array[‘a’] = ‘aaa’;

//или

$array[0] = 1;

?>

Элемент массива также может быть массивом.

Пример:

<?

$array[‘инструмент’] = array(‘струнный’=>’гитара’,’клавишный’=>’пианино’);

?>

Двумерные массивы вида $array[1][2] = 3 можно рассматривать, как массив вида

$array[1] = array(2=>3);

Управляющие структуры.

Условные операторы

if()

{

        Оператор – да

}

else

{

        Оператор – нет

}

 

Операторswitch.

Пример:

<?

$a = 2;

switch($a)

{

        case “1”: echo “аравно1”;break;

        case “2”: echo “аравно2”;break;

        default: echo“а ничему не равно”;

}

?>

Оператор switchиспользуется для избежания сложных конструкций if…else. Оператор break  используется для прерывания и выхода из конструкции. Оператор defaultприменяется, как то, что будет выполняться по чмолчанию.

Операторы цикла

Оператор while

while(условие)

{

Действие;

}

Оператор do…while

doдействие while(условие);

Оператор for

for(инициализация переменных;условие;действие после)

{

        Действие;

}

 

Бывает, что условие выполнения цикла не известно или же при проверки кукого – либо условия цикл необходимо прервать. Тогда используется оператор break, хотя это считается плохим тоном программирования.

Пример:

<?

for($i=0;;$i++)

{

if($i == 10)

{

        break;   

}

else

{

        Действия;

}

}

?>

В данном примере так жу использовался оператор сравнения – двойное равно. В языке PHPпринято сравнение с помощью тройного равно - ===, т.к. это сравнение дает более точный результат сравнения.

Если же надо приостановить выполнения действий в цикле и продолжить цикл, то используют операцию – continue.

В случае если скрипт нужно завершить до его логического конца, то можно воспользоваться оператором exit.

Операторforeach

foreach($array as $key=>$value)

{

        Действия;

}

Где $array- массив $key- ключ $value– значение по ключу.

Оператор foreachиспользуется обычно для удобной работы с ассоциативными массивами. Происходит перебор всего массива по ключам.

Пример:

<?

foreach($arrayas$k=>$v)

{

        echo“Ключ - $kзначение - $v”;

}

?>

Операторыinclude иrequire, include_once иrequire_once

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

require– включает файл в тело скрипта

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

Include– включает файл при каждом обращении к скрипту, т.е. если включаемый файл будет изменяться, то каждый раз будет включаться новый файл.

Include_once- отличается от require_onceтолько тем, что включает файл не до выполнения расчета, а каждый раз при обращении к нему.

Синтаксис  -  любой из вышеуказанных операторов “имя файла”.

 

Взаимодействие Web-сервера с другими программами. Скрипты CGI

CGI(Common Gateway Interface, общий шлюзовый интерфейс) относится к числу средств, без которых нельзя обойтись как при создании комплексных Web-узлов, так и при управлении ими. CGI обеспечивает возможность писать сценарии, которые позволяют разрабатывать управляемые пользователем интерактивные приложения.


CGI- компонент программного обеспечения Web-сервера, который может взаимодействовать с другими программами, работающими на этом сервере. С помощью CGI Web-сервер может вызвать внешнюю программу и передать в нее пользовательские данные (например, информацию о том, с какой хост-машины пользователь установил соединение, или данные, введенные пользователем в HTML-форму). Эта программа затем обрабатывает полученные данные, и сервер передает результаты ее работы в Web-6payзep.

CGI обеспечивает средства динамического создания Web-страниц на основе вводимой информации, вводимой пользователями. За счет этого расширяется диапазон возможностей World Wide Web. Пользователь, не будучи ограниченным рамками заранее написанных документов, может использовать CGI-сценарии для создания широкого круга приложений - от обзоров до средств поиска, от программного обеспечения сервисных шлюзов Internet до игр и викторин. CGI обеспечивает возможность организовать подсчет количества пользователей, обратившихся к документу, более того, каждому из них может быть предложено расписаться в электронной книге гостей. Кроме того, CGI позволяет предоставлять пользователям любого рода информацию, регистрировать замечания клиентов и давать на них ответы.

Вложения:
Скачать этот файл (klassifickacia_web.ppt)Классификация web ресурсов[Презентация]386 kB