Macromedia Dreamweaver MX

Что такое серверное программирование

Действительно, что это такое и с чем его едят?

Зачем нужны серверные программы

Вы когда-нибудь посещали интернет-магазин? Например, популярнейший "Озон" (Http://www. ozon. ru). Помните, как там выполняется заказ товара?

Если не помните или вообще не знаете, что такое интернет-магазин, давай­те вспомним (или узнаем).

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

Что происходит при этом? Как обрабатываются введенные вами данные? Неужели самим Web-обозревателем?

Отнюдь. Эти данные обрабатываются на Web-cepeepe.

Интернет-магазин — просто один из примеров, пришедших в голову автору, являющемуся поклонником и постоянным клиентом вышеупомянутого "Озона". Точно так же работают серверы электронной почты, основанной на Web, поисковые машины, электронные доски объявлений, форумы, вообще, любые Web-сайты, принимающие от посетителя какие-то данные и обраба­тывающие их. Во всех этих случаях Web-обозреватель принимает от посети­теля данные и отправляет их Web-cepeepy, который обрабатывает их и вы­дает результат обработки в виде автоматически сформированной Web - страницы.

Как это происходит на деле? Сейчас мы это выясним. И первым делом от­ветим на вопрос...

Как Web-cepeep обрабатывает данные пользователя

Итак, каким же образом программа ¥еЬ-сервера обрабатывает данные, от­правленные ей пользователем?

Да никак. Web-cepeep не приспособлен их обрабатывать. Его задача: прием от Web-обозревателя запроса на файлы (Web-страницы, таблицы стилей, графические изображения, фильмы, звуки, архивы, исполняемые файлы и т. п.), поиск этих самых файлов на жестких дисках серверного ком­пьютера и отправка найденных файлов назад Web-обозревателю. Это его основная задача. Конечно, некоторые особо мощные серверы могут выпол­нять дополнительные действия над отправляемыми файлами перед собст­венно их отправкой (в частности, выполнять серверные директивы). Есть и программы-"многостаночники", выполняющие функции не только Web - сервера, но и сервера FTP, почты, новостей UseNet и бог знает чего еще. Но основная функция: простая выдача файлов по требованиям клиентов — и не более того.

Секрет в том, что данные посетителя обрабатываются не самим Web - сервером. Для этого применяются специальные программы, работающие вместе с Web-сервером на том же серверном компьютере. Они называются серверными программами, не имеют интерфейса пользователя и "общаются" только с Web-сервером, принимают от него введенные пользователем дан­ные и возвращают ему результат. Этим они коренным образом отличаются от клиентских программ, работающих непосредственно с пользователем. (К клиентским программам относится, в частности, ваш любимый Web- обозреватель.)

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

Вот тут-то и начинается самое интересное. Дело в том, что результат, воз­вращаемый серверной программой ¥еЬ-серверу, — это не что иное, как обычный HTML-код! Фактически серверная программа возвращает готовую Web-страницу, сформированную на основе данных, введенных посетителем. Такая страница называется динамической, в отличие от статических стра­ниц, написанных Web-дизайнером и сохраненных в файлах на дисках сер­верного компьютера. А уж эту динамическую страницу ¥еЬ-сервер и на­правляет клиенту в качестве ответа на введенные данные.

Серверные программы делятся на следующие четыре вида.

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

2. Расширения Web-cepeepa (приложения формата ISAPI, NSAPI, модули расширения Apache и т. п.). Новый способ, позволяющий встраивать серверные программы в сам ¥еЬ-сервер, делая их его составными частя­ми. Впервые предложен фирмой Microsoft для их сервера Microsoft Internet Information Server (интерфейс ISAPI) и разработчиками популяр­ного бесплатного Web-сервера Apache.

3. Активные серверные страницы (ASP, JSP и др.). Фактически это обычные статические Web-страницы, сохраненные в файлах, которые, кроме обычного HTML-кода, включают в себя команды, обрабатываемые либо самим Web-сервером, либо его расширением. Также новый способ, впер­вые предложенный Microsoft для того же Internet Information Server.

4. Серверные сценарии, написанные на интерпретируемом языке (Perl, Python, VBScript, JavaScript и др.). Обычные сценарии, работающие через интерфейс CGI или ISAPI на стороне сервера.

Теперь рассмотрим все это разнообразие подробнее.

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

К достоинствам CGI-программ можно отнести легкость создания (многие среды разработки программ поддерживают создание таких приложений, в частности популярнейший Borland Delphi, начиная с версии 3) и простоту отладки. Также, поскольку CGI-приложения представляют собой независи­мые программы, они выполняются отдельно от Web-сервера (как говорят программисты и системные администраторы, выполняются в другом адрес­ном пространстве). Это значит, что при сбое в CGI-программе завершается только она — сам ¥еЬ-сервер остается "на плаву". А недостаток у CGI - программ всего один: большой расход системных ресурсов, поскольку для обработки каждого набора данных запускается отдельная копия серверной программы. И если ¥еЬ-серверу поступит слишком много запросов на об­работку данных, серверный компьютер может и зависнуть.

Расширения Web-cepeepa — более новая разновидность серверных про­грамм. Они представляют собой обычные библиотеки DLL, в которых реа­лизована вся логика серверной программы. Такие библиотеки как бы встраиваются в программу Web-cepeepa и работают как ее неотъемлемая часть. Поскольку библиотеки DLL работают только в среде Windows, для того чтобы создавать расширения в иных операционных системах, были придуманы и другие форматы. В частности, модули расширения сервера Apache не являются библиотеками DLL.

Именно в виде библиотек DLL создаются расширения Web-серверов Internet Information Server фирмы Microsoft и Netscape Web Server фирмы Netscape. В первом случае расширения имеют формат ISAPI (Internet Server Application Programming Interface — интерфейс программирования приложе­ний интернет-сервера), а во втором — NSAPI (Netscape Server Application Programming Interface — интерфейс программирования приложений сервера Netscape). Формат модулей расширения Apache так и называется — модули Apache.

Достоинство у расширений Web-cepeepa одно: бережный расход системных ресурсов. Дело в том, что для обработки всех наборов данных пользователя запускается всего один экземпляр расширения, который отнимает сущест­венно меньше ресурсов, чем уйма запущенных CGI-программ. Однако рас­ширения труднее создавать и отлаживать, к тому же они не так безопасны, как CGI-программы. Поскольку они работают как часть ¥еЬ-сервера, лю­бая ошибка в расширении приведет к зависанию сервера.

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

Как уже говорилось, активные серверные страницы — это обычные Web - страницы, включающие в себя особые серверные сценарии, выполняемые са­мим Web-сервером или специальной серверной программой (CGI-при­ложением или расширением ¥еЬ-сервера). В частности, ASP (Active Server Pages — активные серверные страницы), поддерживаемые Microsoft Internet Information Server, и JSP (Java Server Pages — серверные страницы, напи­санные на JavaScript), поддерживаемые рядом других Web-серверов, работа­ют именно таким образом. Серверные страницы ASP пишутся на языках JavaScript и VBScript, a JSP — только на JavaScript.

Достоинства активных серверных страниц вы уже знаете: легкость и быст­рота написания и простота отладки. Кроме того, поскольку активные сер­верные страницы — это обычные Web-страницы с "вкраплениями" про­граммного кода, их написание легко освоят все, кто знаком с HTML. Недостаток: относительная медлительность и повышенные требования к сис­темным ресурсам.

Серверные сценарии подобны активным серверным страницам тем, что яв­ляются интерпретируемыми, однако представляют собой "чистый" про­граммный код, без HTML-''примесей". Интерпретатор практически всегда представляет собой CG I-программу, однако ничто не мешает разработать его в виде расширения ¥еЬ-сервера. Сценарии обычно пишутся на языке программирования Perl, специально предназначенном для обработки текста; также используются языки Python, JavaScript, VBScript и даже (как говорят) язык командных файлов MS-DOS. Фактически писать сценарии можно на любом языке программирования, для которого есть интерпретатор.

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

В табл. 15.1 приведены расширения файлов серверных программ.

Таблица 15.1. Расширения файлов серверных программ

Вид серверных программ

Подвид

Расширение

Св [-программы

-

Exe

Расширения УУеЬ-сервера

ISAPI и NSAPI

Dll

Модули Apache

Нет расширения

Активные серверные страницы

ASP

Asp

JSP

Jsp

Серверные сценарии

Язык Perl

Pl, cgi

JavaScript

Js, cgi

VBScript

Vbs, cgi

Другие языки

Cgi

Вот мы и рассмотрели, как ¥еЬ-сервер обрабатывает (точнее, не обрабаты­вает) данные пользователя. Теперь переместимся в начало цепочки и рас­смотрим, как ¥еЬ-обозреватель отправляет данные пользователя серверной программе.

Как :еЬ-обозреватель отправляет введенные данные

В начале этой главы мы говорили о том, что для сбора данных посетителя используются элементы управления, помещаемые на самих ¥еЬ-страницах. Это обычные элементы управления, знакомые вам по приложениям Ymdows: поля ввода, кнопки, списки, флажки и пр. Посетитель сайта вво­дит в них данные и нажимает особую кнопку, запускающую отправку дан­ных ¥еЬ-серверу, а значит, и серверной программе.

Элементы управления, предназначенные для ввода данных посетителя, по­мещаются в форму. Форма — это особый элемент страницы, выполняющий собственно кодирование данных и пересылку их ¥еЬ-серверу. (Можно ска­зать, что форма является родителем для элементов управления.) Сами же элементы управления только принимают данные от посетителя, но не коди­руют и не передают их.

Каждый элемент управления, находящийся в форме, должен иметь уни­кальное имя. Эти имена используются ¥еЬ-обозревателем для того, чтобы представить введенные в форму данные в удобочитаемом для серверной программы виде — в виде набора пар вида "имя элемента управления" = "значение". Например:

Namel = Ivan surname = Ivanovich name2 = Ivanov age = 30

Здесь мы рассмотрели идеальный случай, когда значения каждого элемента управления содержат только допустимые с точки зрения протокола HTTP символы: буквы латинского алфавита, цифры, тире, подчеркивания и неко­торые другие знаки. (Как вы помните, HTTP — протокол передачи файлов, используемый Web-сервером.) Если же вы передаете данные, содержащие недопустимые символы, скажем, пробелы или буквы русского алфавита, каждый такой символ будет представлен в виде шестнадцатеричного кода, которому предшествует знак процента, например, так (закодированные символы пробела выделены полужирным шрифтом):

Fullname=Ivan%20Ivanovich%20Ivanov

Age=30

Благодаря такому формату данных написание обрабатывающих их сервер­ных программ становится очень простым. В частности, язык Perl имеет встроенные средства расшифровки для этого формата.

Представленные в вышеуказанном виде данные впоследствии кодируются с использованием одного из предопределенных методов кодирования и от­правляются по Сети серверной программе. Всем этим фактически занима­ется форма (но не элементы управления).

Сам процесс отправки данных начинается после того, как пользователь на­жмет особую кнопку. Эта кнопка носит название Отправить (Submit — в англоязычных программах) и обязательно должна присутствовать в форме. Также в форме может присутствовать кнопка Сброс (Reset), обнуляющая введенные пользователем данные. Как правило, эти кнопки располагаются в самом низу формы.

Вы можете считать, что форма — это некое подобие обычного диалогового окна Windows-приложения, принимающего данные от пользователя, коди­рующего их определенным образом и отсылающего основному окну. (Диа­логовые окна Windows-приложений также обязательно имеют две кнопки: ОК и Отмена (Cancel).) Но если в случае обычного Windows-приложения программист должен явно задать, как будут шифроваться и пересылаться данные, в случае с Web-формой этого делать не нужно. Вам необходимо будет только задать три обязательных параметра:

□ интернет-адрес серверной программы, которая будет обрабатывать дан­ные формы;

□ метод кодирования отправляемых данных;

□ один из двух методов отправки данных.

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

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

Http://www. somesite. ru/bin/program. exe

Так — адрес расширения Web-сервера:

Http ://Www. somesite. ru/bin/extension. dll

Это — адрес активной серверной страницы:

Http://www. somesite. ru/asps/active_page. asp

А это — адрес программы-сценария, написанной на языке Perl:

Http://www. somesite. ru/scripts/perl_script. pi

Как видите, ничего сложного в этом нет. Серверная программа — обычный файл, помещенный на жестких дисках серверного компьютера, и ссылка на него также не представляет ничего особенного.

Для кодирования передаваемых по Сети данных обычно используются три наиболее популярных метода: application/x-www-form-urlencoded, multipart/form-data и (значительно реже) text/plain. Возможно примене­ние и других способов кодирования, но в абсолютном большинстве случаев используются три перечисленных. Вдобавок эти три метода кодирования поддерживаются большинством программ Web-обозревателей.

( Примечание )

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

В подавляющем большинстве случаев используется метод кодирования application/x-www-form-urlencoded. Кстати, именно он применяется по умолчанию, если метод кодирования не задан. Метод кодирования multipart/form-data используется, если вы собираетесь отправить на Web - сервер файлы; он обеспечивает соответствующее такому случаю преобразо­вание двоичных данных. Последний метод — text /plain — представляет данные в виде обычного текста, что может быть полезно, если данные фор­мы будут отправляться по электронной почте (иногда применяется и такой способ передачи данных).

Итак, с кодированием данных разобрались. Остается выяснить, как же эти данные передаются по каналам Сети.

Как данные передаются по Сети

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

Также вы знаете, что для пересылки по Сети Web-страниц и связанных с ними файлов (графических изображений, звуков, архивов и т. п.) исполь­зуется протокол HTTP. Он же применяется и для передачи данных, причем для этого предусмотрены два метода передачи данных. Оба способа широко используются в интернет-программировании и имеют свои преимущества и недостатки. Давайте их рассмотрим.

Первый способ носит название GET по значению соответствующего пара­метра формы. При его использовании данные передаются как часть интер­нет-адреса в НТТР-запросе.

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

Возьмем, например, такой набор данных, приведенный чуть выше:

Namel = Ivan surname = Ivanovich name2 = Ivanov age = 30

Теперь подготовим его для пересылки по методу GET (сами данные выде­лены полужирным шрифтом):

Http://www. somesite. ru/bin/program. exe? namel=IvanЈsumame2=IvanovichЈ

> name2=IvanovЈage=30

Как видите, пересылаемые по методу GET данные помещаются в самый конец интернет-адреса и отделяются от него вопросительным знаком. При ЭТОМ пары "имя" = "значение" отделяются друг от друга знаком "коммерче­ское и" ("&"). Все очень просто и наглядно.

Такая простота и наглядность представления данных — основное преиму­щество метода GET. Как говорится, все на виду. Также значительно упро­щается отладка Web-страниц: поскольку передаваемый ¥еЬ-серверу адрес отображается в строке адреса Web-обозревателя, вы всегда сможете увидеть, что именно было передано. (Однако, как вы понимаете, конфиденциальные данные таким методом не передашь — их увидят все, кто стоит за вашей спиной.)

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

Http://www. mysite. ru/bin/choose. exe? chapter=3

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

К несчастью, метод GET обладает огромным недостатком: с его помощью невозможно передавать большие объемы данных. Это происходит из-за ог­раничения, накладываемого стандартами на длину интернет-адреса: не бо­лее 256 символов. Вычтите отсюда длину собственно адреса серверной про­граммы — и вы получите максимально допустимый размер ваших данных. Второй недостаток метода GET — обратная сторона его достоинства. Дан­ные, пересылаемые им, открыты для всеобщего обозрения и могут быть легко прочитаны в строке адреса Web-обозревателя.

Метод GET стоит использовать, если пересылаемые серверной программе данные заведомо невелики и не являются секретными. В частности, он ис­пользуется для пересылки ключевых слов поисковым машинам, в сайтах, построенных на основе серверной программы (см. выше) и т. п. Если же вам нужно пересылать объемистые либо конфиденциальные данные, используй­те второй метод передачи, называемый POST.

Метод POST передает данные серверной программе все в том же НТТР - запросе, но уже не частью интернет-адреса, а в виде так называемых допол­нительных данных. Поскольку размер дополнительных данных не ограни­чен (по крайней мере, он может быть очень велик), вы можете передавать все, что угодно, в каких угодно количествах. В частности, именно этим спо­собом Web-серверу могут передаваться даже файлы.

Достоинства метода POST: отсутствие ограничения на объем передаваемых данных и "невидимость" их. Недостатки: сложность расшифровки данных и трудность отладки. Методом POST передаются, например, анкетные дан­ные, адреса покупателей в электронных магазинах, литературные произве­дения на сайты Http://Www.Stihi.Ru и Http://Www.Proza.Ru и т. п. В общем, то, что имеет большие объемы.

Как говорят, комитет WWWC намерен вообще со временем отказаться от метода GET и все данные передавать с помощью метода POST. Пока что метод GET просто объявлен не рекомендованным для использования во вновь создаваемых сайтах, реально же он еще поддерживается Web - обозревателями.

Вот мы и выяснили все о серверных программах. Ну, может, не все, но по­ка нам этого достаточно. Теперь поговорим о том, насколько полно все это поддерживается Dreamweaver MX.

Macromedia Dreamweaver MX

Заключение

"А напоследок я скажу..." — поется в старинном русском романсе. Что же мне сказать напоследок?.. Книга о Dreamweaver закончена. Я рассказал об этой программе все, что знал и что мог …

Страницы общего доступа

Страницы общего доступа предназначены для обычных посетителей сайта. Как правило, они создаются после административных страниц; в этом слу­чае вы можете использовать последние как образцы для создания "обычных" страниц. В самом …

Реализация выхода с сайта

Осталось реализовать выход с сайта — и работу над административными страницами можно считать законченной. Как вы помните, каждый посети­тель, вошедший на сайт с разграничением доступа, должен по окончании работы с …

Как с нами связаться:

Украина:
г.Александрия
тел./факс +38 05235  77193 Бухгалтерия

+38 050 457 13 30 — Рашид - продажи новинок
e-mail: msd@msd.com.ua
Схема проезда к производственному офису:
Схема проезда к МСД

Партнеры МСД

Контакты для заказов оборудования:

Внимание! На этом сайте большинство материалов - техническая литература в помощь предпринимателю. Так же большинство производственного оборудования сегодня не актуально. Уточнить можно по почте: Эл. почта: msd@msd.com.ua

+38 050 512 1194 Александр
- телефон для консультаций и заказов спец.оборудования, дробилок, уловителей, дражираторов, гереторных насосов и инженерных решений.