VbFcgi
Codieren Sie Ihr Webanwendungs-Backend in VB6! Mit VbFcgi können Sie ganz einfach Ihre aktuellen Programmierkenntnisse nutzen und sogar Ihre vorhandenen VB6-Client/Server-Apps ins Web stellen.
Einführung
VbFcgi ist ein FCGI-Host/Server-Framework für Visual Basic 6 (VB6) ActiveX/COM DLL-Webanwendungen. Es wurde gegen Nginx entwickelt, sollte aber mit jedem Webserver funktionieren, der die FCGI-Spezifikation implementiert.
Prozessdiagramm
Enthaltene Binärdateien
Es gibt drei Hauptkomponenten des VbFcgi-Frameworks:
- VbFcgiLib.dll – Dies ist die Haupt-Framework-Bibliothek, die den gesamten Code zum Abhören und Beantworten von FCGI-Anfragen vom Webserver sowie zum Parsen von Datensätzen für FCGI-Parameter, HTTP-Cookies usw. enthält. Diese Datei sollte enthalten sein mit jeder Verteilung Ihrer FCGI-Anwendung.
- VbFcgiHost.exe – Dies ist die ausführbare Hauptdatei, die FCGI-Listener als Broker zwischen Ihrem Webserver und Ihrer FCGI-Anwendung erzeugt. Es unterstützt die Ausführung mehrerer Listener auf sequentiellen Ports zum Lastausgleich und überwacht außerdem beendete Listener, die neu gestartet werden müssen. Schließlich fungiert es auch als Koordinator für das Herunterfahren aller laufenden FCGI-Listener-Instanzen. Diese Datei sollte in jeder Distribution Ihrer FCGI-Anwendung enthalten sein.
- VbFcgiApp.dll – Dies ist der Demo-FCGI-Anwendungscode. Die hier enthaltene Version ist ein sehr einfacher Proof-of-Concept, der eine HTML-Seite mit einer Tabelle der empfangenen FCGI-Parameter im Upstream sendet und außerdem die grundlegende Verwendung von Cookies und HTTP-Abfrageparametern demonstriert. Diese Datei sollte bei der Verteilung nicht enthalten sein Ihre eigene FCGI-Anwendung! Stattdessen sollten Sie Ihre eigene Version erstellen, wie im Abschnitt „Erstellen Ihrer eigenen FCGI-Anwendung“ unten beschrieben.
Obwohl es sich bei den oben genannten DLLs um COM-ActiveX-Bibliotheken handelt, müssen Sie sie bei der Bereitstellung für Benutzer NICHT bei regsvr32 registrieren, da dieser Code die registrierungsfreie DirectCOM-Bibliothek von Olaf Schmidt verwendet. Sie sollten jedoch die oben genannten DLLs auf Ihrem Entwicklungscomputer registrieren.
Ebenfalls enthalten ist ein binärer Build von Nginx mit einer Grundkonfiguration zur Unterstützung eines einzelnen FCGI-Hostserver-Listeners auf localhost:9100. Dies ist der Einfachheit halber und zur Demonstration einer minimalen Konfiguration enthalten. In den meisten Fällen sollte Ihr eigenes, richtig konfiguriertes Nginx (oder ein anderer Webserver) laufen.
Schließlich habe ich der Einfachheit halber auch die hervorragende vbRichClient5-Bibliothek von Olaf Schmidt (http://www.vbrichclient.com/) gebündelt. Sie können immer die neueste Version von der vbRichClient5-Website herunterladen.
Demo-Nutzung
- Wenn noch kein Webserver läuft, starten Sie nginx über die Befehlszeile, indem Sie zum Ordner .VbFcgibinnginx gehen und dann den Befehl nginx.exe ausführen. Wenn bereits ein Webserver läuft, stellen Sie sicher, dass er so konfiguriert ist, dass *.fcgi-Anfragen vom Browser Upstream an 127.0.0.1 Port 9100 weitergeleitet werden.
- Starten Sie VbFcgiHost.exe über die Befehlszeile mit dem folgenden Befehl: vbfcgihost.exe /host 127.0.0.1 /port 9100 /spawn 1
- Öffnen Sie Ihren Browser und gehen Sie zu http://127.0.0.1/vbfcgiapp.fcgi – Sie sollten die HTML-Antwort der Demo-FCGI-Anwendung sehen.
Erstellen Sie Ihre eigene FCGI-Anwendung
Sie können den mitgelieferten VbFcgiApp-Quellcode als Ausgangspunkt verwenden – die gesamte Arbeit wird in der IFcgiApp_ProcessRequest-Methode erledigt, also überprüfen Sie sie gründlich.
Um Ihre eigene FCGI-Anwendung von Grund auf zu schreiben, müssen Sie:
- Starten Sie ein neues ActiveX-DLL-Projekt in VB6.
- Ändern Sie den Namen des Projekts von „Project1“ in „MyFcgiApp“ (oder welchen Namen Sie auch immer haben möchten).
- Ändern Sie den Namen von „Class1“ in „CFcgiApp“.
- Fügen Sie einen Verweis auf VbFcgiLib über das Menü „Projekte“ > „Referenzen“ hinzu.
- Geben Sie im Abschnitt „Allgemein“ der Klasse „CFcgiApp“ ein; Implementiert VbFcgiLib.IFcgiApp
- Wählen Sie „IFcgiApp“ aus der Dropdown-Liste in der Codeansicht aus. Es wird die IFcgiApp_ProcessRequest-Methode für Sie erstellen.
- Codieren Sie Ihre App in der IFcgiApp_ProcessRequest-Methode (der Rest der verdammten Eule).
- Erstellen Sie Ihre DLL-App.
- Erstellen Sie eine Kopie der erstellten DLL und ändern Sie die Erweiterung in .fcgi.
- Verschieben Sie die .fcgi-Datei in denselben Ordner wie die Dateien VbFcgiHost.exe und VbFcgiLib.dll.
HINWEIS: Sie müssen weder Ihre FCGI-Anwendungs-DLL noch VbFcgiLib.dll registrieren, wenn Sie sie verteilen, da von diesem Framework eine registrierungsfreie Instanziierung verwendet wird.
Wenn Sie anschließend VbFcgiHost.exe ausführen, verwendet es Ihre .fcgi-Datei als eine Art „Plugin“, um auf entsprechende FCGI-Anfragen zu antworten. Wenn Sie beispielsweise http://localhost/myapp.fcgi eingeben, erstellt VbFcgiHost eine Instanz der CFcgiApp-Klasse aus der DLL myapp.fcgi, die im selben Ordner gespeichert ist, und ruft dann IFcgiApp_ProcessRequest in dieser Klasse auf.
Genießen!