Достоинства и недостатки спецификации CGI 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Достоинства и недостатки спецификации CGI



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

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

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

· Bluestone предлагает среду для разработки CGI-приложений Sapphire/Web. Проблема преждевременного отключения от базы данных решена в этом продукте за счет автоматической поддержки связи с БД в течение заданного времени. Если пользователь обращается к Web-узлу и передает запрос БД, которая используется большинством приложений, не требующих регистрации в базе данных, то шлюзовое ПО автоматически использует уже установленную связь.

· IBM разработала продукт Net. Data, который представляет собой исполнительный механизм CGI, интегрированный с динамически компонуемой библиотекой. В его состав входит также программа для управления подключениями (менеджер подключения), позволяющая задавать период времени, в течение которого поддерживается непрерывная связь с БД.

· WebMate выпускает интегрированную среду для разработки приложений WebMate/Foundation. Этот продукт позволяет не только создавать программные коды в стандарте CGI (как и все другие аналогичные пакеты), но и дает возможность устанавливать права доступа к файлам баз данных (по чтению или по записи), предохраняя БД от внесения несанкционированных изменений.

· Simware предлагает продукт Salvo - инструментальные средства разработки интерактивных Web-приложений, которые обеспечивают защиту данных за счет того, что источник информации остается "невидимым" пользователю. Продукт позволяет также собирать данные, поступающие от различных приложений и БД.

· Intersolv выпускает набор драйверов для стандарта ODBC, который обеспечивает доступ к БД Oracle; программу для подключения к серверу базы данных и шлюз между стандартами JDBC и ODBC. Продукты позволяют программистам создавать Web-страницы на языке Java и использовать их для доступа к БД. Аналогичные средства выпускает компания VisigenicSoftware.

ISAPI и NSAPI

Ведущие поставщики, такие как Netscape, BorlandInternational, Microsoft и Sun, устраняют недостатки, присущие спецификации CGI, используя вместо нее собственные API-интерфейсы. Netscape предлагает NetscapeServerAPI, компания Microsoft разрабатывает технологию ActiveX и интерфейсы InternetServerAPI (ISAPI), которые взаимодействуют с совместимыми OLE-серверами для выполнения распределенных вычислений. Sun занимается созданием интерфейса JDBC, который позволит устанавливать непосредственную связь между Web-страницами, написанными на языке Java, и базой данных. Некоторые API-интерфейсы из набора JDBC уже предлагаются пользователям, но большая их часть находится в стадии разработки.

Microsoft выпустила Web-сервер InternetInformationServer (IIS), поддерживающий ISAPI, который входит в состав WindowsNT и тесно интегрирован с СУБД SQLServer. Запрос передается серверу IIS, который использует ISAPI для извлечения данных из БД и передачи их пользователю в формате HTML. Представители Microsoft считают, что такое решение намного проще в использовании, чем CGI, и работает на порядок быстрее.

Oracle предлагает ПО WebServer, который также использует API-интерфейсы Oracle. С его помощью можно разрабатывать приложения на языках PL/SQL, C и C++, которые исполняют запросы к базе данных, написанные на языке PL/SQL. В дальнейшем компания намерена дополнить WebServer поддержкой спецификаций JDBC.

Кроме риска, связанного с защитой данных, CGI присущи ограниченные возможности масштабирования и невысокое быстродействие. Каждая реализация CGI-сценария запускается в своем собственном адресном пространстве, а не в адресном пространстве Web-сервера. Для 32-разрядных систем Windows это означает, что каждое обращение к CGI-сценарию требует запуска приложения WinExec, загрузки с диска новой копии исполняемой программы и, возможно, новой копии сценария, а также создания нового адресного пространства с новым процессом и новой структурой указателей. Часто сам сценарий делает очень мало, поэтому непроизводительные затраты на создание процесса составляют большую часть времени выполнения сценария CGI.

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

Два ведущих производителя Web-серверов, Netscape и Microsoft, опубликовали свои собственные патентованные схемы расширения Web-сервера, основанные на DLL. Интерфейс NSAPI компании Netscape работает на платформе Unix, которая поддерживает совместно используемые объекты. Интерфейс ISAPI корпорации Microsoft не будет работать в Unix, поскольку сервер IIS этой же корпорации запускается только на системе WindowsNTServer.

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

ISAPI может следующее:

· запросить дополнительную информацию по имени при помощи вызова GetServerVariable;

· считать информацию из тела HTTP- запроса Web-клиента при помощи вызова ReadClient;

· послать информацию HTTP-клиенту при помощи вызова WriteClient;

· возвратить серверу информацию о расположении, переадресации и состоянии процесса при помощи вызова ServerSupportFunction.

Дополнительную информацию по ISAPI вы можете найти в IISSDK корпорации Microsoft по адресу: http://www.microsoft.com/intdev/.

Дать резюме для NSAPI нелегко. Будучи аналогичным ISAPI, интерфейс NSAPI все же является более сложным и теснее привязан к конфигурации сервера, хотя и более гибок. Конфигурация каждой функции NSAPI должна быть задана в объектной базе данных конфигурации Netsite. Блоки параметров NSAPI базируются на парах name-value, что во многом аналогично переменным Web-форм. Дополнительную информацию по NSAPI можно найти по адресу: http://www.netscape.com/newsref/std/server_api.html.

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



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 37; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.100.180 (0.007 с.)