Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Технология CGI, заголовки ответов и запросов CGI 13

Содержание:

Введение

В настоящее время большим спросом пользуются веб-приложения, будь то визитная карточка фирмы или большой развернутый портал для крупной компании. Веб-приложения — это лучшее средство для предоставления потенциальным потребителям товаров, например, предоставление комплексной информации об образовательных услугах по средством образовательного портала, на котором расположена вся необходимая информацию о ВУЗе для абитуриента, работодателя, преподавателя. В сфере веб-приложений существуют большое количество средств разработки веб-приложений, которые подразделяются в зависимости от функционального назначения веб-приложений. Сейчас как никогда распространена разработка динамических веб-приложений.

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

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

Обзор литературы

Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 . — 241 c.

В учебном пособии описан процесс разработки приложений информационных систем. Большое внимание уделено архитектуре и технологиям разработки приложений: интерфейсам прикладного программирования, механизмам доступа к данным. Рассматриваются методики разработки пользовательского интерфейса. Изложение материала сопровождается большим количеством иллюстраций, предлагаются вопросы для самопроверки, а также практикум, в котором нашли своё воплощение теоретические вопросы.

Котеров, Д. В. PHP 7 / Д. В. Котеров, И. В. Симдянов. — СПб.: БХВ-Петербург, 2016. — 1088 с.: ил.

Рассмотрены основы языка PHP и его рабочего окружения в Windows, Mac OS X и Linux. Отражены радикальные изменения в языке PHP, произошедшие с момента вы- хода предыдущего издания: трейты, пространство имен, анонимные функции, за- мыкания, элементы строгой типизации, генераторы, встроенный Web-сервер и многие другие возможности. Приведено описание синтаксиса PHP 7, а также функций для работы с массивами, файлами, СУБД MySQL, memcached, регуляр- ными выражениями, графическими примитивами, почтой, сессиями и т. д. Особое внимание уделено рабочему окружению: сборке PHP-FPM и Web-сервера nginx, СУБД MySQL, протоколу SSH, виртуальным машинам VirtualBox и менеджеру виртуальных машин Vagrant. Рассмотрены современные подходы к Web-разра- ботке, система контроля версий Git, GitHub и другие бесплатные Git-хостинги, но- вая система распространения программных библиотек и их разработки, сборка Web-приложений менеджером Composer, стандарты PSR и другие инструменты и приемы работы современного PHP-сообщества.

Колисниченко Д. Н. К60 PHP и MySQL. Разработка веб-приложений./ Д. Н Колисниченко — 6-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2017. — 640 с.

Даны начала программирования на PHP: установка и настройка Apache, PHP и MySQL, а также кроссплатформенной сборки XAMPP, выбор редактора PHP-кода, синтаксис языка и самые полезные функции PHP. Рассмотрено создание собствен- ного движка сайта и ряда дополнительных модулей — фотогалереи, RSS-граббера, модуля для работы с MP3, сервиса reCAPTCHA, применение мощного шаблониза- тора Smarty и создание простейшего собственного шаблонизатора. Показано, как с помощью технологии Ajax добиться обновления данных на странице без ее пере- загрузки. В книге представлено два реальных проекта: универсальная система управления контентом, которая подойдет для построения типичного сайта, и одно- го из реальных проектов автора. В шестом издании рассмотрены нововведения версии PHP 7.х, особенности создания индикатора загрузки файла и разыменовывания массивов, приведены примеры устранения типичных SEO-ошибок, допускаемых программистами, опи- сана работа с PDO, Curl и MobileDetect, дано введение во фреймворк Symfony.

Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013.-736 е.: ил.

Книга адресована тем, кто хочет научиться профессион6ально программировать для Интернета. В сжатой форме на примерах показаны основные методы создания приложений для глобальной сети , начиная от простейших HTML- страничек и заканчивая основными принципами построения распределенных многоуровневых систем. Даются основы CGI-программирования с использованием языка PHP . Раcсмотрено создание полноценных распределенных СGI-приложений на основе языков общего назначения , таких как C++ или Java. Отдельно представлены возможности платформенно– независимых технологий Java и CORBA.

Магдануров,Г.И. ASP.NET MVC Framework / Г.И. Магдануров, В.А. Юнев. – СПб,: Петербург,2010.-320 с,6ил.-(Профессиональное программирование).

Рассмотрены основные принципы и возможности технологии APS.NET MVC Framework и показаны способы ее практического использования при разработке веб – приложений. Описаны им преимущества подхода разработки MVC и рассмотрена структура MVC- приложения. Приведено сравнение технологии Web Forms и MVC Framework и рассмотрены вопросы их совмещения.

Описаны модель и доступ к данным (технологии LINQ, Entity Framework и др.), контроллеры , представление и интерфейсов приложения , механизмы маршрутизации и Ajax-функциональность . Уделено внимание вопросам тестирование – веб-приложений .Рассмотрены особенности применения ASP.Net MVC 2 в Visual Studio 2010

Венц К. Программирование в ASP.NET AJAX/ К. Венц -Пер,с англ,-СПб:Символ-Плюс,2008.-512 с.,ил.

Книга Кристина Венца «Программирование в ASP.NET AJAX»- полное практическое введение в новую платформу Microsoft ASP.NET AJAX 1.0, которая предоставляет большие преимущества при разработке Ajax- приложений, схожие с теми которые даёт ASP.NET для разработки серверных сценариев. Вы узнаете, как с помощью технологий Ajax без особых затрат времени создавать профессионально выполненные динамические веб-страницы.

После общего обзора платформы и основ JavaScript и Ajax рассмотрена организация составляющих частей .NET, включая пакеты Extensions, Control Toolkit, Futures CTP и Microsoft AJAX Library.Также читателю предлагается исчерпывающая глава об элементе управления UpdatePanel, который позволяет организовать независимое обновления отдельных частей веб-страницы.

Прохоренок Н.А. Разработка Web-сайтов с помощью Perl и MySQL./ Н.А. Прохоренок -СПб.: БХВ-Петербург,2009.-560 с.: ил,-(Профессиональное программирование )

На практических примерах описана разработка динамических Web-сайтов с помощью Perl и MySQL. Рассмотрены основные конструкции языка Perl, даны примеры написания сценариев, наиболее часто используемых при разработке Web-сайтов. Уделено внимании способам работы с базами данных посредствам Perl , а также вопросам администрирования аз с помощью программы phpMyAdmin . Показано, как обрабатывать данные формы, отправлять письма с сайта, загружать файлы на сервер с помощью формы, создавать личный кабинет для пользователей , гостевую книгу, форму и др.

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

Объект исследования: средства создания программ выполняемых на стороне сервера..

Задача исследования - рассмотреть

  1. Клиент-серверное взаимодействие
  2. Языковые средства создания веб-приложений
  3. Технология CGI, заголовки ответов и запросов CGI
  4. Язык Perl
  5. Технология ASP.NET
  6. Язык PHP
  7. Технология Java Servlets
  8. Технология Java Server Pages

Глава 1 Основные понятия

В данной концепции участвуют две стороны: клиент и сервер. Здесь всё как в жизни: клиент – это заказчик той или иной услуги, а сервер – поставщик услуг. Клиент и сервер физически представляют собой программы, например, типичным клиентом является браузер. В качестве сервера можно привести следующие примеры: все HTTP сервера (в частности Apache), MySQL сервер, локальный веб-сервер AMPPS или готовая сборка Denwer (последних два примера – это не проста сервера, а целый набор серверов).

Рассмотрим основные понятия:

Клиент — достаточно широкое понятие, начиная от некоторого физического лица и заканчивая некоторой программой на компьютере (например, почтовый клиент). В нашем случае это компьютер, оснащённый специальным программным обеспечением, которое позволяет пользователю задать запрос к другой машине и получить ответ. Код, выполняемый на стороне клиента, чаще всего называют клиентским кодом. Он обеспечивает создание пользовательского интерфейса. Здесь, когда речь заходит о браузере, важную роль играет JavaScript и библиотеки расширения (в нашем случае jQuery) [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].

Сервер — это компьютер, оснащённый специальным программным обеспечением, которое позволяет решить задачи предоставления пользователю доступа к некоторым услугам и ресурсам, которыми владеет и управляет данный сервер. Код, выполняемый на стороне сервера, чаще всего называют серверным кодом (серверным сценарием). Он обеспечивает обработку данных. Здесь важную роль играют серверные языки программирования. Примером таких языков являются PHP и Python.

Хранилище данных – это система, предназначенная для хранения данных на сервере. Чаще всего под хранилищем данным подразумевают базу данных (например, MySQL). Также хранилищем может выступать файловая система сервера.

Клиент-серверное взаимодействие — это обмен данными между клиентом и сервером.

Браузер не единственное программное обеспечение, которое  позволяет осуществлять клиент-серверное взаимодействие. Почтовые клиенты, программы обмена мгновенными сообщениями, игровые многопользовательские приложения – пример программного обеспечения, которое осуществляет клиент-серверное взаимодействие[Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].

Клиент и сервер взаимодействую друг с другом в сети Интернет или в любой другой компьютерной сети при помощи различных сетевых протоколов, например, IP протокол, HTTP протокол, FTP и другие. Протоколов на самом деле очень много и каждый протокол позволяет оказывать ту или иную услугу. Например, при помощи HTTP протокола браузер отправляет специальное HTTP сообщение, в котором указано какую информацию и в каком виде он хочет получить от сервера, сервер, получив такое сообщение, отсылает браузеру в ответ похожее по структуре сообщение (или несколько сообщений), в котором содержится нужная информация, обычно это HTML документ.

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

Сейчас мы схематично описали, как взаимодействуют клиент и сервер на седьмом уровне модели OSI, но, на самом деле это взаимодействие происходит на всех семи уровнях. Когда клиент отправляет запрос, сообщение упаковывается, можно представить, что сообщение заворачивается в семь оберток (хотя их может быть намного больше или же меньше), а когда сообщение получает сервер, он начинает эти обертки разворачивать.

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

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

Принципы взаимодействия для таких приложений во многом похожи. Схематически его можно описать следующим образом (Рис. 4.1)

https://lh6.googleusercontent.com/SuJ4_49KEjPT3hkJopHngWopsXCrJckhAGJ_8bpU9vc=w479-h352-no

Рис. 1. Клиент-серверное взаимодействие

Схема (Рис. 1.) предполагает обращение клиента к серверу и ответ на запрос, однако не учитывает специфику действий, производимые сервером (средства поддержки серверных сценариев).

При работе, к примеру, с базой данных, хранящейся на сервере, подобная схема не подходит, так как необходимо произвести некоторые действия. Под действием понимается внутрисерверное взаимодействие (Рис. 2).

https://lh4.googleusercontent.com/PciRQdtgmKxNOmYl6Mt1zAc2e6T7tgji7U7E7TsCdhM=w476-h352-no

Рис 2. Внутрисерверное взаимодействие

Поскольку в данном случае речь идёт о взаимодействие с удалённой машиной (местоположение которой пользователю неизвестно) очень важно, чтобы запрос обрабатывался как можно быстрее, чтобы длительность отклика сервера была как можно меньше. Также очень важно, чтобы задач, которые выполняет сервер, было как можно меньше, а значит и количества запросов – эти моменты влияют на работоспособность сервера.

Языковые средства создания веб-приложений делятся на две группы: клиентские и серверные[Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 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 .].

Аналогичная проблема возникает со знаками пробела и знаками "+". Поскольку "+" используется вместо пробела в обычном потоке данных, в данных формы он также должен быть закодирован. Далее мы познакомимся с тем, как работает техника кодирования и полезными библиотеками, которые облегчают эту работу. 

Доводы за и против CGI

Написание Web-приложений с помощью CGI имеет как достоинства, так и недостатки.

Сначала рассмотрим преимущества CGI-программирования. Самое главное преимущество состоит в том, что эта технология не зависит от платформы, другими словами, CGI-программы применимы в операционных системах UNIX и Windows NT и почти для любого Web-сервера. Написав программу, вы можете быть уверены, что ее можно перенести на любой компьютер и на любой сервер (конечно, с точностью до компиляции, но об этом — немного позже) Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013].

Кроме того, написание CGI-программы не требует от вас использования какого-то конкретного языка программирования; вам не придется изучать новый язык только для того, чтобы написать CGI-программу. А если вы выберете независимый от платформы язык интерпретирующего типа вроде Perl, вы просто можете переносить свои программы из среды UNIX в Windows NT и обратно. [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .]

Еще одно преимущество CGI-программирования — необычайно простой интерфейс. Вам не понадобятся никакие специальные библиотеки и функции API. Все взаимодействие CGI-программы с Web-сервером основано на обычных UNIX-концепциях стандартного ввода и вывода и переменных среды (stdin, stdout и environment variables).

Теперь упомянем о недостатках. Единственный серьезный недостаток дает о себе знать, когда вы пишете свою программу на языке интерпретирующего типа. При каждом запросе на выполнение CGI-программы приходится запускать интерпретатор, обрабатывать программу и затем ее выполнять. Если для каждого запроса запускается интерпретатор Perl, это может сделать общение с вашим Web-приложением крайне неэффективным. Насколько серьезно это проявится в действительности, зависит от мощности вашего Web-cepвepa, от того, насколько часто выполняется запрос на CGI-программу, и от того, насколько программа быстро загружается в память Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013].

Многие серверы приложений используют компактные, высокоэффективные CGI-программы в качестве шлюза между своими приложениями и Web-сервером.

Еще одним недостатком CGI-программирования является то, что оно не очень-то облегчает жизнь программиста по сравнению с другими средствами разработки Web-приложений. При создании CGI-программы вы должны не только заботиться о логике поведения своей программы, но и вставлять в нее фрагменты, генерирующие HTML-текст [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].

Многие современные средства разработки Web-приложений позволяют вставлять программные компоненты непосредственно в текст HTML-файлов, что значительно экономит силы и время программиста. Это особенно на руку тем, кто умеет писать HTML-тексты, но не умеет программировать. Однако такой подход не позволяет создавать хорошо структурированные программы с развитой логикой, поэтому выбор подходов в значительной степени зависит от вкусов и навыков разработчика. Здесь трудно рассуждать об абсолютных достоинствах и недостатках. 

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

Как я уже говорил выше, для создания CGI-программ может быть использован почти любой язык программирования. Если в приведенном ниже обсуждении вы не встретите упоминания некоторого языка, это не означает, что он не применим для этих целей. Для CGI-программирования подходит любой язык, который позволяет соблюсти обсуждавшиеся ранее требования. В этом разделе мы рассмотрим несколько популярных языков программирования, на которых чаше всего пишутся CGI-программы, но этот список ни в коем случае не следует считать исчерпывающим[Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].

Язык Perl

Perl — это "дедушка" всех языков программирования, которые применяются в наши дни для написания CGI-программ. Он обладал набором приятных свойств еще в те времена, когда были созданы первые Web-серверы, поддерживающие технологию CGI. Не следует думать, что он дает программисту какие-то особые преимущества, просто это язык, применяемый для создания CGI-программ большинством разработчиков [Прохоренок Н.А. Разработка Web-сайтов с помощью Perl и MySQL./ Н.А. Прохоренок -СПб.: БХВ-Петербург,2009].

Одним из главных факторов, обеспечивших популярность языка Perl, было наличие библиотек, облегчающих программирование Web-приложений. Сейчас в поставку интерпретатора Perl входит модуль CGI.pm, содержащий такую библиотеку. Одна из самых ценных функций, которые содержатся в этой библиотеке, — преобразование введенных в форму данных в структуру языка Perl. Кроме того, в этой библиотеке есть огромное количество функций для генерирования HTML-текста [Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013].

Еще одно важное достоинство языка Perl — это то, что в сети Internet есть много CGI-программ, которые вы можете загрузить и использовать для своих нужд. Очень часто оказывается проще переделать чужую программу, чем заново писать собственную.

Этот язык легко выучить, особенно если вы знакомы с основами программирования, кроме того, он фактически считается стандартом для разработки Web-приложений[Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013]. 

Что такое Perl?

Perl является интерпретируемым языком, созданным программистом Лари Уоллом (Larry Wall) для обработки больших текстов и файлов и расшифровывается, как Practical Extraction and Report Language (язык для практического извлечения данных и составления отчетов). С помощью Perl вы, например, можете создать скрипт, который открывает один или несколько файлов, обрабатывает информацию и записывает результаты [Прохоренок Н.А. Разработка Web-сайтов с помощью Perl и MySQL./ Н.А. Прохоренок -СПб.: БХВ-Петербург,2009].

С изобретением World Wide Web, Perl оказался прекрасным средством для взаимодействия с web-серверами через Common Gateway Interface (CGI) - общий интерфейс взаимодействия. Команды Perl могут легко получить данные из формы HTML или другого источника и что-нибудь с ними сделать.

Как Perl обрабатывает данные из форм

Perl достаточно гибок для обработки введенных данных. Например, если пользователь вводит информацию в регистрационную форму скрипт Perl может обработать ее многими способами, такими как: 
добавить их в текстовый файл, 

ввести их в базу данных, 

вставить их в электронное письмо, 

добавить их в существующую web-страницу, 

создать новую web-страницу, 

отобразить их в окне браузера. 

Некоторые из этих примеров рассматриваются в нашем уроке. 

Как генерируются web-страницы "на лету"

Больше всего впечатляет то, что Perl может быть использован для создания web-страниц "на лету" в ответ на запрос или действие пользователя. Новая страница может быть [Прохоренок Н.А. Разработка Web-сайтов с помощью Perl и MySQL./ Н.А. Прохоренок -СПб.: БХВ-Петербург,2009] 

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

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

запросом дополнительных данных 

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

Эта возможность обеспечивает истинную интерактивность вашего узла. Такие скрипты позволят web-серверу автоматически реагировать на определенный набор запросов пользователя, предоставляя данные в требуемом пользователем виде [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .]. 

В чем различие между программой и скриптом?

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

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

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

Альтернативы Perl

Существует несколько альтернатив использованию Perl: 

С, Visual Basic - более традиционные компьютерные языки для обработки вводимых данных. Должны компилироваться под определенную платформу. 

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

JavaScript, VBScript - обеспечивают некоторую интерактивность HTML страниц, которую HTML обеспечить не может. 

Cold Fusion - сторонняя программа для связи форм с базами данных. 

PHP/FI - еще одна сторонняя программа для связи форм с базами данных[Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .]. 

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

2.2 Технология ASP.NET.  

В мире существует огромное количество самых разнообразных технологий, в значительной степени облегчающих жизнь, как опытному программисту, так и начинающему разработчику. Одной из наиболее популярных платформ для создания, запуска различных WEB-приложений и сервисов, является платформа Microsoft .NET Framework. Благодаря своей высокой производительности, поддержки большинства языков программирования и работа с самыми современными сервисами она по праву считается одной из лучших. .NET Framework можно разделить на три большие части:

  1. Общеязыковая среда управления;
  2. Большое множество унифицированных библиотек классов;
  3. Компонентная версия ASP – ASP.NET [Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013]

ASP.NET — это технология, разработанная компанией Microsoft, направленная на создание мощных WEB-приложений и WEB-сервисов. Позволяет в значительной степени облегчить процесс создание динамических страниц HTML. Входит в состав платформы Microsoft .NET и получила свое развитие из более старой версии подобной технологии Microsoft ASP [Венц К. Программирование в ASP.NET AJAX/ К. Венц -Пер,с англ,-СПб:Символ-Плюс,2008.].

Благодаря тому, что внешнее сходство между ASP.NET и более старой версией технологии ASP очень велико, то перейти на работу с более современной технологией разработчику относительно просто. Но, несмотря на внешнее сходство, внутреннее устройство новой технологии в значительной степени отличается от устаревшей ASP. В ней содержится огромное количество уже готовых элементов управления, пользуясь которыми можно быстро создавать самые разнообразные интернет-сайты. Помимо этого, можно прибегнуть к всевозможным сторонним сервисам, которые предоставляют другие сайты, не нагружая тем самым лишними функциями свой проект [Магдануров,Г.И. ASP.NET MVC Framework / Г.И. Магдануров, В.А. Юнев. – СПб,: Петербург,2010.-320 с,6ил.-(Профессиональное программирование)].

Проще говоря, возможности ASP.Net практически безграничны. Использование данной технологии будет полезно как для опытного разработчика, так и для молодого программиста. Существует огромное количество самых разнообразных курсов и сайтов, где происходит обучение работы с данной технологией. А если вы захотите узнать что-то конкретное, то справочная система MSDN, так же разработанная и созданная компанией Microsoft, в значительной степени облегчит ваши труды [Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013]

. На данный момент последней версией данного продукта является версия ASP.NET 4.0, но в новой ОС от компании Microsoft присутствует версия 4.5.

В ASP.NET входит:

  1. Платформа для разработки страницы и элементов управления
  2. Компилятор ASP.NET
  3. Инфраструктура защиты данных
  4. Возможности по управлению состоянием
  5. Конфигурация приложения
  6. Наблюдение и настройка производительности
  7. Поддержка отладки
  8. Платформа веб-служб XML
  9. Расширяемая среда размещения и управление жизненным циклом приложения
  10. Расширяемая среда конструктора
  11. Платформа для разработки страницы и элементов управления

Структура страниц и элементов управления ASP.NET — структура программирования, которая выполняется на веб-сервере для динамического создания и отображения веб-страниц ASP.NET. Веб-страницы ASP.NET можно просматривать в любых веб-обозревателях или клиентских устройства, ASP.NET отображает разметку (такую как HTML) в запрашивающем обозревателе. Как правило, можно использовать одну и ту же страницу для разных обозревателей, так как ASP.NET отображает соответствующую разметку для запрашивающего обозревателя [Венц К. Программирование в ASP.NET AJAX/ К. Венц -Пер,с англ,-СПб:Символ-Плюс,2008.].

Однако можно разрабатывать веб-страницы ASP.NET для определенных обозревателей, например для Microsoft Internet Explorer 6, и использовать широкие возможности конкретного обозревателя. ASP.NET поддерживает элементы управления для мобильных устройств, например таких устройств веб-доступа, как сотовые телефоны, переносные компьютеры и PDA.

Веб-страницы ASP.NET являются полностью объектно-ориентированными. На страницах ASP.NET с элементами HTML можно работать, используя свойства, методы и события. Структура страниц ASP.NET предоставляет единую модель отклика на клиентские события в коде, выполняемом на сервере, поэтому реализация разделения клиента и сервера, используемая в веб-приложениях, не нужна. Она также автоматически обрабатывает состояния страницы и ее элементов управления во время цикла обработки страницы. Дополнительные сведения см. в разделе Общие сведения о веб-страницах ASP.NET [Венц К. Программирование в ASP.NET AJAX/ К. Венц -Пер,с англ,-СПб:Символ-Плюс,2008.].

Структура страниц и элементов управления ASP.NET также инкапсулирует общие функциональные возможности пользовательского интерфейса в удобные повторно используемые элементы управления. Элементы управления, написанные однажды, можно использовать во многих страницах. Они встраиваются в веб-страницу ASP.NET, на которой они размещаются во время отрисовки [Магдануров,Г.И. ASP.NET MVC Framework / Г.И. Магдануров, В.А. Юнев. – СПб,: Петербург,2010.-320 с,6ил.-(Профессиональное программирование)].

Структура страниц и элементов управления ASP.NET также предоставляет возможности управления отображением и поведением веб-узла с помощью тем и обложек. Можно определить темы и обложки и затем применить их на уровне страницы или элемента управления. Дополнительные сведения см. в разделе Общие сведения о темах и обложках ASP.NET.

Кроме тем можно определить главные страницы, позволяющие создать макет страницы, который можно будет использовать для всех страниц в приложении. Одна главная страница определяет макет и стандартное поведение, которые можно использовать для всех страниц (или группы страниц) в приложении. Затем можно создать отдельные страницы содержимого, включающие содержимое, связанное со страницей, которое следует отображать. Когда пользователи запрашивают страницу содержимого, выходная страница представляет собой сочетание структуры главной страницы и содержимого со страницы содержимого. Дополнительные сведения см. в разделе Общие сведения о главных страницах ASP.NET [Магдануров,Г.И. ASP.NET MVC Framework / Г.И. Магдануров, В.А. Юнев. – СПб,: Петербург,2010.-320 с,6ил.-(Профессиональное программирование)].

Компилятор ASP.NET

Весь код ASP.NET компилируется, что позволяет использовать строгий контроль типов, оптимизации производительности, раннее связывание и другие преимущества. После компиляции кода среда CLR компилирует код ASP.NET в машинный код, тем самым обеспечивая повышение производительности.

В ASP.NET включен компилятор, выполняющий компиляцию всех компонентов приложения, включая страницы и элементы управления, в сборку, которую среда размещения ASP.NET может использовать в дальнейшем для обслуживания запросов пользователя. Дополнительные сведения см. в разделе Общие сведения о компиляции в ASP.NET [Венц К. Программирование в ASP.NET AJAX/ К. Венц -Пер,с англ,-СПб:Символ-Плюс,2008.].

Инфраструктура защиты данных

Помимо возможностей защиты данных, .NET, ASP.NET предоставляет дополнительную инфраструктуру для проверки подлинности и авторизации доступа пользователей, а также других задач безопасности. Можно выполнять проверку подлинности с помощью проверки подлинности Windows, предоставляемой службами IIS, или с помощью собственной базы данных пользователя, используя проверку подлинности форм ASP.NET и членство ASP.NET. Также можно управлять проверкой подлинности веб-приложения с помощью групп Windows или собственной базы данных ролей, используя роли ASP.NET. Эти схемы легко добавить, удалить или заменить в зависимости от требований к приложению. Дополнительные сведения см. в следующих разделах [Венц К. Программирование в ASP.NET AJAX/ К. Венц -Пер,с англ,-СПб:Символ-Плюс,2008.]:

Защита веб-узлов ASP.NET

Управление пользователями путем объединения их в группы

Управление авторизацией с помощью ролей

Поставщик службы проверки подлинности форм

ASP.NET всегда запускается с определенным идентификатором Windows, поэтому можно защищать приложение с помощью возможностей Windows, таких как списки управлением доступа NTFS, разрешения баз данных и т. д. Дополнительные сведения об идентификаторе ASP.NET см. в разделах Настройка удостоверения процесса ASP.NET и Олицетворение ASP.NET.

Возможности по управлению состоянием

ASP.NET обеспечивает встроенную функциональность для управления состоянием, что позволяет хранить данные между запросами страниц, например, сведения о клиентах или содержимое корзины покупок. Можно сохранять и управлять сведениями, связанными с приложением, сеансом, страницей и пользователем, а также сведениями, определенными разработчиком. Эти сведения могут не зависеть от элементов управления на странице [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].

ASP.NET предоставляет распределенные средства управления состоянием, позволяющие управлять сведениями о состоянии в нескольких экземплярах одного приложения на одном или нескольких компьютерах. Дополнительные сведения см. в разделе Общие сведения об управлении состоянием ASP.NET.

Конфигурация ASP.NET

Приложения ASP.NET используют систему конфигурации, позволяющую определять параметры конфигурации для веб-сервера, веб-узла и отдельных приложений. Параметры конфигурации можно применять в момент первого развертывания приложений ASP.NET, а также в любой момент добавлять или пересматривать параметры конфигурации с минимальным воздействием на работающие веб-приложения и серверы. Параметры конфигурации ASP.NET сохраняются в файлах XML. Так как эти файлы XML являются текстовыми ASCII-файлами, которые можно читать и изменять, вносить изменения в конфигурацию веб-приложения несложно. Можно расширить схему конфигурации в соответствии со своими предпочтениями. Дополнительные сведения см. в разделе Общие сведения о конфигурационном ASP.NET [Магдануров,Г.И. ASP.NET MVC Framework / Г.И. Магдануров, В.А. Юнев. – СПб,: Петербург,2010.-320 с,6ил.-(Профессиональное программирование)].

Наблюдение и настройка производительности

ASP.NET содержит средства обеспечения безопасности, позволяющие вести наблюдение и настраивать производительность приложения ASP.NET. Наблюдение за состоянием системы ASP.NET позволяет уведомлять пользователя о ключевых событиях, предоставляющих сведения о состоянии приложения и условиях возникновения ошибок. Эти события отображают сочетания характеристик диагностики и мониторинга и обеспечивают большую степень гибкости в вопросах, касающихся протоколирования. Дополнительные сведения см. в разделе Общие сведения о мониторинге работоспособности системы ASP.NET [Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013].

ASP.NET поддерживает две группы счетчиков производительности, доступных в приложении:

Группа счетчиков системной производительности ASP.NET;

Группа счетчиков производительности приложения ASP.NET.

Дополнительные сведения см. в разделе Наблюдение за производительностью приложений ASP.NET.

Поддержка отладки

В ASP.NET инфраструктура отладки во время выполнения используется для того, чтобы обеспечить поддержку отладки программ на различных языках и на различных компьютерах. Можно отлаживать управляемые и неуправляемые объекты, а также все языки, поддерживаемые средой CLR, и языки сценариев. Дополнительные сведения см. в разделе Отладка ASP.NET [Магдануров,Г.И. ASP.NET MVC Framework / Г.И. Магдануров, В.А. Юнев. – СПб,: Петербург,2010.-320 с,6ил.-(Профессиональное программирование)].

В дополнение к этому структура страниц ASP.NET поддерживает режим трассировки, позволяющий вставлять сообщения инструментировани в веб-страницы ASP.NET. Дополнительные сведения см. в разделе What's New in ASP.NET Tracing.

Платформа веб-служб XML

ASP.NET поддерживает веб-службы XML. Веб-служба XML — это компонент, содержащий функциональные возможности для ведения бизнеса, позволяющий веб-приложениям обмениваться сведениями, используя стандарты сообщений HTTP и XML для передачи данных через брандмауэры. Веб-службы XML не привязаны к какой-либо технологии компонентов или определенным соглашениям вызова объектов. В результате веб-службы XML могут использоваться программами, написанными на любом языке, использующими любую компонентную модель и работающими в любой операционной системе. Дополнительные сведения см. в разделе XML Web Services Using ASP.NET [Венц К. Программирование в ASP.NET AJAX/ К. Венц -Пер,с англ,-СПб:Символ-Плюс,2008.].

Расширяемая среда размещения и управление жизненным циклом приложения

В ASP.NET включена расширяемая среда размещения, управляющая жизненным циклом приложения с момента первого обращения пользователя к ресурсу (например, странице) в приложении до момента завершения работы приложения. Хотя ASP.NET использует веб-сервер (IIS) в качестве ведущего приложения, ASP.NET сама предоставляет функциональность размещения. Архитектура ASP.NET позволяет реагировать на события приложения и строить пользовательские обработчики и модули HTTP. [Венц К. Программирование в ASP.NET AJAX/ К. Венц -Пер,с англ,-СПб:Символ-Плюс,2008.].

Расширяемая среда конструктора

ASP.NET включает расширенную поддержку создания конструкторов для серверных веб-элементов управления, которые можно использовать со средствами визуальной разработки, такими как Visual Studio. Конструкторы позволяют создавать интерфейс пользователя времени разработки для элемента управления таким образом, чтобы разработчики могли настроить свойства и содержимое элемента управления и содержимого в средстве визуальной разработки. Дополнительные сведения см. в разделе Общие сведения о конструкторах элементов управления ASP.NET [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].

2.3 Язык PHP

PHP известен, как серверный язык программирования. Это означает, что он работает на веб сервере. Большинство языков веб-программирования являются серверными языками, но некоторые, например, JavaScript, работают на стороне клиента, это означает, что они работают в веб-браузере [Котеров, Д. В. PHP 7 / Д. В. Котеров, И. В. Симдянов. — СПб.: БХВ-Петербург, 2016.].

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

Выполнение кода со стороны сервера является более безопасным способом, чем на стороне клиента, как это делает JavaScript. Поскольку код JavaScript отправляется в веб-браузер, для посетителей сайта легко его просмотреть и редактировать. Даже на одной странице сайта можно с легкостью совмещать PHP и JavaScript. Код находящийся на стороне сервера остаётся веб-сервере и недоступен для посетителей сайта. PHP это инструмент, который находится на веб-сервере и там выполняет PHP скрипты [Колисниченко Д. Н. К60 PHP и MySQL. Разработка веб-приложений./ Д. Н Колисниченко — 6-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2017].

PHP представляет собой программное обеспечение с открытым исходным кодом. Это означает, что любой пользователь может получить доступ и работать на PHP. Это помогает быть уверенным, что PHP будет работать в течение длительного времени. PHP можно свободно скачать и использовать. Это является причиной того, что многие хостинг-провайдеры широко используют PHP. Вы обнаружите, что подавляющее большинство веб-хостингом поддерживают работу PHP [Котеров, Д. В. PHP 7 / Д. В. Котеров, И. В. Симдянов. — СПб.: БХВ-Петербург, 2016.].

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

Считывание и обработка веб-форм и куки-файлов

Функции создания и работы с графикой

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

Функции для работы с HTML.

Одной из замечательных функцией PHP является то, что вы можете включить блоки PHP кода в HTML-страницы.

Вы можете обособить PHP блоки с помощью специальных символов. Когда веб-сервер получает информацию о странице,
все PHP блоки запускаются движком PHP, в то время как, другие части страницы отправляются «как есть» в браузер.

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

Обычные PHP приложения, включают в себя:

Программное обеспечение для ведения блогов таких, как WordPress

Системы электронной коммерции Magento

Система управления контентом, в том числе Drupal и Joomla! и

Программное обеспечение для ведения форумов, например, phpBB.

Кроме того, многие популярные веб-сайты, в том числе Yahoo!, Википедия, Facebook, Digg разработаны с использованием PHP[Котеров, Д. В. PHP 7 / Д. В. Котеров, И. В. Симдянов. — СПб.: БХВ-Петербург, 2016.]. Также с помощью языка PHP возможно написание объектно-ориентированного кода.

2.4 Технология Java Servlets

Технология Java Servlets (сервлеты) была разработана компанией Sun Microsystems, чтобы использовать преимущества платформы Java для решения проблем технологии CGI и API расширений сервера. Технология решает проблему производительности, выполняя все запросы как нити в одном процессе. Сервлеты также могут легко разделять ресурсы, и не зависят от платформы, поскольку выполняются внутри Java Virtual Machine (JVM) [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .] .

Технология обладает широкими функциональными возможностями. Большое количество библиотек предоставляет самые разнообразные средства, необходимые в разработке. Модель безопасности Java делает возможным точное управление уровнем доступа, например позволяя доступ только к определенной части файловой системы. Обработка исключений Java делает сервлеты более надежным средством, чем расширения серверов на C/C++.

Любой сервлет является классом Java, и, поэтому, должен быть выполнен внутри Java VM так называемым сервлет - контейнером (servlet container, servlet engine). Сервлет - контейнер загружает класс сервлета при первом обращении к нему, либо сразу при запуске сервера при специальном указании. Далее сервлет остается загруженным для обработки запросов, пока он не выгружается явным образом, либо до остановки контейнера.

Технология является распространенной, и может быть использована со всеми популярными Web - серверами (Enterprise Server от Netscape, Microsoft Internet Information Server (IIS), Apache, Java Web Server от Sun) [Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013].

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

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

Итак, сервлеты обеспечивают компонентный, платформе - независимый метод для построения web-приложений без ограничений производительности CGI программ. Они имеют широкий диапазон доступных прикладных API, позволяют использовать все преимущества Java, легко расширяются и масштабируются, поддерживаются всеми популярными Web - серверами. Все это делает их отличным средством разработки крупных Web - систем.

2.5 Технология Java Server Pages

Технология Java Server Pages (JSP) от компании Sun Microsystems явилась надстройкой над технологией Java Servlets, обеспечивающей более быструю и простую разработку web - приложений с помощью применения шаблонного подхода.

Для понимания архитектуры и преимуществ JSP необходимо знать технологию Java Servlets, поскольку они тесно связаны. Страницы Java Server Pages представляют из себя шаблоны страниц HTML, схожие с шаблонами РНР и ASP. Основным отличием от других подобных технологий является то, что код, находящийся внутри специальных тэгов не интерпретируется при обращении к странице, а предварительно компилируется в Java Servlet. Статические участки шаблона преобразуются в вызовы к функциям для их помещения в поток вывода. Код компилируется так, как если бы он находился внутри сервлета. Компиляция JSP страниц в сервлеты является трудоемкой, но проводится один раз - либо при первом обращении к странице, либо при запуске сервлет – контейнера [Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013].

Технология JSP удачно объединяет шаблонный подход к построению сайтов и все преимущества Java платформы. Благодаря этому технология получила широкое распространение как среди профессиональных коммерческих разработчиков, так и при создании открытых бесплатных проектов. Важным шагом к расширению шаблонного подхода стали так называемые библиотеки тэгов (tag libraries). Это гибкая возможность интегрировать стандартные, сторонние, или собственные программные компоненты в страницы. Простота создания и использования привели к большой популярности библиотек тэгов.

Благодаря работе на основе Java технология JSP не привязана к конкретной аппаратной или программной платформе. Таким образом JSP являются отличным решением для использования в гетерогенных средах.

Производительность технологии ограничена объективными особенностями архитектуры [Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .].

Во-первых, страницы должны быть откомпилированы в сервлеты, что занимает значительное время.

Во-вторых сервлеты выполняются в среде выполнения Java, т.е. в режиме интерпретации. Однако эти ограничения компенсируются дополнительными возможностями. Современные контейнеры поддерживают кластеризацию серверов, что перекладывает нагрузку на аппаратное обеспечение. Это является экономически оправданным и простым решением. Задача же компиляции в сервлеты является разовой и производится либо при первом обращении, либо при запуске сервлет - контейнера. Таким образом это не сказывается на общей производительности системы при рассмотрении за достаточный период времени.

Глава 3 Серверы приложений: плюсы и минусы

Преимущества

Целостность кода и данных

Размещение бизнес-логики на выделенном сервере или ограниченном числе серверных компьютеров гарантирует доступ к обновленному и модернизированному ПО для всех клиентов. Это исключает риск доступа и управления данными из устаревших и, возможно, несовместимых программ.

Централизованное управление

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

Безопасность

Централизованные средства, через которые поставщик услуг (сервис-провайдер) может управлять доступом к данным и компонентам приложения, позволяют выполнять проверку подлинности потенциально ненадежных клиентов в среднем слое и не затрагивать уровень базы данных.

Производительность

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

Общая стоимость владения

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

Недостатки

Централизация

Системы, построенные на основе сервера приложений, имеют один основной недостаток, присущий всем централизованным решениям — «падение» сервера приведет к недоступности программ для всех клиентов. К тому же эффекту приведут и неполадки в сетевом подключении.

Защита информации

Эта проблема, в принципе, актуальна для любых сетевых решений, использующих для передачи данных инфраструктуру публичных сетей.

Заключение

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

Были изучены следующие вопросы:

Клиент-серверное взаимодействие

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

Технология CGI, заголовки ответов и запросов CGI

Язык Perl

Технология ASP.NET

Язык PHP

Технология Java Servlets

Технология Java Server Pages

Список литературы

  1. Будилов В.А. Основы программирования для интернета / В.А. Будилов –СП6.: БХВ-Петербург,2013
  2. Венц К. Программирование в ASP.NET AJAX/ К. Венц -Пер,с англ,-СПб:Символ-Плюс,2008.
  3. Гаврилова И.В. Разработка приложений [Электронный ресурс] : учеб. пособие /И.В. Гаврилова. — 2-е изд., стер. — М.: ФЛИНТА, 2012 .
  4. Колисниченко Д. Н. К60 PHP и MySQL. Разработка веб-приложений./ Д. Н Колисниченко — 6-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2017
  5. Котеров, Д. В. PHP 7 / Д. В. Котеров, И. В. Симдянов. — СПб.: БХВ-Петербург, 2016.
  6. Магдануров,Г.И. ASP.NET MVC Framework / Г.И. Магдануров, В.А. Юнев. – СПб,: Петербург,2010.-320 с,6ил.-(Профессиональное программирование)
  7. Прохоренок Н.А. Разработка Web-сайтов с помощью Perl и MySQL./ Н.А. Прохоренок -СПб.: БХВ-Петербург,2009