Разработка PL/SQL WEB-приложений

Статьи про Oracle -> APEX

Разработка PL/SQL WEB-приложений

Статья написана на основе официальной документации фирмы Oracle.
Oracle® Database Advanced Application Developer's Guide
11g Release 1 (11.1)
Part Number B28424-02

v:1.0 2007.10.16

Обзор PL/SQL Web-приложений.

Обычно, Web-приложение это набор хранимых PL/SQL процедур, которые взаимодействуют с Web-бразузерами через протокол HTTP. Обработка потока PL/SQL Web-приложения похожа на обработку CGI PERL скрипта. Разработчики часто используют CGI скрипты для создания динамических страниц, однако в большинстве случаев такие скрипты не оптимально работают с базой данных Oracle. Технология PL/SQL приложений предоставляет эффективный и гибкий механизм работы с данными. Например, Вы можете использовать DML, динамический SQL, и курсоры.

    Рисунок иллюстрирует следующие шаги:
  1. Пользователь открывает Web-страницу, следуя гиперссылке, или вводит данные в форму. Обрабатывая эти действия, браузер отправляет HTTP запрос серверу. Запрос содержит требуемый URL.
  2. В соответствии с полученным URL, HTTP-сервер вызывает хранимую в базе данных процедуру. Данные из формы передаются в процедуру.
  3. Хранимая процедура запускает подпрограмму из PL/SQL Web Toolkit. Обычно, подпрограммы, такие как HTP.Print, генерируют Web-страницы динамически. Генерация страницы зависит от данных базы данных и входных параметров.
  4. Подпрограммы передают динамическую страницу Web-серверу.
  5. Web-сервер передает страницу клиенту.
PL/SQL WEB-приложение

Реализация PL/SQL Web-приложений

    Web-приложение может быть полностью написано на PL/SQL с использованием следующих компонентов базы данных Oracle:
  • PL/SQL Gateway
  • PL/SQL Web Toolkit

PL/SQL Gateway
PL/SQL Gateway обеспечивает возможность браузера выполнять хранимые процедуры, используя HTTP listener (прослушиватель). Gateway - это платформа, на которой разработчик создает и развертывает приложение.

mod_plsql
mod_plsql - это реализация PL/SQL gateway. Этот модуль является плагином (plug-in) для Oracle HTTP Server и позволяет Web-браузерам вызывать хранимые процедуры PL/SQL. Oracle HTTP Server входит в состав Oracle Application Server и Oracle database.

Модуль mod_plsql позволяет использовать процедуры на PL/SQL для обработки HTTP -запросов и генерации ответов. В этом контексте HTTP-запрос это URL, который содержит значение параметра, который должен быть передан процедуре. PL/SQL Gateway передает процедуре параметр из URL и возвращает клиенту полученный от процедуры ответ (чаще всего HTML).

    Некоторые преимущества использования mod_plsql в сравнении с embedded (встроенным) PL/SQL gateway.
  • Вы можете использовать mod_plsql в следующей системе: Oracle HTTP Server и Oracle database запущены на разных хостах, разделенных брандмауэрами (firewall). В случае embedded PL/SQL gateway такая конфигурация не возможна.
  • Embedded PL/SQL gateway не поддерживает некоторые возможности mod_plsql, например, кэширование динамического HTML, системный мониторинг и логирование в Common Log Format.

Embedded PL/SQL Gateway
Вы можете использовать встроенную версию PL/SQL gateway. Embedded PL/SQL gateway работает с XML DB HTTP Listener в Oracle Database, предоставляет основные возможности mod_plsql и не требует наличия Oracle HTTP сервера. Embedded PL/SQL gateway конфигурируется в пакедже DBMS_EPG, который входит в состав PL/SQL Web Toolkit.

    Некоторые преимущества использования embedded gateway в сравнении с mod_plsql.
  • Вы можете использовать PL/SQL Web приложения, например, Application Express, без установки сервера Oracle HTTP, таким образом упрощается инсталляция, конфигурирование и использование PL/SQL Web-приложений.
  • Вы используете тот же подход конфигурирования, что и при передаче ответа Oracle XML DB на FTP или HTTP-запрос.

PL/SQL Web Toolkit
PL/SQL Web Toolkit - это интерфейс, который позволяет выполнять хранимые PL/SQL процедуры, используя mod_plsql.
В ответ на запрос браузера в соответствии с командой пользователя процедура PL/SQL обновляет или получает данные из базы. PL/SQL Web Toolkit формирует HTML-ответ для браузера, обычно в формате файла загрузки или HTML для отображения. Web Toolkit API позволяет хранимой процедуре выполнять следующие действия:

  • Получить информацию о HTTP-запросе.
  • Генерировать HTML-заголовки content-type и mime-type.
  • Устанавливать cookies браузера.
  • Генерировать HTML - страницы.

Как Embedded PL/SQL Gateway обрабатывает запросы клиентов.
На рисунке показано как Embedded PL/SQL Gateway обрабатывает HTTP-запросы клиентов. Embedded PL/SQL Gateway обрабатывает клиентский запрос

    Последовательность шагов.
  1. От клиентского браузера Oracle XML DB HTTP Listener получает запрос на выполнение PL/SQL процедуры. Процедура может быть написана непосредственно на PL/SQL или неявно сгенерирована во время загрузки PL/SQL Server Page в базу и последующей компиляции.
  2. XML DB HTTP Listener перенаправляет запрос в embedded PL/SQL gateway. Этот процесс описывается в virtual-path mapping (маршрутизация виртуальных путей) конфигурации.
  3. Используя информацию из запроса и в соответствии с конфигурацией, embedded gateway определяет какую пользовательскую запись базы данных использовать для идентификации.
  4. Embedded gateway готовит входные параметры и запускает PL/SQL процедуру приложения.
  5. Процедура PL/SQL генерирует HTML страницу и заполняет ее данными.
  6. Приложение отправляет страницу в embedded gateway.
  7. Embedded gateway пересылает страницу в XML DB HTTP Listener.
  8. XML DB HTTP Listener пересылает страницу клиентскому браузеру.

В отличии от mod_plsql, для обработки HTTP-запроса embedded gateway требует наличия Oracle XML DB Listener. Listener (слушатель) - это серверный процесс, похожий на Oracle Net Listener, который поддерживает Oracle Net Services, HTTP и FTP. Для конфигурирования XML DB Listener можно использовать Oracle Enterprise Manager или просто файл xdbconfig.xml.

Петрелевич Сергей
petrelevich@yandex.ru

Метки: PL/SQL   APEX  

Комментарии.

Внимание.
Комментировать могут только зарегистрированные пользователи.
Возможно использование следующих HTML тегов: <a>, <b>, <i>, <br>.