Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПО Комп сетей.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
424.45 Кб
Скачать
  1. Средства создания программ, выполняемых на стороне сервера.

  2. Спецификация cgi (Common Gateway Interface).

  3. Серверы asp.

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

Самое очевидное решение заключается в том, чтобы разработать некоторый исполняемый файл (приложение), который будет динамически строить новый НТМL-код, тогда на вход такого исполняемого файла поступают некоторые параметры, например, данные которые ввел в форме или в командной строке пользователь, а на выходе он должен порождать НТМL-код в виде текста, для этой цели служат приложения называемые CGI-приложениями.

CGI (общедоступный шлюзевый интерфейс) – это интерфейс для запуска внешних программ на сервере в ответ на действия клиента, установившего с ним соединение через глобальную сеть. Пользуясь этим интерфейсом, приложения могут получать информацию от удаленного пользователя, анализировать ее, формировать НТМL-код и отсылать его клиенту. CGI-приложения могут получать данные из заполненной формы, построенной с помощью НТМL либо из командной строки описания URL (универсальный указатель ресурса).

Кроме интерфейса CCI существуют другие варианты интерфейсов, позволяющие динамически создавать НТМL-код путем запуска на сервере приложений, в ответ на действие клиента, например, можно выделить интерфейс ISAPI (интерфейс прикладного программного интернет-сервера).

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

ISAPI – библиотеки, исполняющиеся непосредственно в адресном пространстве сервера, имеют большие возможности и обеспечивают более высокую производительность сервера, в то время, как CGI-приложения исполняются в ОС сервера как отдельные процессы и вынуждены определенным образом организовать обмен данными с самим сервером (что снижает производительность), но, с другой стороны, ошибка в библиотеке ISAPI может привести к выходу всего сервера из строя и его длительной неработоспособности. В то же время ошибка в коде CGI-приложения может в худшем случае привести только к аварийному завершению выполнения этого приложения, а сам сервер при этом сохранит работоспособность. Тогда в результате ошибки будет не верно отображена только какая-то одна НТМL-страница либо часть страницы, а все остальные части сервера будут продолжать работать.

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

Этот метод удобен, но имеет один серьезный недостаток: при изменении содержимого динамической НТМL-страницы или, же при изменении логики ее реакции на действия интернет-клиента требуется создать новый код CGI или ISAPI приложений, а для этого нужно выполнить полностью весь цикл построения результирующей программы, начиная от изменения исходного кода включая компиляцию и компоновку, поскольку содержимое web-страниц меняется довольно часто, в отличие от обычных программ, то такой подход не очень эффективен, может потребоваться перенос интернет-сервера с одной архитектуры на другую, а это потребует перестройки всех используемых CGI-приложений и ISAPI-библиотек.

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

Существует несколько языков и соответствие им интерпретаторов, которые нашли применение в этой области и успешно служат цели порождения HTML-страниц. Среди них можно назвать язык: PERL – лежащий в основе различных web-технологий); PHP (Personal Home Page) – язык для программирования на сервере) и язык сценарий, на котором основана web-технология, ASP (Active Server Page) фирма Microsoft.

Текст на интерпретируемых языках, которые поддерживаются такими web-технологиями как ASP или PHP представляют собой часть текста обычных HTML-страниц со встроенными в них сценариями (Script). Эти сценарии можно писать на любом языке, поддерживаемом сервером; интернет-сервер обрабатывает их при поступлении запроса о URL адресе соответствующего файла. Он разбирает текст HTML-страниц, находит в нем тексты сценариев, вырезает их и интерпретирует в соответствии с синтаксисом и семантикой данного языка. В результате интерпретации получается выходной текст на языке HTML, который сервер вставляет непосредственно в то место исходной страницы, где встретился сценарий. Так обрабатывается web-страница на любом интерпретируемом языке, ориентированном на работу в глобальной сети.

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

Все эти языки сценариев обладают присущими им характерными особенностями:

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

  2. все они имеют средства для работы в архитектуре «клиент-сервер» для обмена информацией с серверами БД, а многие современные версии таких языков – средства для функционирования в 3-х уровневой архитектуре для обмена данными с серверами приложений.

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

Данные методы распространены в глобальной сети, поскольку они очень просты, а кроме того, от клиентского компьютера ничего не требуют, кроме способности интерпретировать тексты HTML. Эта особенность довольно существенна.