![]() |
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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