Файл: Понятие и принципы построения серверных программ.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 26.06.2023

Просмотров: 70

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

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

Постоянное увеличение производительности автоматизированных рабочих мест обработки информации и рост возможностей современных программно-аппаратных средств информационного обмена заставляет по-новому взглянуть на проблему реализации современных информационных систем. Становится реальным совместное использование данных, хранящихся на нескольких ЭВМ одновременно. Указанная возможность обеспечивается ростом популярности глобальной сети Internet и технологии World-Wide-Web, к которым в последнее время проявляется повышенный интерес со стороны разработчиков информационных систем.

Тенденции заключаются в использовании Internet в качестве универсального транспорта при создании распределенных систем удаленного мониторинга, контроля и управления объектами различного назначения. Изначально WWW создавался только как средство, предоставляющее графический интерфейс в Internet и упрощающее доступ к информации, распределенной по миллионам компьютеров по всему миру. При этом основными компонентами являлись страницы, узлы, браузеры и серверы Web. Пользователям была предоставлена возможность навигации по Internet с использованием технологии гипертекста, поддерживаемой протоколом HTTP (Hypertext Transfer Protocol) и стандартом языка HTML (Hypertext Markup Language).

Появление CGI (Common Gateway Interface) решило проблему обмена информацией между сервером Web и такими программами, как базы данных, которые не могут непосредственно обмениваться данными с браузерами Web. В результате появилась возможность реализации интерактивного взаимодействия конечного пользователя с программами стороны Web сервера, которые обрабатывали информацию, введенную пользователем в браузере, и в качестве результата возвращали сформированную HTML-страницу. Многие из существующих решений доступа к базам данных в среде Internet основаны на данном подходе.

Средства протокола HTTP - одной из основ Web - позволяют организовывать передачу любых файлов, что в значительной мере снижает необходимость в использовании протокола передачи файлов FTP, а в ряде случаев позволяет заменить его. Кроме того, используя протокол HTTP и интерфейс CGI, с легкостью можно организовывать Web-форумы, сервис которых идентичен по своей сути сервису, предоставляемому протоколом NNTP (Network News Transfer Protocol). Те же технологии позволяют строить чаты, делая протокол IRC фактически ненужным.


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

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

Реализация поставленной цели предполагает необходимость решения следующих задач:

- проанализировать понятие и дать характеристику существующим Wed-технологиям;

- определить функциональные особенности Wed-технологийи сравнить их;

- рассмотреть принципы построения серверной части программного обеспечения;

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

Глава 1. Принципы построения и основные задачи, выполняемые серверными программами

Понятие и характеристика существующих Web-технологий

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

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

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

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


Значительные интернет-ресурсы могут быть созданы с применением технологии CGI. Платформенно-независимый интерфейс CGI (Common Gateway Interface – дословно – общий шлюзовой интерфейс) используется для исполнения программ совместно с Web-сервером. Такие программы называются CGI-приложениями [5], [6].

Допустим, набрав URL в строке адреса в браузере, посредством заполнения HTML-формы, или любым другим образом пользователь запрашивает следующий URL:

http://www.server.ru/some-path/cgi-script.ext

Иными словами, пользователь обращается к серверу www.server.ruпо протоколу HTTP, запрашивает из каталога/some-path/файлcgi-script.extи рассчитывает получить Web-документ, например, HTML-файл или файл другого формата, например, рисунок. Так и произойдет, если такой документ существует и находится в указанном каталоге Web-сервера. Отметим, что протокол HTTP не накладывает ограничений на тип запрашиваемого ресурса. Следовательно, файл cgi-script.ext может быть вовсе не изображением, не привычным HTML-документом, а программой – исполняемым файлом. В этом случае Web-сервер инициирует запуск этой программы на выполнение, а пользователю возвратит результат ее работы – все данные, выведенные программой через стандартный поток вывода STDOUT. В зависимости от решаемой задачи в CGI-программе может быть выбран любой из поддерживаемых протоколом HTTP форматов данных: текст, изображение, документ в HTML-формате с соответствующим форматированием, аудиофайл и прочее. Пользователь же не заметит никакой разницы, загрузил ли он существовавший документ с диска Web-сервера, или этот документ был создан для него CGI-программой «на лету».

CGI-программа может представлять собой любой исполняемый файл – будь то программа, написанная на языке С, Shell-скрипт или программа на Perl. Вообще приложениями CGI называются программы, которые, пользуясь этим интерфейсом, получают через протокол HTTP информацию от удаленного пользователя, обрабатывают ее, и возвращают результат обработки обратно в виде ссылки на уже существующий документ HTML или другой объект (например, графическое изображение) или в виде документа HTML, созданного динамически. Из-за того, что очень часто такие программы пишутся именно на языках-интерпретаторах (подобных Basic, Perl, PHP), их традиционно называют сценариями.

Преимущества применения такой технологии очевидны. С применением любого языка высокого уровня, имеющегося в операционной системе Web-сервера, можно написать и откомпилировать программу любой сложности, выполняющую практически любую задачу. CGI предусматривает возможность передать серверу информацию от клиента – различные параметры, которые могли бы анализироваться CGI-программой. Способ передачи параметров определяется методом, определяемым в заголовке HTTP-запроса. При использовании метода GET это достигается перечислением требуемых параметров в URL в виде пар переменная=значение. Тогда наш URL будет выглядеть так:


http://www.server.ru/some-path/cgi-script.ext?param1=value1&param2=value2...

Строка параметров отделяется от имени CGI-программы символом ?. Эта строка должна быть особым подготовлена – все символы с кодами больше 127 должны быть представлены комбинацией символов % и шестнадцатеричным представлением кода символа, например, символ с кодом 142 (русская буква «О») будет представлен как %8Е. Кроме того, все пробелы должны быть заменены символом+. Строка параметров передается программе через переменную окружения QUERY_STRING. Анализируя ее и выбирая из нее требуемые параметры, CGI-программа может выполнять определенные действия, и действовать соответствующим образом, например, по переданным в качестве параметров имени пользователя и паролю провести аутентификацию пользователя, в случае подтверждения подлинности пользователя предоставить ему определенный сервис, а в случае неуспешной аутентификации выдать предупреждающее сообщение.

Кроме перечисленного метода существуют еще два способа передачи параметров. Строка URL в некотором смысле подобна командной строке операционных систем. Как при запуске программ в ОС, CGI-программе можно передать параметры в командной строке. Тогда, например, при использовании для написания CGI-программы языка С или Perl, внутри программы такие параметры будут доступны через массив ARGV[]. Для передачи параметров таким образом строка параметров должна содержать список значений параметров, соединенных знаками +. Например, наш URL выглядел бы так:

http://www.server.ru/some-path/cgi-script.ext?value1+value2

В этом примере передача параметров осуществляется так же, как если бы мы запустили программу cgi-script.extв командной строке:

prompt> cgi-script.ext value1 value2

Третий способ осуществляется при использовании в HTTP-запросе метода POST. В этом случае строка параметров передается сценарию через стандартный поток ввода (STDIN). Однако, в этом случае так же сохраняется возможность передачи параметров через URL (соответственно, данные будут доступны в QUERY_STRING). Метод POST, как правило, используется при передаче на сервер данных из больших HTML-форм, или при передаче на сервер файлов.

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

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


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

PHP – язык, специально нацеленный на работу в сети Интернет, который позволяет встраивать программный код в HTML-документы. Синтаксис языка чрезвычайно ясный и читаемый, сочетает в себе все достоинства языков Perl и С.

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

Как правило, Web-документы, написанные на языке PHP, имеют расширение .php. Описание этого языка дано в [5]. Рассмотрим, как работает данная технология. PHP-«программа» представляет собой обычный HTML-файл, в который в требуемых местах встроен программный код, выполняющий заданные действия. Вставки кода оформляются парой тегов <?phpи?>, между которыми может находиться необходимое число операторов языка. При запросе такого документа пользователем Web-сервер вызывает специальный PHP-интерпретатор и передает ему этот документ. Интерпретатор просматривает его, пропуская все теги HTML и выполняя все операторы программной вставки. Сама программная вставка, ограниченная тегами<?phpи?>, удаляется из документа, а на ее место вставляется результат выполнения операторов этой вставки, в том случае, конечно, если в ней содержатся операторы вывода. При этом сам HTML-файл фактически выступает в роли статического шаблона, в котором изменяемые фрагменты реализуются программным кодом. Результат такой обработки отправляется пользователю. Пользователь же никогда не сможет узнать, какой конкретно фрагмент (и вообще имелись ли такие фрагменты) был сгенерирован динамически. Однако, если Web-сервер не имеет PHP-интерпретатора, но на нем была размещена страница с инструкциями на этом языке, то страница, вместе со всеми программными вставками будет передана пользователю. Так как вставки кода оформляются парой тегов<?phpи?>, они будут восприняты браузерами как комментарии, и отображены пользователю не будут. Хотя пользователь сможет увидеть их, запросив в браузере исходный код страницы.

Как следует из изложенного алгоритма, элементарная PHP-программа вообще может не содержать ни одной программной вставки. Тем не менее, такая «программа» будет вполне рабочей, и при ее интерпретации в интерпретаторе Web-сервера никакой ошибки не произойдет. Иными словами, PHP-сценарий вообще может не отличаться от HTML-документа.