[ zurück ] | Bugreport beachten! |
Der ISAPI-Experte ist ein Zusatzprogramm, das sich nahtlos in die Entwicklungsumgebung von Delphi einklinkt. Er erweitert das Menü der Delphi-IDE um den Schablonentyp ISAPI-Extension. Nach der Installation des Experten erzeugen Sie über "Datei"-"Neu"-"Projekte"-"ISAPI-Extension" eine funktionierende Universalvorlage für ISAPI-DLLs. Das geschieht durch das simple Ausfüllen von 4 Registerkarten gemäß Abbildung.
|
Der Experte führt Sie nun auf vier Registerseiten zu neuen ISAPI-DLLs. Auf Seite 1 entscheiden Sie sich für den Ausgabetyp Ihrer Servererweiterung. Mit Seite 2 bestimmen Sie den Namen und Speicherort der Projektdatei und der Projektunit. Im dritten Schritt entscheiden Sie sich für den Wert der Extensions-Beschreibung lpszExtensionDesc. Diese wird, wie bereits besprochen, im Eintrittspunkt für das Laden der DLL in den Server zur Identifizierung benötigt. Der ebenfalls im Schritt 3 einzutragende Log-Informations-String ist für die Prozedur HttpExtensionProc bestimmt.
Am Ende des 4-seitigen Dialoges wird der Quelltext für ein entsprechendes Delphi-Projekt generiert und dieses für Sie geöffnet. Die Projektdatei *.DPR ist bereits in der endgültigen Form. Bitte programmieren Sie die von Ihnen beabsichtigte Datenausgabe ausschließlich in der Projektunit *.PAS! Sie finden diese unter "Ansicht"-"Units", falls sie nicht von vornherein sichtbar ist.
In der Projektunit ist bereits der Rahmen einer Prozedur IsapiAction vorbereitet. Hier erzeugen Sie individuell die von Ihnen geplanten Ausgabedaten der Servererweiterung. Am Ende von IsapiAction weisen Sie dem Rückgabestring s diese Daten zu. Das ist sogar für Nicht-Text-Daten möglich. Um die Weiterleitung Ihrer Ausgabe über das Web kümmert sich der bereits fertige Projektrahmen.
procedure IsapiAction(var s: String); var FldList: TStringList; begin : s:= {und so weiter ...} : end; |
Einfache und kommentierte Musterbeispiele zur Einführung in die Thematik sind unter den Namen IsapiTst (universeller ISAPI-Test) und IsapiTab (dynamisch generierte Tabelle mit Zufallsdaten) auf den vorangegangenen Webseiten dargestellt.
Bitte beachten Sie beim Programmieren zwei wichtige Regeln:Im Detail puffert jede mit dem ISAPI-Experten generierte DLL die gesamte Ausgabe im Ergebnis-String ResStr, ehe sie mit WriteClient geschrieben wird. Das ist für übliche Antworten von einigen kByte Umfang kein Problem. Generieren Sie aber riesige Tabellen oder gewaltige Grafiken, wird entsprechend Hauptspeicher benötigt. Außerdem beginnt das Zurückschreiben der Antwort an den Client erst, wenn die Ausgabe durch die Servererweiterung komplett erstellt ist.
In solchen HighEnd-Fällen sollten Sie Ihre Webserver-Erweiterung vom Konzept her so aufbauen, daß Sie mehrmals in kleineren Abschnitten mit WriteClient ausgeben. Das wiederum zieht auf einigen Servern andere Probleme nach sich.Bisher sind folgende Bugs aus frühen Versionen bekannt und in der aktuellen Version bereinigt:
Beim Kompilieren der DLL unter Delphi 5 wird ein Typkonflikt für die Variable StrLen gemeldet. Der Typ muß hier statt DWORD nun Cardinal heißen.
Falls Sie auf Dialogseite 2 des Experten keinen Pfad für die Projektdatei *.dpr angeben, bekommen Sie beim Betätigen des Buttons Fertigstellen den Fehler: "I/O-Fehler 161"
Wenn Sie in Ihrer ISAPI-DLL den QueryString durch Aufruf der Funktion ECBQueryString auswerten wollen, und dieser leer ist, hängt sich die DLL bei Verwendung auf dem Sambar-Server auf.
J. Hummel, 2000