In den vorherigen Kapiteln haben wir eine allgemeine Diskussion über CGI-Programme abgeschlossen. Hier gebe ich ein einfaches Demonstrationsprogramm als Zusammenfassung des vorherigen Inhalts.
Um dieses Programm nutzen zu können, benötigen Sie die neueste Beta-Version von OmniHTTPD: OmniHTTPD 2.0b1 (Beta 1) für Windows 95/NT. Wenn Sie es nicht haben, können Sie es hier herunterladen (oh20b1.zip).
Die Methode zur Installation von OmniHTTPD ist die gleiche wie in der ersten Vorlesung, daher werde ich hier nicht näher darauf eingehen. Ich werde hier nur auf einige Einstellungsprobleme in dieser Version eingehen:
Öffnen Sie das Dialogfeld „OmniHTTPD-Eigenschaftseinstellungen“, verwenden Sie die Schaltfläche „Globale Einstellungen des Webservers“, gehen Sie zur Seite „Extern“ und löschen Sie die .cgi-Einstellungen. Wenn sie nicht gelöscht werden, werden CGI-Programme mit der Erweiterung cgi als Perl-Programme verarbeitet. In unserem Kurs lautet die Erweiterung des CGI-Programms in der Perl-Sprache .pl und die Erweiterung des kompilierten CGI-Programms lautet .cgi Die Einstellungen sollten wie folgt geändert werden.
In dieser Version von OmniHTTPD ist die Unterstützung für SSI-Befehle (Server Side Include) im Vergleich zu früheren Versionen erheblich verbessert und Befehle wie include und exec werden unterstützt. Im Demoprogramm habe ich diese Befehle verwendet.
Nach dem Herunterladen (ex8.zip) enthält es drei Dateien: index.shtml, makelog.cpp und makelog.exe. index.shtml ist ein Skript, das SSI-Befehle enthält. Bitte kopieren Sie es in das Verzeichnis c:httpdhtdocs. makelog.exe ist ein CGI-Programm. Bitte kopieren Sie es in das Verzeichnis c:httpdcgi-bin. exe, wenn Sie die Kompilierung ändern möchten, müssen Sie einen 32-Bit-Compiler wie VC verwenden, andernfalls kann er nicht verwendet werden.
Darüber hinaus müssen Sie eine Änderung an den Einstellungen in OmniHTTPD vornehmen: Wählen Sie „Virtuelle Standardeinstellung“ und ändern Sie „Standardindex“ auf der Seite „Server“ in „index.shtml“. Auf diese Weise lädt OmniHTTPD automatisch index.shtml, wenn Sie http://localhost in den Browser eingeben.
Erstellen Sie ein weiteres WEB-Dokument und speichern Sie es im Verzeichnis c:httpdhtdocs mit dem Dateinamen index.html. Wenn Sie über einen Browser auf localhost zugreifen, ruft index.shtml zunächst makelog.exe auf, um die Zugriffsinformationen des Benutzers zu speichern, und ruft dann index.html auf, um sie im Browser anzuzeigen. Die Zugriffsinformationen des Benutzers werden in der Userlog-Datei im Verzeichnis c:httpdcgi-bin gespeichert.
Dieses Beispiel verwendet die grundlegenden Umgebungsvariablen und die SSI-Technologie in der CGI-Spezifikation. Bitte studieren Sie es sorgfältig.
4. Datenbank
Unter den CGI-Anwendungen spiegeln Datenbankanwendungen die leistungsstarken Funktionen von CGI-Programmen am besten wider. Es gibt viele Datenbanken im Internet und auch die Nachfrage nach WEB-Anwendungen dieser Datenbanken steigt (sei es von Unternehmen oder Benutzern). Man kann sagen, dass das WEB selbst eine riesige Datenbank ist. Wie man diese riesigen Datensammlungen effektiv organisiert und im WEB veröffentlicht, ist ein Thema, das CGI und Datenbanksysteme gemeinsam lösen.
Wenn Sie CGI- und Datenbankanwendungen klassifizieren möchten, gibt es unterschiedliche Klassifizierungsmethoden aus unterschiedlichen Perspektiven. Je nach Größe der Datenbank kann sie beispielsweise in Textdatenbank, lokale Datenbank (Microsoft Access usw.) und Datenbankserver (MS SQL Server, Informix usw.) unterteilt werden kann in Front-End-Datenbank-CGI-Programme (mit Benutzern, die interaktive CGI-Programme verwenden) und Back-End-Datenbank-CGI-Programme (CGI-Programme, die mit der Datenbank interagieren) usw. unterteilt werden. Die Wahl der Größe der Datenbank hängt normalerweise vom Datenvolumen und den Kosten der Aufgaben ab, die Sie ausführen möchten. Ob Sie bei der Programmierung von CGI-Programmen Front-End und Backend trennen oder kombinieren, hängt normalerweise von der Komplexität Ihrer Datenverarbeitung ab.
Wenn Ihr Datensatz nur wenige Megabyte groß ist und keine komplexen Beziehungen zwischen Ihren Datensätzen bestehen, können Sie zum Erstellen der Datenbank normalerweise eine Textdatei verwenden, wodurch die Kosten auf ein Minimum reduziert werden können eine Datenbank Vorteile, die das Managementsystem (DBMS, nämlich DataBase Management System) nicht hat: Wenn in Ihren Daten ein Fehler auftritt, können Sie Ihre Textdatei zur Wiederherstellung in einen beliebigen Texteditor übertragen, und wenn in Ihrem Datenbanksystem ein Fehler auftritt, Sofern Sie kein Datenbankexperte sind, Andernfalls wird die Reparatur schwierig.
Wenn Ihre Datensammlung sehr umfangreich ist oder zwischen Ihren Datensätzen komplexe Beziehungen bestehen, ist es am besten, ein Datenbanksystem zu verwenden. Die Verwendung von Textdateien zur Implementierung einer Datenbank mit mehreren zehn Megabyte würde jeden fortgeschrittenen RISC-Server überfordern. Wenn Sie ein CGI-Programm verwenden, um komplexe Beziehungen zwischen Daten zu verarbeiten, erhöht dies zwangsläufig die Komplexität des CGI-Programms und belegt zu viele Serverressourcen. Andererseits kann die Verwendung der Funktionen des Datenbanksystems die Schwierigkeit des CGI-Programmdesigns vereinfachen und die Entwicklungseffizienz verbessern.
Bei der Auswahl eines Datenbanksystems müssen Sie aus den folgenden Aspekten wählen: 1. Betriebssystemplattform: Sie sollten das Datenbanksystem auswählen, mit dem Sie am besten vertraut sind, und Sie sollten auch die Betriebssystemplattform auswählen, mit der Sie am besten vertraut sind Auf diese Weise können Sie Fehler vermeiden. 2. Preis: Sie sollten unter den verschiedenen Datenbanksystemen das günstigste auswählen, das Ihre Arbeit erledigen kann. Hier kann ich Ihnen von einem kostenlosen Datenbanksystem namens MiniSQL erzählen. Es muss auf einer UNIX- oder Linux-Plattform laufen Es gibt ein kostenloses Datenbanksystem für die Windows-Plattform. Wenn es jemand weiß, sagen Sie es mir bitte und ich werde es Ihnen in zukünftigen Kursen sagen.
In unserem Kurs geht es um die Verwendung von Delphi zur Entwicklung von CGI-Programmen, und Delphi stellt das Datenbanksystem Interbase Server bereit. Daher werde ich hier hauptsächlich über die Entwicklung von CGI-Programmen unter Verwendung des Datenbanksystems sprechen. Da das Datenbanksystem gleichzeitig viel Codierungsarbeit reduziert, habe ich Front-End-CGI und Back-End-CGI zu einem kombiniert, um die Verarbeitung von Benutzereingaben und Datenbankoperationen in einem CGI-Programm abzuschließen. Auf anderen Systemplattformen kann diese Methode jedoch nicht verwendet werden. Die Leser werden gebeten, ihre eigenen Entscheidungen auf der Grundlage der vorherigen Diskussion zu treffen.
Hier möchte ich einige verschiedene CGIs und ihre Unterschiede in ihrer Verwendung in unserem OmniHTTPD erläutern:
Standard-CGI: Standard-CGI muss in dem durch /cgi-bin/ festgelegten Verzeichnis abgelegt werden und kann jederzeit geändert werden, wenn OmniHTTPD ausgeführt wird.
Win CGI: CGI, das in Windows-Systemen angewendet wird, muss in dem durch /cgi-win/ festgelegten Verzeichnis abgelegt werden. Dieses CGI verwendet eine INI-Datei, um Anforderungen vom Client-Browser zu erhalten, anstatt Umgebungsvariablen oder Standardeingaben zu verwenden. Wir verwenden diese Art von CGI grundsätzlich nicht.
ISAPI: Eine CGI-Spezifikation, die von Microsoft vorgeschlagene dynamische Linkbibliotheken verwendet.
NSAPI: Eine CGI-Spezifikation, die von Netscape vorgeschlagene dynamische Linkbibliotheken verwendet.
Jede dieser CGI-Spezifikationen weist ihre eigenen Merkmale auf: Standard-CGI kann mit ausführbaren Programmen oder Skriptsprachen wie Perl geschrieben werden, ist jedoch ineffizient und beansprucht viele Ressourcen. Jede CGI-Anfrage verfügt über eine Instanz des CGI-Programms läuft auf dem Server. Win CGI verfügt über die gleichen Funktionen wie Stardand CGI. ISAPI und NSAPI sind hocheffizient und im Speicher gespeichert. Unabhängig davon, wie viele CGI-Anfragen vorhanden sind, wird nur eine Instanz auf dem Server ausgeführt. Nur der dieser Instanz entsprechende Datensatz ist unterschiedlich, aber diese Art von CGI ist nicht einfach zum Debuggen, da es sich auf dem WEB-Server befinden muss. Updates sind nur verfügbar, wenn die Software geschlossen ist.
In der nächsten Vorlesung werde ich ein Demonstrationsprogramm für White Page geben. White Page ist eine Liste von E-Mail-Adressen. Sie können Benutzern erlauben, diese Liste über einen WEB-Browser abzufragen, zu bearbeiten, hinzuzufügen und zu löschen. In dieser Vorlesung handelt es sich bei dem Demonstrationsprogramm, das ich gegeben habe, nur um eine Abfrageoperation. Andere Operationen werden in nachfolgenden Kursen beschrieben.
Dieses Demonstrationsprogramm basiert auf der Borland Interbase Server-Datenbank und wurde in Delphi entwickelt. Während der Entwicklung habe ich mich für Standard-CGI entschieden, weil es einfacher zu debuggen ist.
Unser Programm ist mit Stardand CGI geschrieben, das leicht debuggt werden kann. Nachdem das Debuggen erfolgreich war, kann es in Delphi einfach mit nur einer Anweisung auf ISAPI/NSAPI umgestellt werden (wie wäre es, Delphi ist sehr gut!).