Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   HTTP Server Framework für Object Pascal - nun auf GitHub (https://www.delphipraxis.net/166642-http-server-framework-fuer-object-pascal-nun-auf-github.html)

mjustin 23. Feb 2012 07:23


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:
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/

mjustin 26. Feb 2012 11:27

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.
  • Indexseite mit Verzeichnis der vorhandenen Web Component Beispiele
  • Einfaches HTML Formular mit GET, POSTund Redirect (gegen doppeltes Submit)
  • Anzeige des Delphi Quelltextes der Web Component direkt im Browser
  • Vollständiger Quelltext der Web Components ist enthalten
  • Verwendung statischer Resourcen (CSS und JavaScript)

Weitere Informationen und Screenshots im Blog (Englisch):

http://mikejustin.wordpress.com/web-...er-for-delphi/

mschaefer 26. Feb 2012 13:24

AW: Web Component Server Framework für Delphi Webanwendungen
 
werde das Projekt mal weiter verfolgen...

Grüße // Martin

ConstantGardener 26. Feb 2012 21:34

AW: Web Component Server Framework für Delphi Webanwendungen
 
...jupp ich auch

mjustin 6. Mär 2012 17:41

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.

http://mikejustin.wordpress.com/web-...er-for-delphi/

Da innerhalb des Servers mehrere 'Kontexte' gleichzeitig ausgeführt werden können (zum Beispiel Seiten zum Thema Delphi unter http://localhost/delphi/*.* und andere Seiten unter http://localhost/allesandere/*.*), unterstützt das Framework auch getrennte Logging-Ausgaben.
Delphi-Quellcode:
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;
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.

ConstantGardener 6. Mär 2012 20:19

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

mjustin 11. Mär 2012 06:33

AW: Web Component Framework für Delphi Webanwendungen
 
Zitat:

Zitat von ConstantGardener (Beitrag 1154869)
...nette Demo. Gibt es denn das Framework selbst/oder Teile schon irgendwo zum probieren?

Welche Lizenz soll das dann haben?

Danke für das Feeedback! Die erste Version des Web Components Server Frameworks wird im Laufe dieses Monats offiziell erscheinen. Wer schon vorher einen Code-Schnappschuss ausprobieren möchte, kann unter http://www.habarisoft.com/habari_webcomponents.html bereits eine Lizenz erhalten. Die Web Components Single Developer Lizenz gilt für die Verwendung auf beliebig vielen Servern.

Eine andere Möglichkeit, den Code zu erhalten ist die Teilnahme am Beta Test, siehe (folgendes) Posting.

mjustin 11. Mär 2012 06:58

AW: Web Component Framework für Delphi Webanwendungen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habari Web Components - Update:
  • neue Demo einschliesslich VisualMM Speichermonitoring
  • Unterstützung von Logging pro Kontext
  • neue Web Component für statische Resourcen (TdjDefaultWebComponent)
  • HTTP Session Unterstützung aktivierbar je Kontext (weniger Resourcenverbrauch, weniger Cookies)
  • komplette API Dokumentation erstellt mit doxygen
  • Lizenzen ab sofort erhältlich
  • neue Webseite


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:

mjustin 19. Mär 2012 18:47

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:
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
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.

mjustin 25. Mär 2012 11:04

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:
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;
Die THelloPage Klasse ist wie folgt aufgebaut:

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 19:54 Uhr.
Seite 1 von 4  1 23     Letzte »    

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