бесплатно рефераты
 

Технологии программирования Web

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

средства для обработки исключительных ситуаций.

. Интерактивность

Java создавалась как средство, которое должно удовлетворить насущную

потребность в создании интерактивных сетевых программ. В Java реализовано

несколько интересных решений, позволяющих писать код, который выполняет

одновременно массу различных функций и не забывает при этом следить за тем,

что и когда должно произойти. В языке Java для решения проблемы

синхронизации процессов применен наиболее элегантный из всех когда-либо

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

интерактивные системы.

. Независимость от архитектуры ЭВМ

Вопрос о долговечности и переносимости кода важнее религиозных войн между

ПК и Макинтошами. Создатели Java наложили на язык и на среду времени

выполнения несколько жестких требований, которые на деле, а не на словах

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

любое время (где существует виртуальная Java-машина – броузеры на всех

платформах, OS/2, Netware).

. Интерпретация плюс высокая производительность

Необычайная способность Java исполнять свой код на любой из поддерживаемых

платформ достигается тем, что ее программы транслируются в некое

промежуточное представление, называемое байт-кодом (bytecode). Байт-код, в

свою очередь, может интерпретироваться в любой системе, в которой есть

среда времени выполнения Java. Большинство ранних систем, в которых

пытались обеспечить независимость от платформы, обладало огромным

недостатком — потерей производительности (Basic, Perl). Несмотря на то, что

в Java используется интерпретатор, байт-код легко переводится

непосредственно в “родные” машинные коды (Just In Time compilers) “на

лету”. При этом достигается очень высокая производительность (Symantec JIT

встроен в Netscape Navigator).

. Простота изучения

Язык Java, хотя и более сложный чем языки командных интерпретаторов, все же

неизмеримо проще для изучения, чем другие другие языки программирования,

например C++. Черты языка станут казаться вам естественным путем для

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

программирования. Поскольку объектная модель в Java одновременно проста и

выразительна, вы скоро освоитесь с объектно-ориентированным стилем создания

программ.

. Богатая объектная среда

Среда Java — это нечто гораздо большее, чем просто язык программирования. В

нее встроен набор ключевых классов, содержащих основные абстракции

реального мира, с которым придется иметь дело вашим программам. Основой

популярности Java являются встроенные классы-абстракции, сделавшие его

языком, действительно независимым от платформы. Библиотеки, подобные

MFC/COM, OWL, VCL, NeXTStep, Motif и OpenDoc прекрасно работают на своих

платформах, однако сегодня главной платформой становится Internet.

VRML

Язык VRML (Virtual Realty Modelling Languagy) предназначен для описания

трехмерных изображений и оперирует объектами, описывающими геометрические

фигуры и их расположение в пространстве.

Vrml-файл представляет собой обычный текстовый файл, интерпретируемый

браузером. Поскольку большинство браузеров не имеет встроенных средств

поддержки vrml, для просмотра Vrml-документов необходимо подключить

вспомогательную программу - Vrml-браузер, например, Live3D или Cosmo

Player.

Как и в случае с HTML, один и тот же vrml-документ может выглядеть по-

разному в разных VRML-браузерах. Кроме того, многие разработчики VRML-

браузеров добавляют нестандартные расширения VRML в свой браузер.

Существует немало VRML-редакторов, делающих удобней и быстрее процесс

создания Vrml-документов, однако несложные модели, рассматриваемые в данной

статье, можно создать при помощи самого простого текстового редактора.

Языки программирования серверов

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

данных и другим ресурсам, хранимым на сервере, а также к централизованным

ресурсам сервера, таким как электронная почта или факс-служба.

Функционирование в непротиворечивой и управляемой среде - еще одно

преимущество выполнения сценариев на сервере. Ваш код выполняется только на

одной версии единственного сервера, а не на множестве версий множества

броузеров.

Однако и для использования сценариев на стороне сервера имеется три

основных препятствия.

• Запуск скриптов на сервере зачастую требует получения специальных

прав от Web-мастера или системного администратора.

• Для взаимодействия со сценариями, выполняющимися на сервере,

пользователь должен щелкнуть мышкой на ссылке или на кнопке на

странице, а затем ожидать, когда сервер выполнит сценарий и перешлет

ответ. Взаимодействие с использованием динамического HTML происходит

быстрее.

• Для тестирования сценариев для сервера требуется иметь собственный

WWW-сервер, предпочтительно того же типа, что и промышленный вариант.

Программирование на стороне сервера в настоящее время является необходимым

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

a) получать и обрабатывать на сервере данные, введенные пользователем при

помощи формы;

b) динамически создавать web-документы, не зависящие ни от платформы, ни

от браузера клиента;

c) обеспечивать динамический доступ к данным, находящимся на сервере, в

частности, к серверным базам данных (при таком способе доступа HTML-

документ автоматически изменится, как только изменятся хранящиеся на

сервере данные);

d) использовать серверные компоненты, предназначенные для решения типовых

задач (таких, например, как циклическая смена рекламных баннеров и

др.);

e) осуществлять аутентификацию пользователя;

f) получать информацию о браузере клиента;

g) создавать и читать ключики на стороне клиента;

CGI: Технология «клиент-сервер»

Большое количество World Wide Web приложений основано на использовании

внешних программ, управляемых Web сервером. Использование данных программ

позволяет строить Web приложения с динамически обновляемой информацией,

хранящейся в базах данных или генерирующейся в зависимости от бизнес-правил

решаемых задач. Для связи между Web сервером и вызываемыми программами

широко используется Common Gateway Interface (CGI), имеющий реализации как

для Windows-ориентированных программ, так и для приложений, функционирующих

в среде Unix.

CGI - Common Gateway Interface является стандартом интерфейса (связи)

внешней прикладной программы с информационным сервером типа HTTP, Web

сервер.

Обычно гипертекстовые документы, извлекаемые из WWW серверов, содержат

статические данные. С помощью CGI можно создавать CGI-программы, называемые

шлюзами, которые во взаимодействии с такими прикладными системами, как

система управления базой данных, электронная таблица, деловая графика и

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

Т.о., программа-шлюз запускается WWW сервером в реальном масштабе времени.

WWW сервер обеспечивает передачу запроса пользователя шлюзу, а она в свою

очередь, используя средства прикладной системы, возвращает результат

обработки запроса на экран пользователя. Программа-шлюз может быть

закодирована на языках C/C++, Fortran, Perl, TCL, Unix Schell, Visual

Basic, Apple Script. Как выполнимый модуль, она обычно записывается в

поддиректорий с именем cgi-bin WWW сервера.

Интернет вообще и WWW в частности работает по технологии «клиент-сервер»,

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

серверную части. Также между ними разделены и функциональные обязанности.

Важным для понимания моментом является то, что клиент не знает и не обязан

знать принципы работы и реализацию внутренних алгоритмов сервера, а сервер

не вмешивается в дела клиента. Для взаимодействия этих частей разработан

специальный протокол (в частном случае — протокол HTTP), и все

взаимодействие между клиентом и сервером осуществляется исключительно в

рамках данного протокола. Вашему броузеру все равно, какое программное

обеспечение стоит на сервере, какая там операционная система, где физически

лежат запрашиваемые документы на сервере (и лежат ли вообще, ведь они могут

и генерироваться на лету специальными программами). Сервер тоже не

вмешивается в дела вашего броузера, серверу абсолютно все равно, что

сделает клиент с переданной информацией, как он ее будет отображать,

сохранит на диске или проигнорирует — серверу до этого дела нет.

Взаимодействие клиента и сервера происходит по принципу «запрос-ответ».

Клиент посылает запрос, сервер обрабатывает его и посылает ответ (рис. 1.1-

1):

Рассмотрим более детально все этапы соединения по протоколу HTTP:

1. Формирование запроса клиентом. (Броузер формирует запрос из URL,

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

2. Установка соединения с сервером. (Если установить соединение не

удается, то на этом HTTP-транзакция закончится и клиент выдаст

пользователю сообщение об ошибке.)

3. Посылка запроса и ожидание ответа от сервера. (Все, что требуется

от клиента, это чтобы запрос был в корректном формате.)

4. Сервер принимает запрос. (Об этом и следующем этапе клиенту ничего

не известно.)

5. Сервер обрабатывает запрос.

6. Генерация ответа.

7. Прием ответа клиентом.

8. Разрыв соединения.

9. Обработка данных клиентом. (Вывод или сохранение данных.)

Обычно под запросом к серверу понимается URL (это унифицированная форма

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

некоторые данные, чаще всего это данные форм (вспомните, как вы вводите

ключевое слово в поисковике). Формирование HTTP-запроса будет детально

рассмотрено в одном из следующих уроков.

При установке соединения с сервером сначала происходит трансляция

символьного доменного имени, такого, как www.siemens.com, в IP-адрес, а

затем осуществляется непосредственно создание TCP/IP-соединения с данным

IP. Когда данные HTTP-запроса посланы серверу, клиент просто ожидает, пока

не придет ответ.

Пока нет обращений от клиентов, сам HTTP-сервер просто «спит» в ожидании

запросов. Когда клиент устанавливает соединение, сервер «просыпается» и,

приняв данные запроса, приступает к их обработке. Что именно сервер делает

с запросом — известно только самому серверу. Единственный результат всех

хитрых манипуляций — это выдача ответа, которого и ожидает клиент.

После того как сервер выдал ответ, он разрывает соединение и вновь

«погружается в сон». Естественно отметить, что в случае возникновения

ошибки HTTP-транзакция может закончиться на любом из этих этапов.

Все девять этапов HTTP-соединения показаны на рис. 1.2.

Если документ не найден или если для доступа к нему у вас нет прав (доступ

к ресурсу может быть ограничен), то выдается код ошибки. А если все

нормально, то информация, содержащаяся в документе, включая сопутствующие

данные о его типе, выдается в виде ответа.

Схема взаимодействия «клиент-сервер» для случая, когда URL указывает на CGI-

обработчик, показана на рис. 1.3.

Технология SSI

SSI (Server Side Includes, включения на стороне сервера) - это директивы,

вставляемые в HTML-код и служащие для передачи указаний серверу.

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

можно сделать непосредственно в текстовом редакторе, но если, например, в

несколько документов вставляется один и тот же фрагмент, к тому же часто

изменяемый, использовать SSI-вставки много удобнее.

Сервер интерпретирует SSI-директивы и выполняет соответствующие действия.

Использование SSI-вставок позволяет динамически формировать странички в

зависимости от различных параметров(например, типа браузера).

Преимущества SSI проявляются тем сильнее, чем больше по объему сайт,

имеющий повторяющиеся элементы кода на разных страничках.

Для того, чтобы сервер знал, что страничка не обычная, а содержит SSI-

директивы, используется специальное расширение: shtml или shtm. (Вообще-то,

конфигурация сервера может быть настроена и на другое расширение, но shtml

воспринимается всегда (если только на сервере не отключено применение SSI

вообще).

Для того, чтобы указать серверу, какой блок нужно вставить и в каком месте

странички, используется специальная форма записи в виде комментария:

|[an error occurred while processing this directive] |

При просмотре сформированного исходника HTML-файла пользователь не увидит

никаких признаков SSI, т.к. браузер получает уже готовый HTML-код.

Первое преимущество SSI с точки зрения дизайнера заключается в том, что при

таком подходе web-мастеру, занимающимуся поддержкой сайта, можно не бояться

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

использования SSI, и поддержка содержимого страничек становится гораздо

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

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

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

внешний вид сайта.

Не является ли SSI альтернативой CGI? Скорее, это дополнение (и очень

ценное) к CGI, предоставляющее web-программисту множество удобств.

ISAPI

Подобно CGI, спецификация ISAPI (Internet Server Application Programming

Interface) определяет правила взаимодействия между Web-сервером и

дополнительными программами. Для того чтобы понять, зачем понадобился

альтернативный подход к созданию программ, выполняющихся на сервере,

поговорим о преимуществах и недостатках стандарта CGI.

Несомненным преимуществом CGI является универсальность. CGI-сценарии могут

быть написаны на разных языках и выполняться на компьютерах с различной

архитектурой. Если при написании сценария вы учли все правила, то можете

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

взаимодействовать с любым Web-сервером. Простота CGI также способствует

широкому распространению этого стандарта.

Однако, наряду с преимуществами, CGI-сценарии обладают некоторыми

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

ресурсов. Каждый из запросов клиента, предполагающий вызов сценария,

порождает отдельный процесс на компьютере-сервере. Как известно, для

выполнения независимого процесса требуется гораздо больше ресурсов, чем для

работы потока в составе процесса.

Стремление повысить производительность и снизить затраты ресурсов привело к

созданию корпоративных стандартов. Наиболее известными из них являются

NSAPI и ISAPI.

Основное отличие ISAPI-программы от CGI-сценария состоит в том, что ISAPI-

программа представляет собой не исполняемый файл, а динамическую библиотеку

(DLL). Благодаря этому появилась возможность запускать программу не как

отдельный процесс, а как поток, принадлежащий Web-серверу. Для выполнения

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

процесса. Поток использует адресное пространство породившего его процесса и

работает намного быстрее, чем отдельный процесс.

По окончании выполнения процесс выгружается из памяти, а при поступлении

следующего запроса снова загружается с диска. Это также не способствует

эффективной работе CGI. При интенсивном поступлении запросов необходимость

постоянного обмена с диском создает дополнительную нагрузку на сервер. В

отличие от CGI-сценария, ISAPI-программа, окончив свою работу, как правило,

остается резидентной в памяти и используется для обработки последующих

запросов.

Однако иногда преимущества ISAPI-программ оборачиваются недостатками. (Это

не удивительно. Ведь если бы ISAPI-программы были свободны от недостатков,

они бы быстро вытеснили CGI-сценарии.)

Если за универсальность CGI-сценариев пришлось платить недостаточной

производительностью, то в качестве платы за высокую производительность

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

имеющихся в распоряжении разработчиков ISAPI-программ, значительно беднее,

чем у их коллег, создающих CGI-сценарии. По сути, тому, кто хочет быстро

написать достаточно большую ISAPI-программу, не остается иного выбора,

кроме C++.

Второй недостаток ISAPI гораздо серьезнее первого. Поскольку программа

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

адресное пространство сервера. Следовательно, ошибка ISAPI-программы может

не только вызвать ее аварийное завершение, но и вывести из строя сервер.

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

* Расширения. Функционально они мало чем отличаются от CGI-сценариев.

Подобно CGI-сценариям, расширения реализуют дополнительные возможности Web-

сервера, но строятся совершенно по-другому. Рассмотрению ISAPI-расширений

посвящена данная глава.

* Фильтры. Это особый класс программ. Если расширения дополняют

возможности Web-сервера, то фильтры изменяют его поведение. Принцип работы

и реализация ISAPI-фильтров будут рассмотрены в следующей главе.

ISAPI-расширение представляет собой динамическую библиотеку (DLL), которая

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

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

GetExtensionVersion() и HttpExtensionProcf).

Особенности выполнения ISAPI-расширений, а также основные отличия программ

данного типа от CGI-сценариев проще всего выяснить, рассматривая процедуру

вызова расширения, а также назначение указанных выше функций и параметров,

передаваемых при их вызове.

В отличие от расширения, которое вызывается лишь тогда, когда в запросе

клиента явно указан URL программы, ISAPI-фильтр получает управление при

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

при запуске Web-сервера и остается резидентной в течение всего времени

работы сервера.

Язык программирования Perl

Perl - интерпретируемый язык, приспособленный для обработки произвольных

текстовых файлов, извлечения из них необходимой информациии и выдачи

сообщений. Он также удобен для написания различных системных программ. Этот

язык прост в использовании, эффективен, но про него трудно сказать, что он

элегантен и компактен.

Perl был создан в 1986 году как инструмент для администрирования и

конфигурирования системных ресурсов сети, состоящей из Unix-компьютеров. Он

сочетает в себе лучшие черты C, shell, sed и awk, поэтому для тех, кто

знаком с ними, изучение Perl-а не представляет особого труда. Cинтаксис

выражений Perl-а близок к синтаксису C. В отличие от большинства утилит ОС

UNIX Perl не ставит ограничений на объем обрабатываемых данных и если

хватает ресурсов, то весь файл обрабатывается как одна строка. Рекурсия

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

текстовых файлов, он может обрабатывать так же двоичные данные и создавать

.dbm файлы, подобные ассоциативным массивам. Perl позволяет использовать

Страницы: 1, 2, 3, 4, 5


ИНТЕРЕСНОЕ



© 2009 Все права защищены.