Файл: Средства создания программ, выполняемых на стороне сервера..pdf
Добавлен: 29.02.2024
Просмотров: 32
Скачиваний: 0
Это процесс существенно отличается от обмена статическими HTML-файлами. Прежде всего, возникает гораздо больше поводов для ошибочной ситуации. Когда запрошена CGI-программа, сервер должен проверить следующее.
Существует ли запрошенный файл?
Действительно ли запрошенный файл является CGI-программой? (Это мы обсудим в следующей главе.)
Есть ли разрешение на выполнение этой программы?
Выполнилась ли программа без ошибок?
Соответствуют ли выходные данные программы запросу броузера? (Эту проверку мы рассмотрим чуть ниже.)
Только в случае положительного ответа на все эти вопросы сервер может успешно обслужить запрос. Если хотя бы на один из вопросов получен отрицательный ответ, возникает сообщение об ошибке или просто происходит не то, что ожидалось [3].
Как выполняется запрос
Как мы уже говорили выше, CGI-программа должна генерировать заголовок типа возвращаемых данных, для того чтобы броузер знал, что возвращает программа. Типы возвращаемых данных определяются стандартом MIME. Обычно стандарт MIME ассоциируется с почтовыми сообщениями, но в случае с типом данных работает та же самая система, что и с типом данных, вложенных в сообщение электронной почты. В табл. 1.1 перечислены типы данных, которые может возвращать CGI-программа [2].
Если программа возвращает текст HTML, она должна генерировать такой заголовок типа данных:
Content-type: text/html
Эта информация передается серверу, который вместе с другими заголовками передает ее броузеру. Протокол 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 имя файла от строки запроса. Если же строка запроса сама по себе содержит символ "?", то это может ввести сервер в заблуждение, поэтому такие специальные символы в данных, передаваемых из форм, должны быть закодированы.
Аналогичная проблема возникает со знаками пробела и знаками "+". Поскольку "+" используется вместо пробела в обычном потоке данных, в данных формы он также должен быть закодирован. Далее мы познакомимся с тем, как работает техника кодирования и полезными библиотеками, которые облегчают эту работу.
Доводы за и против CGI
Написание Web-приложений с помощью CGI имеет как достоинства, так и недостатки.
Сначала рассмотрим преимущества CGI-программирования. Самое главное преимущество состоит в том, что эта технология не зависит от платформы, другими словами, CGI-программы применимы в операционных системах UNIX и Windows NT и почти для любого Web-сервера. Написав программу, вы можете быть уверены, что ее можно перенести на любой компьютер и на любой сервер (конечно, с точностью до компиляции, но об этом — немного позже).
Кроме того, написание CGI-программы не требует от вас использования какого-то конкретного языка программирования; вам не придется изучать новый язык только для того, чтобы написать CGI-программу. А если вы выберете независимый от платформы язык интерпретирующего типа вроде Perl, вы просто можете переносить свои программы из среды UNIX в Windows NT и обратно. [Гаврилова И.В. Разработка приложений [9
Еще одно преимущество CGI-программирования — необычайно простой интерфейс. Вам не понадобятся никакие специальные библиотеки и функции API. Все взаимодействие CGI-программы с Web-сервером основано на обычных UNIX-концепциях стандартного ввода и вывода и переменных среды (stdin, stdout и environment variables).
Теперь упомянем о недостатках. Единственный серьезный недостаток дает о себе знать, когда вы пишете свою программу на языке интерпретирующего типа. При каждом запросе на выполнение CGI-программы приходится запускать интерпретатор, обрабатывать программу и затем ее выполнять.
Если для каждого запроса запускается интерпретатор Perl, это может сделать общение с вашим Web-приложением крайне неэффективным. Насколько серьезно это проявится в действительности, зависит от мощности вашего Web-cepвepa, от того, насколько часто выполняется запрос на CGI-программу, и от того, насколько программа быстро загружается в память.
Многие серверы приложений используют компактные, высокоэффективные CGI-программы в качестве шлюза между своими приложениями и Web-сервером.
Еще одним недостатком CGI-программирования является то, что оно не очень-то облегчает жизнь программиста по сравнению с другими средствами разработки Web-приложений. При создании CGI-программы вы должны не только заботиться о логике поведения своей программы, но и вставлять в нее фрагменты, генерирующие HTML-текст.
Многие современные средства разработки Web-приложений позволяют вставлять программные компоненты непосредственно в текст HTML-файлов, что значительно экономит силы и время программиста. Это особенно на руку тем, кто умеет писать HTML-тексты, но не умеет программировать. Однако такой подход не позволяет создавать хорошо структурированные программы с развитой логикой, поэтому выбор подходов в значительной степени зависит от вкусов и навыков разработчика. Здесь трудно рассуждать об абсолютных достоинствах и недостатках.
Языки CGI-программирования
Как я уже говорил выше, для создания CGI-программ может быть использован почти любой язык программирования. Если в приведенном ниже обсуждении вы не встретите упоминания некоторого языка, это не означает, что он не применим для этих целей.
Для CGI-программирования подходит любой язык, который позволяет соблюсти осаждавшиеся ранее требования. В этом разделе мы рассмотрим несколько популярных языков программирования, на которых чаше всего пишутся CGI-программы, но этот список ни в коем случае не следует считать исчерпывающим[Гаврилова И.В. Разработка приложений [2].
Язык Perl
Perl — это "дедушка" всех языков программирования, которые применяются в наши дни для написания CGI-программ. Он обладал набором приятных свойств еще в те времена, когда были созданы первые Web-серверы, поддерживающие технологию CGI. Не следует думать, что он дает программисту какие-то особые преимущества, просто это язык, применяемый для создания CGI-программ большинством разработчиков
Одним из главных факторов, обеспечивших популярность языка Perl, было наличие библиотек, облегчающих программирование Web-приложений. Сейчас в поставку интерпретатора Perl входит модуль CGI.pm, содержащий такую библиотеку. Одна из самых ценных функций, которые содержатся в этой библиотеке, — преобразование введенных в форму данных в структуру языка Perl. Кроме того, в этой библиотеке есть огромное количество функций для генерирования HTML-текста.
Еще одно важное достоинство языка Perl — это то, что в сети Internet есть много CGI-программ, которые вы можете загрузить и использовать для своих нужд. Очень часто оказывается проще переделать чужую программу, чем заново писать собственную.
Этот язык легко выучить, особенно если вы знакомы с основами программирования, кроме того, он фактически считается стандартом для разработки Web-приложений[6].
Что такое Perl?
Perl является интерпретируемым языком, созданным программистом Лари Уоллом (Larry Wall) для обработки больших текстов и файлов и расшифровывается, как Practical Extraction and Report Language (язык для практического извлечения данных и составления отчетов). С помощью Perl вы, например, можете создать скрипт, который открывает один или несколько файлов, обрабатывает информацию и записывает результаты
С изобретением World Wide Web, Perl оказался прекрасным средством для взаимодействия с web-серверами через Common Gateway Interface (CGI) - общий интерфейс взаимодействия. Команды Perl могут легко получить данные из формы HTML или другого источника и что-нибудь с ними сделать.
Как Perl обрабатывает данные из форм
Perl достаточно гибок для обработки введенных данных. Например, если пользователь вводит информацию в регистрационную форму скрипт Perl может обработать ее многими способами, такими как:
добавить их в текстовый файл,
ввести их в базу данных,
вставить их в электронное письмо,
добавить их в существующую web-страницу,
создать новую web-страницу,
отобразить их в окне браузера.
Некоторые из этих примеров рассматриваются в нашем уроке.
Как генерируются web-страницы "на лету"
Больше всего впечатляет то, что Perl может быть использован для создания web-страниц "на лету" в ответ на запрос или действие пользователя. Новая страница может быть
благодарностью за заполнение формы
страницей подтверждения с возможностью редактирования
запросом дополнительных данных
результатом запроса к базе данных или запроса поиска
Эта возможность обеспечивает истинную интерактивность вашего узла. Такие скрипты позволят web-серверу автоматически реагировать на определенный набор запросов пользователя, предоставляя данные в требуемом пользователем виде.
В чем различие между программой и скриптом?
Перед началом работы с Perl необходимо понять разницу между программой и скриптом. Оба из них используют набор инструкций для выполнения определенного задания, но программа скомпилирована в эффективный двоичный формат, что позволяет ей быстро выполняться на определенной платформе, в то время как скрипт хранится в оригинальном текстовом формате.
За счет того, что скрипты значительно короче программ, они выполняются тоже достаточно быстро.
За счет того, что скрипт не надо компилировать перед запуском он становится замечательным средством для быстрого создания и внесения исправлений в разработку интерактивных частей узла.
Альтернативы Perl
Существует несколько альтернатив использованию Perl:
С, Visual Basic - более традиционные компьютерные языки для обработки вводимых данных. Должны компилироваться под определенную платформу.
ActiveX - включение программных компонент, выполняющихся в браузере.
JavaScript, VBScript - обеспечивают некоторую интерактивность HTML страниц, которую HTML обеспечить не может.
Cold Fusion - сторонняя программа для связи форм с базами данных.
PHP/FI - еще одна сторонняя программа для связи форм с базами данных.
Несмотря на это Perl на сегодняшний день является наиболее простым и быстрым и в тоже время очень мощным средством придания интерактивности вашему узлу.
2.2 Технология ASP.NET.
В мире существует огромное количество самых разнообразных технологий, в значительной степени облегчающих жизнь, как опытному программисту, так и начинающему разработчику. Одной из наиболее популярных платформ для создания, запуска различных WEB-приложений и сервисов, является платформа Microsoft .NET Framework. Благодаря своей высокой производительности, поддержки большинства языков программирования и работа с самыми современными сервисами она по праву считается одной из лучших. .NET Framework можно разделить на три большие части:
- Общеязыковая среда управления;
- Большое множество унифицированных библиотек классов;
- Компонентная версия ASP – ASP.NET
ASP.NET — это технология, разработанная компанией Microsoft, направленная на создание мощных WEB-приложений и WEB-сервисов. Позволяет в значительной степени облегчить процесс создание динамических страниц HTML. Входит в состав платформы Microsoft .NET и получила свое развитие из более старой версии подобной технологии Microsoft.
Благодаря тому, что внешнее сходство между ASP.NET и более старой версией технологии ASP очень велико, то перейти на работу с более современной технологией разработчику относительно просто. Но, несмотря на внешнее сходство, внутреннее устройство новой технологии в значительной степени отличается от устаревшей ASP. В ней содержится огромное количество уже готовых элементов управления, пользуясь которыми можно быстро создавать самые разнообразные интернет-сайты. Помимо этого, можно прибегнуть к всевозможным сторонним сервисам, которые предоставляют другие сайты, не нагружая тем самым лишними функциями свой проект.
Проще говоря, возможности ASP.Net практически безграничны. Использование данной технологии будет полезно как для опытного разработчика, так и для молодого программиста. Существует огромное количество самых разнообразных курсов и сайтов, где происходит обучение работы с данной технологией. А если вы захотите узнать что-то конкретное, то справочная система MSDN, так же разработанная и созданная компанией Microsoft, в значительной степени облегчит ваши труды .