РУБРИКИ

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

   РЕКЛАМА

Главная

Зоология

Инвестиции

Информатика

Искусство и культура

Исторические личности

История

Кибернетика

Коммуникации и связь

Косметология

Криптология

Кулинария

Культурология

Логика

Логистика

Банковское дело

Безопасность жизнедеятельности

Бизнес-план

Биология

Бухучет управленчучет

Водоснабжение водоотведение

Военная кафедра

География экономическая география

Геодезия

Геология

Животные

Жилищное право

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

Здоровье

Земельное право

Иностранные языки лингвистика

ПОДПИСКА

Рассылка на E-mail

ПОИСК

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

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

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

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 позволяет использовать

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

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

Язык Perl был создан для повышения эффективности обработки текстовых

документов. Он ориентирован на обработку строк. В настоящее время язык

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

WWW-сервера. Существующие пакеты расширения обеспечивают доступ к SQL-

серверам непосредственно из Perl-программы. Это позволяет использовать его

для решения всех задач, возникающих при обеспечении WWW-доступа к базам

данных. Perl эффективен также при обработке произвольных структур данных:

существующих отчетов, списков, карточек в электронном виде.

Хотя CGI-приложения можно писать практически на любом языке, Perl и CGI-

программирование стали синонимами для многих программистов. Как сказал

Хасан Шрейдер (Hassan Shroeder), первый вебмастер Sun, «Perl - это артерия

Интернета». Perl - самый широко используемый язык для CGI-программирования,

и для этого есть много веских причин:

• Perl легко выучить: его синтаксис напоминает другие языки (например

С), потому что он «многое прощает», - при ошибке выдается подробное

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

• Perl способствует быстрой разработке, так как это интерпретируемый

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

• Perl доступен на многих платформах с минимальными изменениями.

• Perl содержит очень мощные функции для обработки строк со встроенной

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

• Perl обрабатывает двоичные данные так же легко, как и текст.

• Perl не требует четкого разделения на типы: числа, строки и

логические выражения являются обычными скалярами.

• Perl взаимодействует с внешними приложениями очень просто и

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

• Для Perl есть много свободно доступных модулей от CPAN, начиная с

модулей для создания динамической графики до интерфейсов с Интернет-

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

информацией по CPAN обратитесь к приложению В.

Perl действительно очень быстрый: считывая исходный файл, он тут же

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

компиляция и исполнение в Perl не воспринимаются как отдельные шаги,

поскольку выполняются вместе: Perl запускается, читает исходный файл,

компилирует его, запускает и затем завершает работу. Этот процесс

повторяется каждый раз, когда запускается сценарий Perl, в том числе CGI-

сценарии. Поскольку Perl так эффективен, этот процесс происходит достаточно

быстро, чтобы обрабатывать все запросы не на самых загруженных серверах.

Однако следует обратить внимание, что в системах Windows это гораздо менее

эффективно из-за необходимости создания новых процессов.

PHP

РНР изобретен Расмусом Лердорфом в конце 1994 года. Первая версия выпущена

в 1995 году под именем «Инструментарий Персональных Домашних Страниц»,

затем она была переработана и названа PHP/FI Version 2 (FI — модуль

обработки данных для форм). Также была добавлена поддержка баз данных mSQL.

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

Статистика используемости РНР приблизительна, но, согласно исследованию,

проведенному Netcraft, в начале 2001 года РНР использовался на более чем 5

300 000 сайтах по всему миру. Для сравнения: в это время число IIS серверов

было примерно таким же (5 млн). Разработка интерпретатора РНР приняла форму

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

компания Zend.com. При этом РНР распространяется свободно: его последнюю

версию можно загрузить с сайта PHP.net. Модули РНР поставляются в комплекте

с сервером Apache, в комплектах систем Linux.

Изначально аббревиатура РНР означала Preprocessor of Home Pages —

препроцессор домашних страниц. Это язык внедряемых в HTML-страницы

сценариев, исполняемых на сервере. По большей части его синтаксис

заимствован из таких языков, как С, Perl, Java, и при этом добавлена масса

возможностей, которых этим языкам недостает. Проще говоря, синтаксис РНР —

это разумная альтернатива и строгости С, и «беспредельности» Perl.

РНР наделен практически полным набором функциональности, о которой (до

появления РНР) мог только мечтать web-программист. Его цель — позволить

максимально быстро создавать динамически генерируемые web-страницы. С

полным основанием можно заявить, что изучение и использование РНР будет

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

Основными конкурентами РНР являются технологии JSP (Java Server Pages и

Java Scriptlets), ASP (Active Server Pages), Perl, SSI (Server Side

Includes), Cold Fusion Server Pages.

Рассмотрим те недостатки, которые присущи указанным технологиям. JSP —

достаточно сложный для изучения и использования язык. ASP, основанный на

синтаксисе VBScript (Visual Basic), имеет всего несколько десятков

собственных функций и поэтому вынужден использовать СОМ-объекты; кроме

того, он ориентирован исключительно на работу под Windows. Perl — язык

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

лишь компоновать HTML-страницу из нескольких файлов. CF — коммерческий

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

Основные достоинства РНР:

. бесплатен; постоянно совершенствуется; работает на UNIX и Windows

платформах;

. допускает работу с большинством СУБД;

. имеет широкий набор функций (более 3 тыс.);

. допускает объектно-ориентированное программирование;

. способен использовать протоколы HTTP, FTP, ШАР, SNMP, NNTP, РОРЗ, net

sockets и другие;

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

и даже работать с файлами графики. Можно также запускать РНР-скрипты

как интерпретируемые файлы и компилировать исполняемые приложения (в

том числе с поддержкой графического интерфейса GTK).

Если вы обнаружите, что РНР не способен на что-то (или работает не так, как

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

РНР (написанный на С) желаемые изменения. РНР является программным

продуктом с открытым исходным кодом, и внесение в него улучшений и

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

приветствуется.

ASP и ASP.NET в составе Microsoft.NET

В конце 1997 г. Microsoft реализовала относительно простую среду периода

выполнения пля Web — Active Server Pages (ASP) как часть сервера Internet

Information Server (IIS), включенного в Windows NT 4 Option Pack. IIS

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

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

IIS, состоящих из статического HTML и кода сценариев. Когда пользователь

запрашивает ASP-страницу, IIS должен ее найти и активизировать ASP-

процессор. ASP-процессор должен прочитать страницу и один к одному

скопировать содержащиеся на ней HTML-элементы в выходную страницу. В нашем

примере атрибут style устанавливает голубой цвет текста. При этом также

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

HTML-строки, которые ASP-процессор должен скопировать в выходную страницу в

те места, где были элементы сценария. Результирующая страница, собранная из

статических HTML-элементов и HTML, динамически сгенерированного сценарием,

должна быть передана клиенту. Для простых задач ASP применять относительно

легко, что является признаком качества этой технологии.

The time is: on

Технология Microsoft ASP представляет собой совокупность серверных средств

для динамического создания Web-документов.

Активные серверные страницы (Active Server Pages, ASP), созданные Microsoft

для собственного веб-сервера, сейчас доступны для многих серверов. Сервер

ASP интегрирован в веб-сервер и не требует отдельного процесса. Он

позволяет программистам совмещать код и HTML-страницы вместо того, чтобы

писать отдельные программы. Для ASP существуют модули, позволяющие делать

то же самое, используя CGI. ASP поддерживают различные языки

программирования, самый популярный из которых Visual Basic, хотя JavaScript

также поддерживается. Кроме того, существует версия Perl от ActiveState,

которую можно использовать в Windows с ASP.

Microsoft .NET — готовая инфраструктура для решения общих проблем Интернет-

приложений. Это прикомпоновываемая среда периода выполнения, работающая в

ОС Windows 2000.

Сервис, обеспечиваемый .NET:

• .NET Framework — среда периода выполнения, облегчающая написание

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

модификацию этого кода. Написанные вами программы и компоненты выполняются

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

возможности, как автоматическое управление памятью (сборка мусора) и

упрощенный доступ ко всем службам ОС. Она добавляет массу вспомогательных

функций вроде простого доступа к Интернету и базам данных. Кроме того, она

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

использовании и в то же время более мощный и гибкий, чем СОМ. Развертывать

.NET Framework проще, так как она не требует настройки реестра. Она также

поддерживает на системном уровне стандартизированный механизм управления

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

.NET Framework мы обсудим в главе 2.

• ASP.NET (следующая версия Active Server Pages) — это новая среда,

работающая на Internet Information Server (US), заметно упрощающая

написание кода для создания HTML-страниц. ASP.NET предлагает новый, не

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

страниц, — .NET Web Forms — управляемую событиями программную модель

взаимодействия с элементами управления. Она делает программирование Web-

страниц аналогичным программированию форм Visual Basic. ASP.NET содержит

развитые средства управления сеансами и функции защиты. Она надежнее, и

производительность ее значительно выше в сравнении с ASP. Microsoft .NET

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

функции любому клиенту на любой машине с любой ОС.

По мере расширения Web и увеличения потребностей пользователей Web-

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

исполняющей среды: простоты программирования и качества выполнения. ASP.NET

и явилось таким усовершенствованием. ASP.NET похожа на оригинальную ASP и

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

Но внутренняя реализация ASP.NET полностью переделана с тем, чтобы

задействовать возможности .NET Framework.

ASP.NET отделяет HTML от алгоритмов, создавая фоновый код (code-behind).

Вместо того чтобы перемешивать HTML с кодом, код пишется в отдельном файле,

на который есть ссылка на ASP-странице. В результате такого разделения

Microsoft смогла усовершенствовать среду разработки и отладки Visual

Studio.NET, которая используется при разработке Web-приложений.

JAVA-servlets

Сервлеты - это высокопроизводительные платформо-независимые server-side-

пpиложения, написанные на Java и составляющие реальную конкуренцию таким

технологиям, как CGI, PHP3, Perl, и уж конечно ASP.

Java-сервлеты были созданы в Sun. Сервлеты похожи на CGI-сценарии тем, что

это код, создающий документы. Тем не менее, сервлеты, поскольку они

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

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

Интерфейс отличается от CGI. JavaServer Pages или JSP - это другая

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

наподобие ASP.

К преимуществам сервлетов можно отнести:

a) Исключительно высокая скорость работы.

Быстpодействие сервлетов объясняется тем, что они, во-пеpвых, пpедставляют

собою уже скомпилиpованный и оптимизиpованный код (а в случае с JIT-ом -

ещё и пpеобpазованный в машинный) и, во-втоpых, выполняются в единожды

загpуженной и инициализиpованной Java-машине.

Таким образом, экономятся ресурсы на запуск обработчика/паpсеpа скpипта,

необходимые, например, для Perl или PHP3 (в некоторых ОС, в частности, в

OS/2 - это очень серьезная экономия), и ресурсы (как память, так и время),

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

необходимо для тех же Perl, PHP, REXX).

Реально обе этих проблемы сразу не решаются, практически, нигде. Hаибольший

эффект даёт, пожалуй, внедрение транслятора скpиптового языка

непосредственно в веб-сеpвеp, например, пресловутые .asp-скpипты в серверах

от Microsoft, или модули mod_perl или mod_php для apache. (Последний

вариант - PHP3, внедренный в апач - является, наверное, самым

производительным из всего вышеперечисленного).

b) Переносимость.

В данном случае принцип "write once run everywhere" действует безотказно.

Сервлеты, написанные в соответствии со спецификацией от Sun и не

использующие какие-то особенности конкретного веб-сервера, работают безо

всякой переделки или перекомпиляции под любыми, порой весьма далёкими друг

от друга платформами, будь то Solaris, FreeBSD или OS/2. В связи с этим

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

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

целевой платформе.

c) Работа с базами данных.

Работа с реляционными СУБД из Java унифицирована (для этого существует

специальный пакет java.sql), удобна и отвязана от специфичных для

конкретной СУБД тонкостей. Всё, что Вам нужно - это найти для своей СУБД

JDBC-дpайвеpы (а они сейчас существуют практически для всех совpеменных баз

данных, зачастую даже по нескольку pазновидностей), и далее можно

пользоваться совеpшенно стандаpтными механизмами.

А при переходе на другую СУБД, например, c MySQL на Oracle, достаточно

будет просто добавить в CLASSPATH новый драйвер и поменять URL для

подключения к другой базе. Ни одного изменения в коде

d) Перспективность, современность технологий.

Конечно, есть у этой технологии и недостатки. Как технические: например,

высокие требования к системным ресурсам - в основном, к памяти (под OS/2,

например, запущенная Java-машина занимает 15-20 мегабайт оперативной

памяти) или необходимсть в качественной устойчивой реализации Java для

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

квалификации как у разработчиков, так и, зачастую, у тех, кто принимает

решения, их устоявшиеся предубеждения и многое другое...

Технология pаботы сеpвлет-сеpвеpа.

Итак, как же работают сервлеты. Рассмотрим это на примере модуля JServ к

веб-серверу apache.

В момент старта сервера вместе с ним стартует и ява-машина с так называемым

servlet-wrapper'ом или средой, в которой в дальнейшем и предстоит

исполняться сервлетам. Строго говоря, JServ - это и есть та самая среда. Он

целиком написан на Java и занимается непосредственно загрузкой и

исполнением сервлетов, следуя спецификации Sun, а также обменом данными с

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

специальный модуль mod_jserv (его необходимо добавить при компиляции и

сборке apache, или подключить в виде внешнего модуля).

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

URL или каталог (обычно это что-нибудь вроде /servlets/), apache с помощью

модуля mod_jserv передает этот запрос JServ'у, который определяет, какой

сервлет должен этот запрос обработать, загружает этот сервлет (если он ещё

не был загружен) и затем возвращает веб-серверу тот текст или поток данных,

который был сформирован в результате работы сервлета.

Изначально сервер "пуст" - при его старте сервлеты обычно не загружаются

(хотя есть возможность принудительно инициализировать нужные сервлеты при

старте сервера). При появлении запроса нужный сервлет ищется в списке уже

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

этого он остается постоянно загруженным в Java-машине (и

предкомпилированным, если Java-машина содержит JIT) и при последующих

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

Преимущества такой идеологии очевидны. Функционально это аналогично вызову

простой подпрограммы внутри обычного сервера и проиходит очень быстро и

эффективно. Кроме того, заметный выигрыш дают такие вещи, как единожды

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

поддержка множественных клиентских сессий, ведущаяся самим сеpвеpом (а не

сеpвлетами, pазpаботчики котоpых в значительной степени избавлены от

изобpетания велосипедов). Например, можно установить одно единственное

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

немалая экономия, учитывая то, что из тех же скриптов на perl или php

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

сессии и т.п.

Конечно же, существует возможность принудительной выгрузки отдельных

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

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

словами, при обновлении того или иного сервлета нет необходимости

перезагружать весь веб-сервер или JServ, достаточно просто положить новую

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

следующем запросе (естественно, при этом будет сначала произведено

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

метода, а затем загрузка и инициализация новой).

Пакет Cold Fusion от Macromedia

Пакет предназначен для использования под ОС Windows и позволяет обращаться

к различным базам данных, поддерживающим интерфейс ODBC через WWW-

интерфейсы. Пакет имеет коммерческий статус, его "evaluation copy" является

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

конструкции языка DBML - расширения языка HTML, дополненного средствами

доступа к БД через ODBC. Документы на языке DBML обрабатываются на

серверной части, в результате чего создается HTML-документ.

Пакет может эффективно использоваться в качестве обработчика запросов WWW к

исходным базам данных или информационному хранилищу.

ColdFusion от Macromedia в большей степени чем РНР различает страницы с

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

вызывающие функции ColdFusion. В ColdFusion доступны несколько стандартных

функций, и разработчики могут создавать собственные функции как расширения.

ColdFusion был первоначально написан для Windows, но теперь доступны версии

и для Unix. Интерпретатор ColdFusion встроен в веб-сервер.

Технология ActiveX

ActiveX - технология Microsoft, предназначенная для написания сетевых

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

значительно облегчающих процесс кодирования. Если раньше при написании

программ использовались механизмы OLE (OLE Automation, OLE Documents, OLE

Controls,...), основанные на компонентной объектной модели (COM - Component

Object Model), то теперь библиотеки OLE переписаны так, чтобы обеспечивать

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

образом, теперь при написании программ используется DCOM (Distributed

Component Object Model) - распределенная компонентная объектная модель, а

реализуют ее библиотеки ActiveX, которые по объему оказались гораздо

меньше, чем библиотеки OLE, а по скорости - быстрее. Сохранилась и

совместимость - любой программный компонент OLE будет работать с

библиотеками ActiveX.

Понятие СОМ

Все технологии OLE и ActiveX, построены на основании, обеспеченном СОМ.

Итак, что же такое СОМ? Чтобы ответить на этот вопрос, зададимся сначала

другим: "Каким образом одна часть программного обеспечения должна получать

доступ к сервисам, предоставляемым другой частью? " На сегодняшний день

ответ зависит от того, что представляют собой эти части:

. Приложения, например, скомпонованные с библиотекой, могут

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

. Приложение также может использовать сервисы другого —

являющегося совершенно отдельным процессом. В этом случае два

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

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

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

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

отвечать на них).

. Еще пример — приложение, использующее сервисы операционной

системы. Здесь приложение обычно выполняет системные вызовы,

обрабатываемые операционной системой.

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

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

которой осуществляется по сети. Получить доступ к таким сервисам

можно множеством способов, таких как обмен сообщениями с

удаленным приложением или вызовы удаленных процедур.

В принципе проблема одна: одна часть программного обеспечения должен

получить доступ к сервисам, предоставляемым другой частью. Но в каждом

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

передача сообщения средствами связи между процессами, системные вызовы

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

вызовы функций) или какая-то разновидность сетевых коммуникаций. Зачем все

это? Не проще ли определить один общий способ доступа ко всем видам

программных сервисов независимо от способа их реализации?

Этим и занимается СОМ - она определяет стандартный механизм, с помощью

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

другой и который работает во всех описанных выше случаях. Общая архитектура

сервисов в библиотеках, приложениях, системном и сетевом программном

обеспечении позволяет СОМ изменить подход к созданию программ.

В начале 1996 года Microsoft ввела в оборот новый термин — ActiveX.

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

индустрии является Internet, именно здесь наиболее естественно могут найти

свое место программы, написанные с использованием технологии ActiveX. Не

случайно в последнее время понятия ActiveX и Internet часто встречаются

рядом. В то же время технология ActiveX имеет значительно более

универсальную область использования.

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

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

написаны. С помощью ActiveX можно "оживить" страницы Web эффектами

мультимедиа, интерактивными объектами или сложными приложениями. ActiveX

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

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

распределенную систему.

ActiveX включает в себя клиентскую и серверную части, а также библиотеки

для разработчика:

. программные элементы ActiveX - компоненты, работающие на компьютере-

клиенте, но загружаемые в первый раз с сервреа Web. С их помощью

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

без запуска дополнительных программ. Более того, эти программные

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

популярных языках программирования, включая Java (Visual J++), Visual

Basic, Visual C++.

. Active Scripting поддерживает любой популярный макроязык, включая

Visual Basic Script и JScript (реализация компанией Microsoft языка

сценариев JavaScript). Макроязыки могут использоваться для

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

ActiveX или Java, обеспечивая их взаимодействие между собой.

. Документы ActiveX позволяют открыть и обрабатывать в окне Microsoft

Internet Explorer документ любого формата (например, файл Microsoft

Excel или Word).

. Виртуальная машина Java позволяет любой программе просмотра Internet,

поддерживающей технологию ActiveX (например, Internet Explorer 3.0)

выполнять программные компоненты Java и обеспечивать их

взаимодействие с программными компонентами ActiveX.

. ActiveX Server Framework обеспечивает серверные функции ActiveX,

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

другие.

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

программирования Microsoft и других фирм для создания компонентов

ActivX. К их числу относятся Visual Basic, Visual C++, Macromedia

Shockwave, Adobe Photoshop, Borland Delphi, средства программирования

Sybase и другие.

Основные преимущества использования технологии ActiveX:

. Быстрое написание программного кода. Программирование сетевых

взаимодействий становится очень похожим на программирование для

отдельного компьютера.

. Открытость и мобильность. Спецификации технологии недавно были

переданы в Open Group как основа открытого стандарта. Кроме того,

Microsoft совместно с компаниями Metrowerks и Bristol заканчивает

реализацию технологий ActiveX для платформ Macintosh и UNIX.

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

разработки. Программные элементы ActiveX могут быть созданы с помощью

Visual Basic, Visual C++, Borland Delphi, Borland C++, любых средств

разработки на Java.

. Большое количество уже существующих программных элементов ActiveX,

которые бесплатно могут применяться на серверах Web и в приложениях

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

компонент OLE совместим с технологиями ActiveX и может применяться без

модификаций в сетевых приложениях.

. Стандартность. Технология ActiveX основана на широко используемых

стандартах Internet (TCP/IP, HTML, Java) с одной стороны и стандартах,

введенных в свое время Microsoft и необходимых для сохранения

совместимости (COM, OLE).

Клиентская технология ActiveX (Active Desktop)

ActiveX реализуется на машине-клиенте с помощью библиотек, поставляемых

вместе с Internet Explorer 3.0. В дальнейшем эти библиотеки будут

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

этих библиотек на клиенте следует ожидать после выхода NetShow, продукта,

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

[pic]

Программные компоненты ActiveX могут быть установлены автоматически на

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

код, подходящий для конкретной платформы клиента, будь то Macintosh,

Windows или Unix. Разработчик Web-страниц может либо сам запрограммировать

элементы ActiveX, используя популярные языки программирования Visual C++,

Visual Basic или Java, либо использовать существующие.

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

взаимодействие различных элементов ActiveX, Java, других программ на

клиентском компьютере и различных частей самого Internet Explorer.

Например, программный элемент синхронизации может обновлять страницу Web

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

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

Visual Basic Scripting Edition, являющегося подмножеством Visual Basic, и

JScript. Кроме того, разработчик может написать интерпретатор собственного

языка сценариев и добавить его в систему.

С ActiveX Documents знаком каждый, кто работал с составными документами. С

помощью Internet Explorer можно работать, например, с таблицами Microsoft

Excel и файлами других офисных приложений. Это делает программу просмотра

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

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

документами любых приложений и даже запуск программ.

Серверная технология ActiveX (Active Server)

Серверная часть технологии ActiveX реализована с помощью Microsoft Internet

Information Server 3.0. С помощью ActiveX можно писать программы на языках

сценариев (сейчас это VBScript), выполняющиеся на сервере. Если раньше

разработчикам приходилось использовать такие средства, как Microsoft Visual

C++ для написания динамически загружаемых библиотек, использующих

специальные вызовы Internet Server API, то теперь возможно написание

приложений на языке сценариев. Это существенно упрощает разработку,

сокращает время написания программы и минимизирует затраты. Программы,

основанные на технологиях Active Server на порядок производительнее

программ, основанных на Common Gateway Interface (CGI). Это достигается

оптимизацией процессов ActiveX на сервере, учитывающей архитектуру Windows

NT.

С помощью языков сценариев на сервере можно осуществлять доступ к системам

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

механизм транзакций.

Поскольку подход к использованию технологий ActiveX на сервере

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

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

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

интерпретаторы серверных языков сценариев. Для этого требуется

предварительное приобретение лицензии у Open Group.

Поддержка состояния

HTTP - это протокол без сохранения состояния, он определяет, как веб-

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

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

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

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

которые мы рассмотрим в этой главе.

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

Ряд взаимодействий определенного пользователя с нашим сайтом - это сессия.

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

Для чего необходима поддержка состояния? Если вы уважаете приватность, то

отслеживание пользователей способствует этому. Хотя отслеживание

пользователей можно использовать в сомнительных целях, есть законные

ситуации, когда вы должны это использовать. Возьмем онлайн-магазин: чтобы

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

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

пользователю собственную корзину. В этом случае сбор отдельных элементов из

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

Строки запроса и дополнительная информация о пути

Можно добавить идентификатор в строку запроса или как дополнительную

информацию внутри URL-документа. Когда пользователи перемещаются по сайту,

CGI-приложение на лету генерирует документы, передавая идентификатор из

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

запрошенные каждым пользователем, и порядок, в котором они были запрошены.

Броузер посылает эту информацию нам через строку статуса.

Скрытые поля

Скрытые поля форм позволяют встраивать «невидимую» информацию в виде имя-

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

исходный код HTML-страницы. Как и обычные поля форм и значения, эта

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

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

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

как CGI.pm может сделать большую часть этой работы для нас. Броузер

посылает нам э

информацию в строке статуса или в теле сообщения, в зависимости

типа запроса (GET или POST соответственно).

Cookie на стороне клиента

Все современные броузеры поддерживают cookie на стороне клиент что

позволяет хранить информацию на машине клиента и перед ' вать ее обратно на

сервер при каждом запросе. Можно использовать эту технологию для хранения

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

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

в строке заголовка HTTP Cookie.

Преимущества и недостатки этих подходов отражены в таблице 11-1 Мы

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

останется неясным, вы сможете потом вернуться к ней. Обычно cookie на

стороне клиента - это самый мощный способ поддержки состояния, но он

требует что-то и от клиента. Другие технологии работают независимо от

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

отследить.

Таблица 11-1. Технологии, используемые для поддержки состояния

|Технология |Область |Надежность и |Требования к |

| |применения |производительность |клиенту |

|Строки |Может быть |Сложно достоверю |Не требует |

|запроса и |настроена для |разобрать все ссылки в|какого-либо |

|дополнитель|определенных |документе; приходится |особенного |

|ная |групп страниц или|значительно |поведения от |

|информация |веб-сайта |расплачиваться |клиента |

|о пути |целиком. Но |производительностью | |

| |информация о |при передаче | |

| |состоянии |статического | |

| |теряется, если |содержимого через | |

| |пользователь |CGI-сцена-рии | |

| |уходит с | | |

| |веб-сайта, а | | |

| |потом | | |

| |возвращается | | |

|Скрытые |Работает только |Легко реализуется; не |Не требует |

|поля |для нескольких |влияет на |какого-либо |

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

| | | |поведения от |

| | | |клиента |

|Cookie на |Работает всюду, |Легко реализуется; не |Требуется |

|стороне |даже если |влияет на |поддержка (и |

|клиента |пользователь |производительность |принятие) cookie |

| |уходит на другой | |клиентом |

| |сайт и потом | | |

| |возвращается | | |

Заключение

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

информации, растет с каждым новым пользователем сети. При этом задачей

специалистов в области информационных технологий обеспечить пользователей

полной и достоверной информацией путем простого и удобного для

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

В данной курсовой работе был рассмотрен широкий, однако далеко не полный

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

целей. Очевидно, что задача создания полномасштабного web-приложения уже

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

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

продолжает расширяться.

Таким образом можно положить, что будущее развитие Интернета во многом

определяется консолидацией усилий и слаженностью действий специалистов и

разработчиков, задействованных в данной отрасли.

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

1. Джейсон Мейнджер. Java: основы программирования :Пер. с англ. - К.:

Издательская группа BHV,1997.-320с.

2. Симкин Стив, Бартлет Нейл, Лесли Алекс. Программирование на Java.

Путеводитель :Пер. с англ. – К. НИПФ «ДиаСофт Лтд», 1996. 736 с.

3. Кристиансен Т., Торкингтон Н. Perl: Библиотека программиста :Пер. с

англ.- СПб.: Издательство «Питер», 2000. – 736с.: ил.

4. Холзнер Стивен. Perl: специальный справочник :Пер. с анг. – СПб.: Питер,

2000. – 496с.: ил.

5. Хейл, Бернард Ван. JDBC: Java и базы данных :Пер. с англ. М.,1999.-320с.

6. Эферган М. Java: справочник. – СПб.: Питер, 1998. -448с.: ил.

7. http://www.citforum.ru

8. http://www.xpoint.ru

9. http://www.by.iatp.org.ua

10. http://phpclub.unet.ru

11. http://www.webmasteram.ru

12. http://kek.ksu.ru

13. http://inftech.webservis.ru

14. http://dit.vov.ru

15. http://chip.ua

-----------------------

[pic]

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


© 2000
При полном или частичном использовании материалов
гиперссылка обязательна.