Mit cX5 ist es nun auch (per Extra-Lizenz) eine Integration in einen Webserver (etwa MS IIS, APACHE, NGINX) zur Verwaltung einer Website bzw. eines Webservice möglich.
Unterstützt werden die Protokolle CGI (Common Gateway Interface), FastCGI oder ISAPI (IIS).
Alle diese Verfahren bzw. Protokolle haben ihre Vor- und Nachteile. CGI läuft auf so gut wie allen Webservern, kostet jedoch recht viel Performance und Speicher auf dem Server. FastCGI ist (wie der Name schon sagt) deutlich sparsamer, funktioniert jedoch nicht auf allen Servern. Das effizienteste Verfahren ist ASAPI, das aber aktuell nur vom MS IIS unterstützt wird. In jedem Fall ist ein Webserver erforderlich sowie die Möglichkeit, diesen zu konfigurieren.
Bei allen Verfahren muss in dem Webserver ein Handler für .cx5-Dateien eingerichtet werden, wodurch jede Anfrage an die Website mit einem Endpunkt XX.cx5 (XX ist dabei der Skriptname) ein Aufruf von cX5 mit dem Skript erfolgt.
Das Skript muss dabei als Ergebniswert (Ergebnis im Beende Skript-Befehl) das Ergebnis für den Aufrufer zurückliefern. Dies ist üblicherweise eine HTML-Seite, kann aber auch ein XML oder JSON (siehe Einstellungen-Befehl) für Abrufe von Daten sein.
Der Variablenbereich [cX.Webserver.X] steht dabei für die Interaktion mit dem Webserver zur Verfügung
Während mit CGI bei jedem Aufruf ein komplettes cX5 (als kompilierte EXE) gestartet wird, wird bei den anderen Verfahren die cX5-Runtime nur einmal gestartet und wiederverwendet. Dabei müssen die Ausführungsdateien Runtime.dll und RuntimeCore.dll im \BIN-Verzeichnis der Webanwendung liegen.
Bei CGI wird das angegebene Skript komplett ausgeführt.
Bei FastCGI wird das Skript nur beim ersten Aufruf komplett gestartet, damit es Initialisierungen durchführen kann. Dieses muss dann per
Setze in [cX.Webserver.FastCGI]: 'FastCGI_Anfrage'
die Bereitschaft für FastCGI-Aufrufe initialisieren, wobei der gesetzte Wert eine Sprungmarke für ein Unterprogramm ist, welches pro Aufruf aufgerufen wird und das im Zurück-Befehl das Ergebnis für den Aufrufer zurückliefert.
Hinter diesem Setze-Befehl wird üblicherweise ein Warte Endlos-Befehl eingesetzt.
Über das noch effektivere Protokoll ISAPI, welches nur mit dem Microsoft IIS-Webserver funktioniert, wird das per URL angesprochene Skript ebenfalls komplett gestartet, jedoch wird cX5 dabei wiederverwendet. Das Skript wird für jeden Aufruf als eigenständiger Task gestartet, so dass auch mehrere Aufrufe gleichzeitig kein Problem darstellen.
Jede Instanz bekommt hierbei einen eigenen Variablenbereich (Kontext). Um auch für alle Anfragen gemeinsame Variablen zu verwenden (etwa einen Aufrufzähler), kann dies über [cX.GlobaleVariablen(X)] erfolgen (ähnlich wie [cX.Hauptvariablen()]).
Ist in der Anfrage der GET-Parameter "cx5func=X" enthalten, wird nur das angegebene Unterprogramm aufgerufen.
Bei der Bearbeitung können Header und Cookies abgefragt und für die Antwort gesetzt werden.
Das Ergebnis wird im abschließenden Beende-Befehl als Rückgabewert eingesetzt.
Passwort-Datei
Wird ein Skript auf dem Webserver hinterlegt, das mit einem Passwort geschützt ist, würde dieses nicht ohne dieses Passwort geladen und verwendet werden können. Aus diesem Grund wird bei einem solchen Skript zusätzlich eine Datei unter dem Skriptnamen mit der Erweiterung .cxp gespeichert. Liegt diese Datei neben dem Skript, kann der IIS das Skript laden.
cX-Webseite: http://www.clickexe.net