В предыдущих главах мы завершили общее обсуждение программ CGI. Здесь я даю простую демонстрационную программу как краткое изложение предыдущего содержания.
Чтобы использовать эту программу, вам потребуется последняя бета-версия OmniHTTPD: OmniHTTPD 2.0b1 (бета-версия 1) для Windows 95/NT. Если у вас его нет, вы можете скачать его здесь (oh20b1.zip).
Способ установки OmniHTTPD такой же, как и в первой лекции, поэтому я не буду здесь вдаваться в подробности. Я просто расскажу о некоторых проблемах с настройками в этой версии здесь:
Откройте диалоговое окно настроек свойств OmniHTTPD, используйте кнопку «Глобальные настройки веб-сервера», перейдите на внешнюю страницу и удалите настройки .cgi. Если не удалить программы CGI с расширением cgi, в нашем курсе расширение программы CGI на языке Perl — .pl, а расширение скомпилированной программы CGI — .cgi. настройки должны быть изменены следующим образом.
В этой версии OmniHTTPD поддержка команд SSI (Server Side Include) значительно улучшена по сравнению с предыдущими версиями, а также поддерживаются такие команды, как include и exec. В демонстрационной программе я использовал эти команды.
После загрузки (ex8.zip) он содержит три файла: index.shtml, makelog.cpp и makelog.exe. index.shtml — это сценарий, содержащий команды SSI, скопируйте его в каталог c:httpdhtdocs; makelog.exe — это программа CGI, скопируйте его в каталог c:httpdcgi-bin; makelog.cpp — это исходный файл makelog. exe, если вы хотите изменить компиляцию, вы должны использовать 32-битный компилятор, например VC, иначе его нельзя будет использовать.
Кроме того, вам необходимо внести изменения в настройки OmniHTTPD: выберите «Виртуальная настройка по умолчанию» и измените «Индекс по умолчанию» на index.shtml на странице «Сервер». Таким образом, когда вы вводите http://localhost в браузере, OmniHTTPD автоматически загружает index.shtml.
Создайте еще один WEB-документ и сохраните его в каталоге c:httpdhtdocs с именем файла index.html. Когда вы используете браузер для доступа к локальному хосту, index.shtml сначала вызывает makelog.exe для сохранения информации о доступе пользователя, а затем вызывает index.html для отображения ее в браузере. Информация о доступе пользователя хранится в файле журнала пользователя в каталоге c:httpdcgi-bin.
В этом примере используются базовые переменные среды и технология SSI из спецификации CGI. Пожалуйста, внимательно изучите его.
4. База данных
Среди приложений CGI приложения баз данных лучше всего отражают мощные функции программ CGI. В Интернете существует множество баз данных, и спрос на WEB-приложения этих баз данных также растет (как со стороны компаний, так и со стороны пользователей). Можно сказать, что Интернет сам по себе представляет собой огромную базу данных. Как эффективно организовать эти огромные коллекции данных и опубликовать их в Интернете — это тема, которую совместно решают CGI и системы баз данных.
Если вы хотите классифицировать приложения CGI и базы данных, существуют разные методы классификации с разных точек зрения. Например, в зависимости от размера базы данных ее можно разделить на текстовую базу данных, локальную базу данных (Microsoft Access и т. д.) и серверную базу данных (MS SQL Server, Informix и т. д.) в зависимости от содержания обработки CGI; можно разделить на клиентские программы CGI базы данных (пользователи используют интерактивные программы CGI) и внутренние программы CGI базы данных (программы CGI, которые взаимодействуют с базой данных) и т. д. Выбор размера базы данных обычно зависит от объема данных и стоимости задач, которые вы хотите выполнить; необходимость разделения или объединения клиентской и внутренней части при программировании CGI-программ обычно зависит от сложности обработки ваших данных.
Обычно, если размер вашего набора данных находится в пределах нескольких мегабайт и между записями данных нет сложных связей, вы можете использовать текстовый файл для создания базы данных, что может свести затраты к минимуму, и текстовый файл имеет База данных Преимущества, которыми не обладает система управления (СУБД, а именно DataBase Management System): Если в ваших данных возникает ошибка, вы можете передать свой текстовый файл в любой текстовый редактор для восстановления, а если в вашей системе баз данных возникает ошибка, Если вы не эксперт по базам данных, В противном случае ремонт будет затруднен.
Если ваша коллекция данных очень велика или если ваши записи данных имеют сложные взаимосвязи между собой, лучше всего использовать систему баз данных. Использование текстовых файлов для реализации базы данных размером в десятки мегабайт могло бы перегрузить любой продвинутый RISC-сервер. Если вы используете программу CGI для обработки сложных взаимосвязей между данными, это неизбежно увеличит сложность программы CGI и займет слишком много ресурсов сервера. С другой стороны, использование функций системы базы данных может упростить разработку программы CGI; и повысить эффективность разработки.
При выборе системы базы данных вам необходимо выбрать один из следующих аспектов: 1. Платформа операционной системы: вам следует выбрать систему базы данных, с которой вы наиболее знакомы, а также платформу операционной системы, с которой вы наиболее знакомы. таким образом вы сможете избежать ошибок. 2. Цена: вам следует выбрать самую дешевую из различных систем баз данных, которая сможет выполнить вашу работу. Здесь я могу рассказать вам о бесплатной системе баз данных под названием MiniSQL. Она должна работать на платформе UNIX или Linux. существует бесплатная система баз данных для платформы Windows. Если кто-нибудь знает, сообщите мне, и я расскажу вам на будущих курсах.
Наш курс посвящен использованию Delphi для разработки программ CGI, а Delphi предоставляет систему баз данных Interbase Server. Поэтому здесь я в основном буду говорить о разработке программ CGI с использованием системы баз данных. В то же время, поскольку система баз данных сокращает объем работы по кодированию, я объединил интерфейсный CGI и внутренний CGI в один, чтобы выполнить обработку пользовательского ввода и операции с базой данных в одной CGI-программе. Но на других системных платформах этот метод не может быть использован. Читателям предлагается принять собственное решение на основе предыдущего обсуждения.
Здесь я хотел бы объяснить несколько различных CGI и их различия в использовании в нашем OmniHTTPD:
Стандартный CGI: Стандартный CGI должен быть размещен в каталоге, заданном /cgi-bin/, и его можно изменить в любое время во время работы OmniHTTPD.
Win CGI: CGI, применяемый в системах Windows, должен быть размещен в каталоге, заданном /cgi-win/. Этот CGI использует файл INI для получения запросов от клиентского браузера вместо использования переменных среды или стандартного ввода. Обычно мы не используем такого рода компьютерную графику.
ISAPI: спецификация CGI, использующая библиотеки динамической компоновки, предложенные Microsoft.
NSAPI: спецификация CGI, использующая библиотеки динамической компоновки, предложенные Netscape.
Каждая из этих спецификаций CGI имеет свои особенности: стандартный CGI может быть написан с использованием исполняемых программ или языков сценариев, таких как Perl, но это неэффективно и требует много ресурсов. Каждый запрос CGI будет иметь экземпляр программы CGI. работает на сервере. Win CGI имеет те же функции, что и Stardand CGI. ISAPI и NSAPI высокоэффективны и постоянно находятся в памяти, и независимо от количества запросов CGI на сервере работает только один экземпляр. Только набор данных, соответствующий этому экземпляру, отличается, но этот тип CGI непрост; для отладки, поскольку оно должно находиться на веб-сервере. Обновления доступны только при закрытом программном обеспечении.
На следующей лекции я дам демонстрационную программу для White Page. Белая страница — это список адресов электронной почты. Вы можете разрешить пользователям запрашивать, редактировать, добавлять и удалять этот список через WEB-браузер. В этой лекции демонстрационная программа, которую я дал, представляет собой лишь операцию запроса, остальные операции будут описаны в последующих курсах.
Эта демонстрационная программа построена на основе базы данных Borland Interbase Server и разработана в Delphi. Во время разработки я выбрал стандартный CGI, потому что его легче отлаживать.
Наша программа написана с использованием Stardand CGI, который легко отладить. После успешной отладки его можно легко изменить на ISAPI/NSAPI в Delphi всего одним оператором (как насчет этого, Delphi очень хорош!).