4.16.5. Языки и средства создания Web-приложений.
Средства доступа к базам данных в Internet
World Wide Web позволяет осуществлять доступ к базам данных, предоставляя средства для разработки простого, удобного интерфейса пользователя и средства взаимодействия с прикладными программами. Интерфейс пользователя разрабатывается на основе языка гипертекстовой разметки HTML, и в частности, с использованием HTML-форм, которые являются наиболее удобным механизмом представления и передачи запросов к базам данных. Средства по обеспечению доступа к базам данных можно классифицировать по месту обработки данных внешними программами на:
обеспечивающие доступ к базе данных на стороне Web-сервера (средства подключения внешнего программного обеспечения - спецификация CGI, API-интерфейс прикладных модулей и активных серверных страниц ASP)
работающие на стороне клиента (средства программирования приложений - интерпретируемые языки Javascript и Java).
CGI
Common Gateway Interface - это спецификация интерфейса взаимодействия Web-сервера с внешними прикладными программами. Главное назначение CGI - обеспечение единообразного потока данных между сервером и работающим на нем приложением. CGI определяет:
порядок взаимодействия сервера с прикладной программой, в котором сервер выступает инициирующей стороной;
механизм реального обмена данными и управляющими командами в этом взаимодействии, что не определено в протоколе HTTP. Такие понятия, как метод доступа, переменные заголовка, MIME, типы данных, заимствованы из HTTP и делают спецификацию прозрачной для тех, кто знаком с самим протоколом.
Обычно гипертекстовые документы, возвращаемые по запросу клиента WWW сервером, содержат статические данные. CGI обеспечивает средства создания динамических Web-страниц на основе данных, полученных от пользователя. Программы, написанные в соответствии со спецификацией CGI, называются CGI-скриптами или шлюзами. Шлюз - это CGI-скрипт, который используется для обмена данными с другими информационными ресурсами Internet или приложениями-демонами такими, как, например, система управления базами данных. Обычная CGI-программа запускается Web-сервером для выполнения некоторой работы, возвращает результаты серверу и завершает свое выполнение (рис. 4.14).
Шлюз выполняется точно также, только, фактически, он инициирует взаимодействие в качестве клиента с третьей программой (рис.4.15 ). Если эта третья программа является сервером БД, то шлюз становится клиентом СУБД, который посылает запрос по определенному порту соединения с системой управления базами данных, а после получения ответа пересылает его WWW-серверу.
Рис. 4.14. Схема взаимодействия CGI-скрипта.
Рис. 4.16. Схема взаимодействия CGI-шлюза.
При применение спецификации CGI для обмена данными с внешними прикладными программами можно выделить следующие преимущества:
Прозрачность использования;
"Языковая" независимость - CGI-программы могут быть написаны на любом языке программирования или командном языке, имеющим средства работы со строками;
Процессная изолированность - при запуске CGI-програмы на сервере порождается отдельный процесс и ошибочный CGI-скрипт не может сломать Web-сервер или получить доступ к закрытой информации;
Открытость стандарта - CGI интерфейс применим на каждом Web-сервере;
Архитектурная независимость - CGI не зависит от особенностей реализации архитектуры сервера (однопоточности, многопоточности и т.д.);
Но CGI имеет также и существенные недостатки. Главная проблема заключается в затратах на выполнение CGI-приложений: поскольку на сервере для каждого очередного запроса порождается новый процесс, который завершается после его выполнения, то это приводит к невысокому быстродействию CGI-скрипта и снижает эффективность работы сервера. При использовании CGI-программ для доступа к базам данных из-за неподдержки непрерывного соединения Web-сервера и соответствующей СУБД очень сложно произвести процесс "ведения" пользователя базой данных, так как каждый раз при генерации очередного запроса требуется новое подключение. Но в то же время закрытие соединения после обработки каждого запроса сильно осложняет деятельность хакеров, так как при отсутствии постоянного подключения к БД проникнуть в нее гораздо сложнее. Другое достоинство этого "недостатка" состоит в том, что связь с Web-сервером устанавливается только на короткий промежуток времени, в результате чего он не перегружается и может выполнять другие задачи.
CGI`также ограничен по способности функционирования - спецификация предусматривает только простую "ответную" роль скрипта при генерации результата на запрос пользователя. CGI-программы не имеют взаимосвязей с установлением аутентификации пользователя и проверки его входных данных.
API
В ответ на ограничения и недостатки спецификации CGI была разработана спецификация прикладных модулей API, встроенных в сервер. Данное расширение Web-сервера запускается как динамическая библиотека и выполняет обработку каждого вызова сервера по отдельной структуре памяти, что значительно проще, чем создание отдельного процесса для каждого клиентского запроса. Наиболее известны два API-интерфейса - NSAPI компании Netscape и ISAPI компании Microsoft. Свободно распространяемый популярный Unix-сервер Apache также имеет модуль PHP, реализующий данный интерфейс. Приложения, работающие через API, соединяются с сервером значительно быстрее, чем CGI -программы, так как API выполняется в основном процессе сервера и постоянно находится в состоянии ожидания запросов, поэтому время на запуск программы и порождения нового процесса не требуется.
Тем не менее спецификация API не имеет преимуществ CGI-интерфейса и поставщики API-модулей тоже сталкиваются с целым рядом проблем:
"Языковая" зависимость - прикладные программы могут быть написаны только на языках, поддерживаемых в данном API (обычно это С/C++); Perl, наиболее популярный язык для CGI-скриптов, как правило, не используется в существующих поставляемых API-модулях.
Неизолированность процесса - так как приложения выполняются в адресном пространстве сервера, то ошибочные программы могут "уронить" сервер или какое-либо приложение. Таким образом вполне возможно (намеренно или нет) сломать систему безопасности сервера.
Ограниченность применения - написанные программы в соответствии с данным API могут использоваться только на данном сервере.
Архитектурная зависимость - API-приложения зависимы от архитектуры сервера: если сервер поддерживает однопоточность, то многопотоковые приложения не получают никакого преимущества в быстродействии при выполнении. Также при изменении производителем архитектуры сервера, модуль API обычно тоже подвергается изменениям, и прикладные программы соответственно тоже требуют переделки или даже могут быть написаны заново.
ASP
Решают те же задачи, что и что программные расширения Web-сервера. Страницы ASP представляют собой текстовые файлы с конструкциями языка HTML и сценариями, составленными на JSCRIPT и VB SCRIPT.
- 4. Программное обеспечение сетей
- 4.1. Структура стека tcp/ip. Краткая характеристика протоколов
- 4.2. Адресация в ip-сетях
- 4.2. Три основных класса ip-адресов
- Структура адресов сетей классов a – e
- Диапазон адресов сетей и хостов классов a и c
- 4.3. Использование масок в ip-адресации
- 4.4.Отображение физических адресов на ip-адреса: протокол arp
- 4.5. Автоматизация процесса назначения ip-адресов узлам сети - протокол dhcp
- 4.6. Протокол ip
- 4.6.1.Формат пакета ip
- 4.7. Маршрутизация. Виды и алгоритмы маршрутизации.
- 4.7.1. Алгоритм поиска маршрута в таблице маршрутизации
- 4.7.2. Протокол динамической маршрутизации rip
- 4.8. Протокол управляющих сообщений icmp
- 4.8.1. Формат сообщений протокола icmp
- 4.8.3.Сообщения о недостижимости узла назначения
- 4.8.4.Перенаправление маршрута
- 4.9. Протокол udp
- 4.9.1. Порты
- 4.9.2. Формат udp-пакета
- 4.10. Протокол tcp
- 4.10.1. Алгоритм установления tcp-соединения
- 4.10.3. Формат сообщений tcp
- 4.11. Протокол dns
- 4.11.1. Принцип работы dns
- 4.11.2. Алгоритм взаимодействия узлов в распределенной сети
- 4.12. Протокол управления сетью snmp
- 4.12.1. Основы технологии
- 4.12.2. Различия в представлении информации
- 4.12.3. Базы данных управления
- 4.12.4. Операции
- 4.13. Протоколы дистанционного управления. Протокол telnet
- 4.14. Протоколы файлового обмена
- 4.14.1. Тривиальный протокол передачи файлов (tftp)
- 4.14.2. Простой протокол передачи файлов (sftp)
- 4.14.3. Протокол передачи файлов ftp
- 4.14.4. Команды ftp
- 4.15. Электронная почта
- 4.15.1. Протокол smtp
- 4.15.2. Протокол pop3 (Post Office Protocol)
- 4.15.3. Протокол imap
- 4.16.1. Универсальный указатель ресурса url.
- 4.16.2. Протокол http
- 4.16.3. Методы протокола http
- 4.16.4. Статус-Код и пояснение к нему
- 4.16.5. Языки и средства создания Web-приложений.