AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte HTTP Server Framework für Object Pascal - nun auf GitHub
Thema durchsuchen
Ansicht
Themen-Optionen

HTTP Server Framework für Object Pascal - nun auf GitHub

Ein Thema von mjustin · begonnen am 23. Feb 2012 · letzter Beitrag vom 22. Apr 2023
Antwort Antwort
Seite 3 von 4     123 4      
mjustin
Registriert seit: 14. Apr 2008
Zur einfachen Erstellung von HTTP Webserveranwendungen zum Beispiel für kleine Web Services kann dieses Server Framework (ab Delphi 2009) und Free Pascal (2.6.0) eingesetzt werden. Es umfasst

* Basisklassen zur Requestverarbeitung: "Web Komponenten" und "Handler"
* eine HTTP Serverumgebung, basierend auf Internet Direct (Indy) 10.6
* Demoanwendungen, Unit Tests, API Dokumentation im HTML Format und eine "Getting Started" Dokumentation

Hello World! Beispiel
Für eine einfache Anwendung, die auf HTTP GET Anforderungen antworten soll, wird eine Klasse von der Basisklasse TdjWebComponent abgeleitet und darin OnGet überschrieben:

Delphi-Quellcode:
type
  THelloPage = class(TdjWebComponent)
  public
    procedure OnGet(Request: TIdHTTPRequestInfo; Response:
      TIdHTTPResponseInfo); override;
  end;

{ THelloPage }

procedure THelloPage.OnGet;
begin
  Response.ContentText := '<html>Hello world!</html>';
end;
Konfiguration
Um von der neuen Klasse nur Anfragen auf die URL http://127.0.0.1/example/hello.html zu beantworten, sind zwei Quelltextzeilen erforderlich:

Delphi-Quellcode:
    Context := TdjWebAppContext.Create('example');
    Context.Add(THelloPage, '/hello.html');
Mit dieser Anweisung wird die Klasse (THelloPage) im Kontext 'example' der absoluten URL /hello.html zugeordnet. Der 'Dateiname', hier hello.html, ist völlig frei wählbar, es gibt also keine zugeordnete hello.html Datei im Dateisystem.

Unter einem Kontext können beliebig viele Registrierungen für Klassen und ihre URI angelegt werden. Einem Server können beliebig viele Kontexte hinzugefügt werden.

Kontextbezogene statische Resourcen
Jeder Kontext hat ein eigenes Verzeichnis für statische Resourcen. Dadurch kann ein Server für jeden Kontext auch unterschiedliche CSS oder JS Dateien bereitstellen.

Projekt:
https://darajaframework.com/

Quelltext auf GitHub:
https://github.com/michaelJustin/daraja-framework

"Getting Started" PDF
https://darajaframework.com/docs/1.0...ingStarted.pdf

API Dokumentation:
https://darajaframework.com/docs/1.0/

Geändert von mjustin (22. Apr 2023 um 12:44 Uhr) Grund: Namensänderung
 
Benutzerbild von Sir Rufo
Sir Rufo

 
Delphi 10 Seattle Enterprise
 
#21
  Alt 19. Dez 2012, 11:41
Also irgendwie funktioniert die Seite mit einem aktuellen Chrome nicht. Jedesmal kommt, dass die Seite nicht angezeigt werden kann. Egal ob ich auf Show oder auf Source klicke.
Ich habe den Serverprozess neu gestartet, und teste es morgen auch mit Chrome auf Windows (FireFox/Windows und Chrome auf Android funktionierte). Vielen Dank für den Hinweis!
Irgendwie scheint es jetzt den Server komplett zerlegt zu haben ...
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#22
  Alt 19. Dez 2012, 15:56
Irgendwie scheint es jetzt den Server komplett zerlegt zu haben ...
... Ursache war ein ReadLn; bei Ausführung auf der Konsole wird damit gewartet, bis das Programm mit einer beliebigen Taste beendet wird. Sehr wahrscheinlich wurde auf dem Linux Server jetzt (unerwartet) ein Zeichen an die Standardeingabe gesendet, und das Programm damit beendet. Jetzt ist es stabil(er).
Michael Justin
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#23
  Alt 8. Jan 2013, 16:04
Die Habari Web Components - Online Demo läuft nun stabil unter Ubuntu Linux 12.04. Herzlichen Dank an Remy Lebeau für die threadsichere Implementierung der iconv Encoding Routinen in Indy 10.5.9!

Die Demoanwendung ist auch für die Windows Plattform als "offline" Webserver erhältlich (erstellt mit Delphi 2009).

Neu hinzugekommen in dieser Demo ist die Möglichkeit, Request Statistiken darzustellen, die von einer Instanz der Klasse TdjStatisticsHandler aufgezeichnet werden. TdjStatisticsHandler basiert auf TdjHandlerWrapper, mit deren Nachfahren das Decorator Entwurfmuster realisiert werden kann.

Direkter Link zur aktuellen Request-Statistik:

http://www.habariwebcomponents.de/demo/stats.html

Das final release 2.2 wird in Kürze erscheinen. (Die Linux Plattform wird darin aber noch nicht "offiziell" unterstützt).
Miniaturansicht angehängter Grafiken
screenshot-2013-01-08-16-08-35.png  
Michael Justin

Geändert von mjustin ( 8. Jan 2013 um 16:13 Uhr)
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#24
  Alt 16. Jan 2013, 20:37
Das Habari Web Framework ist nun in Version 2.2 erschienen.

Neu hinzugekommen im Offline Demo Download ist eine Demo für Long Polling. Bei Long Poling handelt es sich um eine Ajax-Technik, in der eine ständige HTTP Verbindung vom Client zum HTTP Server genutzt wird, um die Webseite nahezu verzögerungsfrei - ohne Reload - zu aktualisieren. Die Demo setzt Long Polling ein, um die aktuelle Requeststatistik (Anzahl der verarbeiteten HTTP Requests insgesamt, zusätzlich aufgeschlüsselt nach HTTP Statuscode sowie gestarteten und noch nicht beendeten Requests) laufend anzuzeigen. Datenformat zwischen Server und Client ist JSON. Der Server stellt den aktuellen Status mit einer Verzögerung von einer Sekunde bereitg, dadurch zeigen alle Clients annähernd im Sekundentakt neue Werte an.

Neu ist ferner eine Demo für "Form Based Authentication". Diese hat gegenüber "HTTP Basic Authentication" den Vorteil, dass der Anwender die Session auch gezielt - zum Beispiel durch einen Logout-Button oder Link - schliessen kann, statt den Browser neu starten zu müssen.

Die Online Demo ist nun an dieser Adresse erreichbar:

http://www.habariwebcomponents.de/demo/index.html
Miniaturansicht angehängter Grafiken
stats.png  
Michael Justin

Geändert von mjustin (16. Jan 2013 um 20:50 Uhr) Grund: Link zu Form Based Authentication und Basic Auth
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#25
  Alt 23. Apr 2013, 14:57
Die Version 2.3 des kleinen HTTP Service Frameworks ist nun erschienen und enthält als neues Feature einen Exception-Stacktrace, der im Log und auch in der Response dargestellt wird (erfordert madExcept). Bei einem auftretenden Fehler in der Webanwendung - genauer gesagt, bei der Ausführung der Service Methode einer WebComponent - wird das Programm nicht beendet. Das Debuggen und Testen wird dadurch erleichtert. Die Fehlermeldung sowie der Stacktrace sind als HTML Response zu sehen.
Neu hinzugekommen ist auch eine Beispielimplementierung des NCSA Log Formats, eines Standardformats für HTTP Server Logdateien, die sich daher auch leicht mit Tools statistisch auswerten lassen. Der Logger ist als HandlerWrapper implementiert, man kann eine bereits bestehende Anwendung um Logging erweitern indem man den Logger einfach in die Handlerchain des Servers einträgt - mit einer Zeile Code erhält man so Logging aller HTTP Anforderungen.

Homepage und Offline-Demo: http://www.habarisoft.com/habari_webcomponents.html

Online-Demo: http://www.habariwebcomponents.de/demo/index.html

Android Demo: https://play.google.com/store/apps/d...ft.webcompdemo
Michael Justin
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#26
  Alt 27. Aug 2013, 10:30
Version 2.5 der Habari Web Components bringt als Verbesserungen:

* Unterstützung von Free Pascal "mixed mode" Quelltexten
* NCSA Logger auch unter Linux verwendbar
* Bootstrap 3.0, jQuery 1.10.2, jQuery mobile 1.3.2 in den Beispielapplikationen
* Zusätzliche Dokumentation
* Getestet mit Indy 10.6 (revision 5044) und Free Pascal 2.6.2
* Pflege und Verbesserungen der Demoanwendungen

Demoanwendungen (mit Quelltext der Beispielwebkomponenten):
* "Kitchen sink" (online Version)
* Flight Plan (jQuery mobile)
* ReCaptcha

Download:

http://cc.embarcadero.com/Item/28784

oder

http://www.habarisoft.com/download/H...onentsDemo.zip

Die mit doxygen erstellte API Dokumentation der Version 2.5 ist online unter http://www.habarisoft.com/habari_web.../2.5/docs/api/ zu finden.
Michael Justin
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#27
  Alt 3. Mai 2014, 08:41
In der am 2. Mai erschienenen Version 2.8 der Habari Web Components ist jetzt die Unterstützung von Unit Tests für Lazarus / Free Pascal enthalten.

Die bereits bestehenden DUnit Tests wurden zum FPCUnit Framework kompatibel gemacht und sind über ein eigenes Lazarus-Projekt im FPCUnit GUI Testrunner ausführbar.

Weitere Veränderungen in Version 2.8:
  • neue Tutorials für die Erstellung von Webanwendungen
  • Validierung der Kontext- und Resourcemappingpfade
  • Workarounds im Log4D Framework zur Unterstützung von Free Pascal

Die "Flightplan" Beispielanwendung wurde auf Version 1.4.2 des jQuery Mobile Frameworks aktualisiert.
Michael Justin
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#28
  Alt 20. Mär 2016, 06:36
Das HTTP Server Framework ist auf GitHub umgezogen und wird unter dem neuen Namen "Daraja Framework" als Open Source weiterentwickelt:

Projekt:
https://darajaframework.com/

Quelltext und Wiki auf GitHub:
https://github.com/michaelJustin/daraja-framework

"Getting Started" PDF
DarajaFrameworkGettingStarted.pdf

API Dokumentation:
https://darajaframework.com/docs/1.0/
Michael Justin

Geändert von mjustin (20. Mär 2016 um 08:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

 
Delphi XE8 Enterprise
 
#29
  Alt 20. Mär 2016, 08:30
Der Link funktioniert nicht, gibt ein 404.
Rolf Warnecke
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#30
  Alt 20. Mär 2016, 08:35
Der Link funktioniert nicht, gibt ein 404.
Danke! Den Link habe ich korrigiert, er müsste nun den HTTP Code 200 zurückgeben
Michael Justin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz