![]() |
Daraja HTTP Framework für Object Pascal
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:
Konfiguration
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; Um von der neuen Klasse nur Anfragen auf die URL ![]()
Delphi-Quellcode:
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.
Context := TdjWebAppContext.Create('example');
Context.Add(THelloPage, '/hello.html'); 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: ![]() Quelltext auf GitHub: ![]() "Getting Started" PDF ![]() API Dokumentation: ![]() |
AW: Web Component Server Framework für Delphi Webanwendungen
Liste der Anhänge anzeigen (Anzahl: 2)
Die erste und noch relativ kleine Demoversion "Kitchen Sink" des Web Component Server Frameworks ist nun erhältlich.
Weitere Informationen und Screenshots im Blog (Englisch): ![]() |
AW: Web Component Server Framework für Delphi Webanwendungen
werde das Projekt mal weiter verfolgen...
Grüße // Martin |
AW: Web Component Server Framework für Delphi Webanwendungen
...jupp ich auch
|
AW: Web Component Framework für Delphi Webanwendungen
Eine neue Demoversion ist erschienen. Sie zeigt weitere Features, darunter die Verwendung des integrierten Log4D Logging Frameworks aus einer Web Component heraus.
![]() Da innerhalb des Servers mehrere 'Kontexte' gleichzeitig ausgeführt werden können (zum Beispiel Seiten zum Thema Delphi unter ![]() ![]()
Delphi-Quellcode:
Vom Framework wird je Kontext ein Log4D Logger angelegt, der über die Konfigurationsdatei config\log4d.props getrennt konfiguriert werden kann. Damit läßt sich zum Beispiel eine getrennte Logdatei je Kontext erzeugen.
procedure TLoggingWebComponent.OnGet(Request: TIdHTTPRequestInfo; Response: TIdHTTPResponseInfo);
begin // build the HTML response Response.ContentText := Bind('logging.html'); // messages go to logger with the same name as the context path Config.GetContext.Log('Message from TLoggingWebComponent.OnGet'); end; |
AW: Web Component Framework für Delphi Webanwendungen
...nette Demo. Gibt es denn das Framework selbst/oder Teile schon irgendwo zum probieren?
Welche Lizenz soll das dann haben? cu cg |
AW: Web Component Framework für Delphi Webanwendungen
Zitat:
![]() Eine andere Möglichkeit, den Code zu erhalten ist die Teilnahme am Beta Test, siehe (folgendes) Posting. |
AW: Web Component Framework für Delphi Webanwendungen
Liste der Anhänge anzeigen (Anzahl: 1)
![]()
Logging pro Kontext: vor allem zur Diagnose im Echtbetrieb ist es aus Performancegründen vorteilhaft, nur den zu untersuchenden Webanwendungskontext mit "Trace" Level protokollieren zu lassen, und die anderen Webanwendungen unverändert mit dem Default Level ("Info" oder "Warn"). Screenshot Screenshot der aktuellen Demo: |
AW: Web Component Framework für Delphi Webanwendungen
Neues Demo
Der Demodownload enthält jetzt drei Serverdemos und ein PDF (Getting Started): * "Kitchen Sink" Demo * Datenbank (erfordert InterBase XE Standardinstallation) * VisualMM (erfordert ActiveMQ Message Broker) Neu in der Kitchen Sink Demo: eine Ajax-Demo, in der ein Formular einen POST Request sendet, dessen Inhalt vom Server beantwortet und nicht als neue Seite, sondern innerhalb der aktuellen eingebettet wird. Neues Feature: mehrere Konnektoren (Portmapping) Ein Server kann jetzt auf mehreren Ports gleichzeitig aktiv sein. Beispiel:
Code:
Damit sind zum Beispiel gesicherte Administrationsseiten möglich, die nur auf einem bestimmten Port erreichbar sind. Über Firewalls kann man damit den Zugriff auf diese Seiten blockieren.
http://127.0.0.1:8080/public/index.html -> Konnektor A mit Kontext "public" ist auf Port 8080 erreichbar
http://127.0.0.1:7777/admin/index.html -> Konnektor B mit Kontext "admin" ist auf Port 7777 erreichbar |
AW: Web Component Framework für Delphi Webanwendungen
Unterstützung von IPv6, einfachere API
Die Unterstützung von IPv6 ist in der ersten Version des Frameworks enthalten. Es wird anhand der Doppelpunkte im Hoststring die Nutzung des IPv6 Protokolls aktiviert. Ausserdem wurde die API etwas vereinfacht, um einen Kontext und eine Web Component zu registrieren ist jetzt weniger Quelltext nötig. Hier ist das Hello World Beispiel, mit IPv6 Konnektor:
Delphi-Quellcode:
Die THelloPage Klasse ist wie folgt aufgebaut:
procedure Demo;
var Server: TdjServer; Context: TdjWebAppContext; begin Server := TdjServer.Create; try Server.AddConnector('::1'); Context := TdjWebAppContext.Create('web'); Context.Add(THelloPage, '/hello.html'); Server.Add(Context); Server.Start; ShellExecute(0, 'open', 'http://[::1]/web/hello.html', '', '', 0); WriteLn('Hit any key to terminate.'); ReadLn; finally Server.Free; end; end;
Delphi-Quellcode:
type
THelloPage = class(TdjWebComponent) public procedure OnGet(Request: TIdHTTPRequestInfo; Response: TIdHTTPResponseInfo); override; end; { THelloPage } procedure THelloPage.OnGet(Request: TIdHTTPRequestInfo; Response: TIdHTTPResponseInfo); begin Response.ContentText := 'Hello world!'; end; |
AW: Web Component Framework für Delphi Webanwendungen
RESTful Anwendungen erstellen
Version 1.1 der Habari Web Components enthält nun auch eine Web Component, auf deren Basis RESTful Anwendungen erstellt werden können. Die Konfiguration erfolgt in Delphi Code. Neben anonymen Methoden für die Requesthandler wird eine Syntax ähnlich der von Custom Attributes verwendet, um die Resource-URL und Request/Response Content-Typen zu definieren. Beispiel: dieser Konfigurationscode registriert unter der Resource-URL /<context>/hello einen Handler für HTTP GET Requests, der nur verwendet wird wenn der HTTP Request den Content-Typ "text/html" anfordert:
Delphi-Quellcode:
Weitere Informationen und Beispiele zu TdjRestfulComponent:
Path('hello');
&Produces('text/html'); GET (procedure(Request: TRequest; Response: TResponse) begin Response.ContentText := '<html>Hello world!</html>'; end); ![]() ![]() |
AW: Web Component Framework für Delphi Webanwendungen
Liste der Anhänge anzeigen (Anzahl: 2)
Neu in der kommenden Version 1.5 ist nun die Unterstützung von Free Pascal 2.6.0 im Delphi Kompatibilitätsmodus.
Eine neue, mit Free Pascal 2.6 erstellte Demoanwendung "Kitchen Sink" ist ab sofort erhältlich, auf ![]() ![]() Für registrierte Anwender ist die aktuelle Betaversion im Downloadbereich ab der kommenden Woche zum Download abrufbar. Artikel (englischsprachig) im Free Pascal Forum: ![]() Das Logging Framework Log4D wird auch von der Free Pascal Version unterstützt. Die TdjRestFulWebComponent wird von der Free Pascal Version nicht unterstützt, da sie anonymen Funktionen erfordert. |
AW: Web Component Framework für Delphi + Free Pascal Webanwendungen
Version 1.5 erschienen - mit Free Pascal Unterstützung (Windows)
Die Version 1.5 enthält Unterstützung für Free Pascal 2.6 (Windows Plattform). Der gleiche Quellcode kann damit für die Erstellung von HTTP (Web Server) Anwendungen in beiden Umgebungen verwendet werden. Free Pascal 2.6 ist aufgrund des Einsatzes von Generics erforderlich. Auch wurde der Preis der Single Developer License gesenkt. |
AW: Web Component Framework für Delphi + Free Pascal Webanwendungen
Version 1.5.1 der
![]()
Neu in der "Kitchen Sink" Demo:
|
AW: Web Component Framework für Delphi + Free Pascal Webanwendungen
Liste der Anhänge anzeigen (Anzahl: 1)
Neu in der kommenden Version 2.0 der Habari Web Components:
Mobile Web App Demo Die 'Flightplan' Demoanwendung zeigt eine für Smartphones gestaltete Anwendung zur Auswahl eines Fluges nach Auswahl des Abflugs- und Zielflughafens. Der angehängte Screenshot zeigt die App in einem normalen Webbrowser. Sie wurde komplett ohne Einsatz von Sessions realisiert, was den Speicherbedarf bei vielen gleichzeitigen Nutzern minimiert. ReCAPTCHA Demo Eine funktionsfähinge Implementierung zur Zugriff auf die ![]() Sonstiges Verbesserte Unterstützung für Free Pascal |
AW: Web Framework für Win + Linux Web Anwendungen
Liste der Anhänge anzeigen (Anzahl: 1)
Neu in der kommenden Version 2.0:
Linux Unterstützung (Free Pascal 2.6 / Indy 10.5.9) Der Screenshot zeigt die Kitchensink Demo auf Ubuntu 12.04. |
AW: Indy basiertes Web Framework für Delphi u. Free Pascal
Version 2.1 enthält unter anderem diese neuen Funktionen:
* HTTP keep-alive: durch Wiederverwendung der geöffneten Netzwerkverbindungen ist ein höherer Durchsatz (Requests pro Sekunde) möglich, bei 50 Clients über 1400 Requests pro Sekunde - getestet auf einem Mobile Core 2 Duo mit 2.1 GHz, Client und Server auf gleichem System, 50% CPU Last * WebSocket: experimentelle WebSocket Unterstützung basierend auf Code von André Mussche ( ![]() * API Dokumentation erstellt mit doxygen Version 1.8.2 * Getestet mit Indy 10.5.9 r 4877 * Bootstrap aktualisiert auf 2.2.1 Die Demoversion und die vollständigen Release Notes der Version 2.1 (Englisch) sind auf CodeCentral: ![]() p.s.: 50 Euro Discount ist noch bis Ende 2012 erhältlich. Home Page: ![]() |
AW: Indy basiertes Web Framework für Delphi u. Free Pascal
Liste der Anhänge anzeigen (Anzahl: 1)
Die kommende Version 2.2 der Habari Web Components enthält verbesserte Linux-Unterstützung.
Eine Live Demo der Version 2.2 ist im Internet unter der Adresse ![]() erreichbar, in dem unter anderem Ajax (jQuery), HTML5 Formulare mit Multidateiupload, und dynamische QRCode Erzeugung gezeigt werden. Die Live Demo wurde mit Lazarus 1.0.4 / Free Pascal 2.6.0 erstellt und läuft auf Ubuntu 12.04. |
AW: Indy basiertes Web Framework für Delphi u. Free Pascal
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.
|
AW: Indy basiertes Web Framework für Delphi u. Free Pascal
Zitat:
|
AW: Indy basiertes Web Framework für Delphi u. Free Pascal
Zitat:
|
AW: Indy basiertes Web Framework für Delphi u. Free Pascal
Zitat:
|
AW: Indy basiertes Web Framework für Delphi u. Free Pascal
Liste der Anhänge anzeigen (Anzahl: 1)
Die
![]() ![]() Die Demoanwendung ist auch für die Windows Plattform als "offline" Webserver ![]() Neu hinzugekommen in dieser Demo ist die Möglichkeit, Request Statistiken darzustellen, die von einer Instanz der Klasse ![]() ![]() ![]() Direkter Link zur aktuellen Request-Statistik: ![]() Das final release 2.2 wird in Kürze erscheinen. (Die Linux Plattform wird darin aber noch nicht "offiziell" unterstützt). |
AW: Web Application Framework für Delphi und Free Pascal
Liste der Anhänge anzeigen (Anzahl: 1)
Das Habari Web Framework ist nun in Version 2.2 erschienen.
Neu hinzugekommen im ![]() ![]() Neu ist ferner eine Demo für " ![]() ![]() Die Online Demo ist nun an dieser Adresse erreichbar: ![]() |
AW: Web Application Framework für Delphi und Free Pascal
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: ![]() Online-Demo: ![]() Android Demo: ![]() |
AW: Web Application Framework für Delphi und Free Pascal
Version 2.5 der
![]() * Unterstützung von Free Pascal "mixed mode" Quelltexten * NCSA Logger auch unter Linux verwendbar * ![]() ![]() ![]() * Zusätzliche ![]() * 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" ( ![]() * Flight Plan (jQuery mobile) * ReCaptcha Download: ![]() oder ![]() Die mit ![]() ![]() |
AW: Web Application Framework für Delphi und Free Pascal
In der am 2. Mai erschienenen Version 2.8 der
![]() 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:
Die "Flightplan" Beispielanwendung wurde auf Version 1.4.2 des ![]() |
AW: HTTP Server Framework für Delphi und Free Pascal
Das HTTP Server Framework ist auf GitHub umgezogen und wird unter dem neuen Namen "Daraja Framework" als Open Source weiterentwickelt:
Projekt: ![]() Quelltext und Wiki auf GitHub: ![]() "Getting Started" PDF ![]() API Dokumentation: ![]() |
AW: HTTP Server Framework für Delphi und Free Pascal
Zitat:
|
AW: HTTP Server Framework für Delphi und Free Pascal
Zitat:
|
AW: HTTP Server Framework für Object Pascal - nun auf GitHub
...sehr schön. Ich setze den Vorgänger (Habari Web Components) schon länger kommerziell ein und kann ihn nur empfehlen! Ein Blick lohnt sich in jedem Fall und ist jetzt ja sehr "schmerzfrei" (sprich kostenlos) möglich. Da bekommt man direkt Lust mal eine kleine DEMO zusammenzuschrauben.
Danke Dir erstmal für die bisherige Arbeit! cu cg |
AW: HTTP Server Framework für Object Pascal - nun auf GitHub
Die RESTful Erweiterung des Daraja Framework ist nun als Version 2.0 auf GitHub verfügbar:
![]() Sie enthält als wesentliche Neuerung Unterstützung von Free Pascal. Da in Free Pascal Anonyme Funktionen bisher nicht unterstützt werden, muss stattdessen eine Referenz auf eine Methode übergeben werden. Beispiel: Delphi ...
Delphi-Quellcode:
...Free Pascal:
&Path('hello');
&Produces('text/html'); GET (procedure(Request: TRequest; Response: TResponse) begin Response.ContentText := '<html>Hello world!</html>'; end);
Delphi-Quellcode:
Unittests sind nun für Delphi (DUnit) und Free Pascal (FPCUnit) enthalten.
&Path('hello');
&Produces('text/html'); GET (MyGetMethod); ... procedure TMyRestComponent.MyGetMethod(Request: TRequest; Response: TResponse); begin Response.ContentText := '<html>Hello world!</html>'; end; Feedback ist wie immer herzlich willkommen. |
AW: HTTP Server Framework für Object Pascal - nun auf GitHub
Das Release Version 1.2 ist zwar schon eine Weile her, hier aber dennoch eine Zusammenfassung der Änderungen
![]() * Struktur der Unittests überarbeitet * Neue HTTP Hilfsklassen für Unittests * Die Typen TdjRequest und TdjResponse werden auch in Demoprogrammen und Unittests verwendet * Das SLF4P Logging Framework wird auch in Demoprogrammen und Unittests verwendet * Das Bootstrap Demo wurde aktualisiert * Free Pascal 2.x Support wurde entfernt, Free Pascal 3.0.2 oder neuer kann verwendet werden Allen Anwender des Frameworks wird empfohlen die neue Version zu testen und Verbesserungswünsche sind willkommen (Adresse siehe ![]() |
AW: HTTP Server Framework für Object Pascal - nun auf GitHub
Release 1.2.9 des auf Indy basierenden Open Source Frameworks ist nun erschienen.
Neu im Daraja HTTP Framework seit Version 1.2: Beispiele für Authentication und Authorization mit OpenID Connect und OAuth 2.0: * GitHub API Zugang mit OAuth 2.0 Authorization (Tutorial 10) ![]() * Google OpenID Connect Authentication (Tutorial 9) * Google API Zugang mit Zugriff auf die Google Drive API und OAuth 2.0 Authorization (Tutorial 8) ![]() * Google Sign In mit ![]() Verbesserte UTF-8 Unterstützung * Für In Free Pascal ist ein Patch enthalten mit dem das Einbinden der LazUTF8 Unit verbesserte UTF-8 Unterstützung erreicht wird (utf8helper Unit im demo/common Verzeichnis) Twitter Bootstrap Demo * Das Demoprojekt wurde auf Bottstrap 4 aktualisiert Formularbasierte Anmeldung * Tutorial 6 und 7 demonstrieren formularbasierte Anmeldung HTTPS * Demoanwendung für HTTPS (erfordert TLS Zertifikate) Die vollständigen Release Notes auf GitHub: ![]() Getting Started PDF: ![]() API Dokumentation: ![]() |
AW: HTTP Server Framework für Object Pascal - nun auf GitHub
Daraja HTTP Framework 2.6.beta.1
Das Daraja HTTP Server framework enthält in der kommenden Version 2.6 eine vieseitig verwendbare funktionale Neuerung in Form der WebFilter. Mit einem WebFilter können HTTP Request und HTTP Response vor- und nachbearbeitet werden. Einsatzbereiche für Filter sind zum Beispiel: * Prüfen, Setzen und Entfernen von HTTP Header-Parametern * Ersetzen von Texten auf oder Hinzufügen von Kopf- oder Fusszeilen * Weiterleitung auf Login-Seiten * Schreiben von Logdateien. Source Code der Version 2.6.beta.1 ist hier zu finden: ![]() Die Tests für Delphi (DUnit) und Lazarus / Free Pascal (FPCUnit) enthalten bereits einige Anwendungsbeispiele. Ein Filter, der alle Requests verarbeitet (Path /*) und an das Ende des Dokuments den Text " filtered" anhängt, wird in diesem Unittest verwendet:
Delphi-Quellcode:
Filterdefinition:
procedure TAPIConfigTests.TestCatchAllWebFilter;
var Server: TdjServer; Context: TdjWebAppContext; begin // configure Context := TdjWebAppContext.Create('web'); Context.AddWebComponent(TExamplePage, '*.txt'); Context.AddFilterWithMapping(TTestFilter, '/*'); // run Server := TdjServer.Create; try Server.Add(Context); Server.Start; CheckGETResponseEquals('example (filtered)', '/web/anypage.txt'); finally Server.Free; end; end;
Delphi-Quellcode:
TTestFilter = class(TdjWebFilter)
public procedure DoFilter(Context: TdjServerContext; Request: TdjRequest; Response: TdjResponse; const Chain: IWebFilterChain); override; end; procedure TTestFilter.DoFilter(Context: TdjServerContext; Request: TdjRequest; Response: TdjResponse; const Chain: IWebFilterChain); begin Chain.DoFilter(Context, Request, Response); Response.ContentText := Response.ContentText + ' (filtered)'; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz