Файл: Средства создания программ выполняемых на стороне сервера.pdf
Добавлен: 23.04.2023
Просмотров: 123
Скачиваний: 1
Языковые средства создания веб-приложений делятся на две группы: клиентские и серверные[Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].
Клиентские языки необходимы со стороны пользователя, то есть они обрабатываются браузерами. Недостатком является то, что пользователь сам должен настраивать и обновлять свой браузер, и иногда пользователь настраивает браузер так, что он игнорирует обработку скриптов.
Скрипты – исполняемые процедуры, которые запускаются на выполнение со стороны сервера по запросу поступившему с конкретно определенной веб-приложения. Пользователь должен обновлять свой браузер, так как устаревшие браузеры не поддерживают тот или иной язык и версию языка, на котором писал разработчик. Языки программирования почти не меняются и самые известные и распространенные уже известны. Код клиентского скрипта может просмотреть каждый пользователь в любом браузере. Достоинство клиентского языка – обработка скриптов, на таком языке может выполняться без отправки документа на сервер. Программа сразу проверит код на наличие ошибок.
Самым распространенными клиентскими языками являются JavaScript, VBScript, AJAX, Microsoft Silverlight
Серверные языки необходимы для того чтобы пользователь мог получить результат своих изменений на сайте. Когда пользователь переходит на какую-нибудь Интернет-страницу, то этот переход вначале обрабатывается на сервере, то есть выполняются все необходимые запрограммированные действия, связанные с этой страницей, и только затем возвращается к пользователю итоговым файлом. Этот файл может быть написан на любом языке программирования предназначенный для веб-приложения: HTML, PHP, , Perl, SSI, XML, DHTML, XHTML. Необходимо учитывать, что все зависит от самого сервера и версии самого языка. Преимущество серверных языков заключается в то, что они поддерживают работу с системой управления базами данных (или СУБД) — сервером, где упорядоченно хранится информация, которая используется при необходимости. Популярными среди систем управления базами данных являются: Microsoft SQL Server; Microsoft SQL Server Express; mSQL; MySQL; Firebird; IBM DB2; IBM DB2 Express-C; Oracle; SQLite[Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].
Серверные языки не имеют недостатки, так как при правильном выборе ядра и при не перенасыщения различными утилитами веб-приложений, то работе на сайте ничего не угрожает. Но необходимо изначально правильно продумать структуры данных в БД, так как при имении структуры данных, нужно изменять и само приложение.
Глава 2 Средства создания программ, выполняемых на стороне сервера.
2.1 Технология CGI, заголовки ответов и запросов CGI
Общий шлюзовый интерфейс (CGI) — технология доступа к приложениям через веб-сервер. Отличия от сервера терминалов здесь в том, что пользовательский интерфейс предоставляется в виде веб-страниц. Запросы веб-клиентов, обращенные к программам, размещенным в выделенном каталоге (как правило cgi или cgi-bin) перенаправляются на их вход через стандартный поток ввода (stdin). Результаты выполнения в виде гипертекста приложение возвращает веб-серверу через stdout.
Web-приложение подобно обычному приложению за исключением того, что оно общается с пользователем через Web-броузер. Вначале Web-приложения использовались для: задач, специфичных для World Wide Web, — для заполнения форм, ведения сетевых дискуссий, покупок в сетевых магазинах. Однако мир World Wide Web не стоит на месте, и сейчас для многих традиционных приложений появились их Web-близнецы. Такие программы используются для назначения деловых встреч и установления контактов, для доступа к географическим картам, предоставляемым специальными серверами, для ведения электронной переписки[Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013].
Краткая история CGI
Одним из первых Web-серверов был NCSA HTTPD, название которого происходит от имени организации National Center for Supercomputing Applications (Национальный вычислительный центр}, где работали многие будущие создатели броузера Netscape. Одной из существенных черт программы NCSA HTTPD была технология CGI, реализованная в версии 1.0.
Поскольку NCSA HTTPD был одним из первых широко распространенных серверов (наряду с сервером CERN), технология CGI стала фактическим стандартом для создания Web-приложений. Поддержка CGI была осуществлена в сервере CERN в апреле 1994 года.
В те времена, когда NCSA выпустила сервер HTTPD, единственным способом создания Web-приложений было использование CGI. Поскольку эта технология оказалось простой и удачной, а исходные тексты программы NCSA HTTPD распространялись свободно, все последующие серверы делались с поддержкой CGI[Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].
В наши дни все популярные Web-серверы на платформах UNIX и Windows NT поддерживают CGI. Даже серверы производства Macintosh для связи с внешними программами тоже применяют технологию, сходную с CGI.
После того как NCSA разработала технологию CGI и внедрила ее в свой сервер, были разработаны и осуществлены многие альтернативные способы создания Web-приложений. Некоторые из них: Microsoft Active Server Pages, Allaire's Gold Fusion, PHP и др [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].
Что такое CGI-программа
CGI-программа выполняется на Web-сервере в ответ на запрос, сделанный броузером. Сервер в этом случае является как бы посредником между броузером и CGI-программой — он передает программе запрос броузера и возвращает броузеру информацию, выданную программой. Например, программа может получить от броузера название некоторого товара, посмотреть в таблице цену этого товара и вернуть полученную цену пользователю (броузеру). Или программа может принять от пользователя некоторый текст комментария и переслать его в виде почтового сообщения создателю Web-узла. Для написания такой программы можно использовать почти любой язык программирования — CGI определяет только стандарт интерфейса между Web-сервером и программой, которую вы пишете Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013] .
Проще перечислить, чего не делает CGl-программа— не взаимодействует с пользователем напрямую, не выводит информацию в виде меню или приглашений, не выводит на экран графические изображения, вообще ничего на экран не выводит. Хотя такая программа может генерировать бинарные данные, в которых фактически содержится некоторый рисунок, непосредственным выводом рисунка программа не занимается, она не создает окон и никак не использует средства графического интерфейса пользователя. Правильная CGI-программа должна удовлетворять следующим требованиям.
Запускаться из командной строки простым вводом ее имени. (Например, для выполнения Java-программы нужно запустить виртуальную машину Java, т.е. набрать в командной строке Java имя_программы, а это делает ее непригодной в качестве CGI-программы.)
Генерировать правильный заголовок типа данных, которые она возвращает (content type header) [Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013].
Программа может возвращать данные любого типа, например HTML-текст, рисунки в формате GIF, простой текст, документы Microsoft Word, аудиофайлы и пр. Заголовок типа возвращаемых данных сообщает броузеру о типе данных, для того чтобы обеспечить их правильную обработку. Позже мы обсудим создание такого заголовка.
В общих чертах, это все. Если Web-сервер может запустить программу на выполнение и если программа возвращает правильные данные, она может быть использована в качестве CGI-программы. Ниже мы подробнее обсудим, что такое правильные данные и какими еще свойствами должна обладать CGI-программа [Прохоренок Н.А. Разработка Web-сайтов с помощью Perl и MySQL./ Н.А. Прохоренок -СПб.: БХВ-Петербург,2009].
Как работает CGI-программа
Интерфейс программы, выполненной по технологии CGI, необычайно прост. Если вы знакомы с какой-нибудь операционной системой из семейства UNIX, вам будет совсем просто понять основные концепции этой технологии.
CGI — это стандарт, или набор правил, определяющих, как Web-сервер и внешняя по отношению к нему программа общаются между собой. Для иллюстрации того, как это все работает, приведем описание полного сеанса HTTP, чтобы вам было легче понять взаимосвязь явлений.
Сеанс HTTP (процесс передачи данных по протоколу HTTP) начинается с того, что клиент (обычно это Web-броузер) запрашивает некоторый ресурс у Web-сервера. Вы, конечно, помните, что всякий ресурс однозначно определяется своим URL (uniform resource locator). Когда речь идет о простых статических Web-страницах, ресурс представляет собой файл, a URL — положение этого файла на сервере [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].
Предположим, в нашем случае URL выглядит так: http://www.гсЗ.org/cgibook/index.html
Этот URL соответствует файлу с именем index.html, расположенному в подкаталоге cgibook каталога Web-сервера. Если каталог Web-сервера — /home/httpd/htdocs, тогда URL указывает на следующий файл:
/home/httpd/htdocs/cgibook/index.html.
Если Web-серверу удается найти и прочитать этот файл, содержимое файла передается запросившему его броузеру.
Если же URL указывает на CGI-программу, все обстоит немного сложнее. Давайте для примера рассмотрим следующий URL: http://www.rc3.org/cgi-bin/example.cgi
В данном случае запрошенным ресурсом является программа с именем example . cgi. Что именно делает эта программа — не важно, важно то, что когда сервер видит, что затребована программа, он запускает ее на выполнение и передает возвращенные ею данные броузеру [Прохоренок Н.А. Разработка Web-сайтов с помощью Perl и MySQL./ Н.А. Прохоренок -СПб.: БХВ-Петербург,2009].
Это процесс существенно отличается от обмена статическими HTML-файлами. Прежде всего, возникает гораздо больше поводов для ошибочной ситуации. Когда запрошена CGI-программа, сервер должен проверить следующее.
Существует ли запрошенный файл?
Действительно ли запрошенный файл является CGI-программой? (Это мы обсудим в следующей главе.)
Есть ли разрешение на выполнение этой программы?
Выполнилась ли программа без ошибок?
Соответствуют ли выходные данные программы запросу броузера? (Эту проверку мы рассмотрим чуть ниже.)
Только в случае положительного ответа на все эти вопросы сервер может успешно обслужить запрос. Если хотя бы на один из вопросов получен отрицательный ответ, возникает сообщение об ошибке или просто происходит не то, что ожидалось [Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013].
Как выполняется запрос
Как мы уже говорили выше, CGI-программа должна генерировать заголовок типа возвращаемых данных, для того чтобы броузер знал, что возвращает программа. Типы возвращаемых данных определяются стандартом MIME. Обычно стандарт MIME ассоциируется с почтовыми сообщениями, но в случае с типом данных работает та же самая система, что и с типом данных, вложенных в сообщение электронной почты. В табл. 1.1 перечислены типы данных, которые может возвращать CGI-программа [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].
Эта информация передается серверу, который вместе с другими заголовками передает ее броузеру. Протокол HTTP требует, чтобы заголовок отделялся от собственно содержания двумя символами перевода строки. Когда броузер встречает два последовательных символа перевода строки, он понимает, что заголовок закончился и начинается блок данных, которые должны быть обработаны. Таким образом, продолжая наш пример, если программа example, cgi возвращает HTML-текст, ее полный вывод должен выглядеть приблизительно так:
Content type: text/html
Необходимый заголовок отделен от собственно содержания двумя символами перевода строки. (Обратите внимание — два перевода строки выглядят как одна пустая строка!) Кроме того, сервер может включить в передаваемые данные другие заголовки и другие блоки данных. В этом случае полный ответ сервера броузеру может выглядеть так:
НТТР/1.1 200 ОК
Date: Sun, 30 Jul 2000 04:21:37 GMT
Server: Apache/1.3.3
Connection: close
Content type: text/html
Как данные передаются CGI-программе
Перед тем как передавать данные серверу, эти данные должны быть специальным образом обработаны (из них должны быть исключены некоторые символы, имеющие специальное значение для сервера). Чаще всего для этого применяется техника, называемая URL-кодированием. Эта техника состоит в маскировании символов, которые могут вызвать проблемы. Например, знак "?" применяется для того, чтобы отделить в URL имя файла от строки запроса. Если же строка запроса сама по себе содержит символ "?", то это может ввести сервер в заблуждение, поэтому такие специальные символы в данных, передаваемых из форм, должны быть закодированы [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].