SpiderBite: Code auf dem WebServer ausführen
Verfasst: 23.07.2017 15:31
SpiderBite
Die aktuellen Sourcen und die Dokumentation befindet sich auf: https://github.com/spiderbytes/SpiderBite
Was ist das hier?
SpiderBite ist ein Präprozessor für SpiderBasic, der es ermöglicht, in einem Code Bereiche zu markieren, die auf dem WebServer ausgeführt werden (der sogenannte ServerCode (PB2Web-User werden es kennen )).
Wie bekannt ist, kann und darf der von SpiderBasic generierte Code nicht direkt auf die Hardware des WebServers zugreifen. Somit ist es nicht möglich, direkte Datenbankabfragen, Filesystemzugriffe oder sonstiges aus SpiderBasic auszuführen. Die bisherige Vorgehensweise ist es, eine serverseitige Komponente zu programmieren (sei es als CGI oder PHP- (ASP-, Python-, ...) Script) und diese Komponente dann in SpiderBasic mittels HttpRequest() aufzurufen. Das funktioniert eigentlich ganz gut, ist aber meines Erachtens nicht besonders komfortabel. Aus diesem Grund habe ich mich entschlossen, SpiderBite zu entwickeln.
Ein simples Beispiel
Der Code, der oben in dem `EnablePbCgi/DisablePbCgi` - Block notiert ist, wird vor dem eigentlichen Konvertierungsvorgang durch SpiderBite extrahiert und in eine eigene PureBasic-Executable kompiliert (eine sogenannte CGI-EXE), die dann auf dem Server ausgeführt wird. Hierbei steht im ServerCode-Block der gesamte PureBasic-Befehlsvorrat zur Verfügung.
Wichtig ist, dass die auszuführende Prozedur als ProcedureDLL() angegeben wird. Somit ist sie clientseitig aufrufbar.
Neben der Möglichkeit, PureBasic-CGI zu erstellen stehen auch Blockbereiche für PHP, ASP und ASPX zur Verfügung. Ein Beispiel für PHP:
Die PHP-Befehle werden hier durch ein führendes Ausrufezeichen markiert.
Es ist möglich unterschiedliche Blockbereiche in einem Source zu nutzen (hier: PbCgi und PHP):
Weitere Informationen entnehmt Ihr bitte der Dokumentation auf: https://github.com/spiderbytes/SpiderBite
Have fun ... Peter
// Edit: Beitrag auf wesentliche Sachen gekürzt. Wer mehr wissen möchte, schaut sich den GitHub-Link an.
// Edit2: Codebeispiele angepasst, da ab der Version vom 01.10.2017 zwischen öffentlichen und privaten Prozeduren unterschieden wird.
Die aktuellen Sourcen und die Dokumentation befindet sich auf: https://github.com/spiderbytes/SpiderBite
Was ist das hier?
SpiderBite ist ein Präprozessor für SpiderBasic, der es ermöglicht, in einem Code Bereiche zu markieren, die auf dem WebServer ausgeführt werden (der sogenannte ServerCode (PB2Web-User werden es kennen )).
Wie bekannt ist, kann und darf der von SpiderBasic generierte Code nicht direkt auf die Hardware des WebServers zugreifen. Somit ist es nicht möglich, direkte Datenbankabfragen, Filesystemzugriffe oder sonstiges aus SpiderBasic auszuführen. Die bisherige Vorgehensweise ist es, eine serverseitige Komponente zu programmieren (sei es als CGI oder PHP- (ASP-, Python-, ...) Script) und diese Komponente dann in SpiderBasic mittels HttpRequest() aufzurufen. Das funktioniert eigentlich ganz gut, ist aber meines Erachtens nicht besonders komfortabel. Aus diesem Grund habe ich mich entschlossen, SpiderBite zu entwickeln.
Ein simples Beispiel
Code: Alles auswählen
EnablePbCgi
; der Code in diesem Block wird auf dem Server ausgeführt
ProcedureDLL.s myPbCgiProcedure()
ProcedureReturn "Hello from myPbCgiProcedure"
EndProcedure
DisablePbCgi
Debug myPbCgiProcedure()
Wichtig ist, dass die auszuführende Prozedur als ProcedureDLL() angegeben wird. Somit ist sie clientseitig aufrufbar.
Neben der Möglichkeit, PureBasic-CGI zu erstellen stehen auch Blockbereiche für PHP, ASP und ASPX zur Verfügung. Ein Beispiel für PHP:
Code: Alles auswählen
EnablePHP
ProcedureDLL myPhpProcedure()
! return "Hello from myPhpProcedure";
EndProcedure
DisablePHP
Debug myPhpProcedure()
Es ist möglich unterschiedliche Blockbereiche in einem Source zu nutzen (hier: PbCgi und PHP):
Code: Alles auswählen
EnablePbCgi
ProcedureDLL.s myPbCgiProcedure()
ProcedureReturn "Hello from myPbCgiProcedure"
EndProcedure
DisablePbCgi
EnablePHP
ProcedureDLL.s myPhpProcedure()
! return "Hello from myPhpProcedure";
EndProcedure
DisablePHP
Debug myPbCgiProcedure()
Debug myPhpProcedure()
Have fun ... Peter
// Edit: Beitrag auf wesentliche Sachen gekürzt. Wer mehr wissen möchte, schaut sich den GitHub-Link an.
// Edit2: Codebeispiele angepasst, da ab der Version vom 01.10.2017 zwischen öffentlichen und privaten Prozeduren unterschieden wird.