AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WebServer

Ein Thema von lucy · begonnen am 26. Okt 2022 · letzter Beitrag vom 27. Okt 2022
 
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#10

AW: WebServer

  Alt 26. Okt 2022, 21:56
Naja, einen WebServer von grundauf selbstmachen, ist ja vielleicht nicht die Vorstellung des Threaderstellers.

Aber bei den Indys ist eine HTTPServerkomponente bei, die einem das Grundgerüst eines Webservers liefert.

In früheren Zeiten, als bei den Indys (Indy 6) noch Demos dabei waren, hatten sie auch 'nen funktionsfähigen Webserver dabei. Den kann man bestimmt erstmal als Grundlage nehmen.

CGI-Programme kann man mit Hilfe des CGI Runner (zu finden bei GitHub) einbinden.

Alternativ schaue man sich bei SourceForge um. Da gibt's auch 'ne Version vom TIDCGIRunner und dazu auch noch den TIDIAspiRunner, um auch ISAPI.dlls nutzen zu können.

Ist zwar alles schon ein bisserl älter, aber als Herausforderung sicherlich geeignet.

Um dynamische HTML-Seiten, auch aus Datenbanken, zu erstellen, gibt es TPageProducer und TDataSetPageProducer, damit wird es (fast) banal einfach Datenbankinhalte per mit Delphi erstelltem WebServer an beliebige Clients zu liefern.

Ok, am Anfang hat man sicherlich etliches zu lernen, um zu verstehen, wie das Ganze funktioniert. Aber hat man den am Anfang sehr flachen Anstieg der Lernkurve hinter sich gebracht, wird es recht einfach.

Und das Schöne ist, man kann sich sogar 'nen WebServer mit 'ner Delphioberfläche erstellen. Es muss nicht zwingend ein Dienst sein, der über kryptische Konfigurationsdateien "gemanaged" wird oder nur über eine Weboberfläche zu bedienen ist, ...

Mein so erstellter Webserver funktioniert inzwischen seit fast 10 Jahren problemlos. Natürlich ist er nur für den lokalen Einsatz oder sehr kleine Netzwerken geeignet. Ab so als Hobbyprojekt, so einfach aus Neugier, ist's ausreichend.

PS.:

Der Quelltext im Eingangspost enthält übrigens alles wesentliche bereits.

Zur Erfüllung aller weiteren Wünsche, muss "nur" eine passende IF-Cascade um if ARequestinfo.Document='/then gebaut werden.

Letztlich muss für jede mögliche Anforderung an den Webserver, von Seiten der Clients, eine entsprechender IF-Zweig implementiert werden.

Im Endeffekt muss "nur" die Methode
Delphi-Quellcode:
procedure TForm1.ServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
aufgebohrt werden.

Bilder, CSS, ... kann man auf die gleiche Weise ausliefern. Datei in 'nen Stream laden und den "rausrücken".
Man braucht halt ein bisserl Gehirnschmalz und ein sinnvolles Konzept, wie man aus den in der Url angegebenen Dateinamen und Parametern auf die physikalisch auf der Festplatte vorliegende Dateien übersetzt. Sprich: Man muss die Filestruktur, die in der Url abgebildet wird, auf eine entsprechende Filestruktur auf einem Datenträger abbilden (oder umgekehrt).

Für dynamische Seiten muss man ebenfalls die Url auswerten und dann entsprechend den dort angegebenen Paramtern den dynamischen Seiteninhalt erstellen (TPageProducer, TDatSetPageProducer). Der TDataSetPageProducer produziert aus einem beliebigen Abfrageergebnis eines SQL-Statements eine HTML-Tabelle, analog zu 'nem DBGrid. Natürlich kann man sich für dynamische Webseiten Templates hinterlegen, die man dann von den beiden genannten Komponenten zur Laufzeit um einsprechende Inhalte ergänzt. Das läuft alles ereignisgesteuert, so dass man da keine Templates selbst parsen muss, um die Inhalte an die passende Stelle zu bekommen.

Grob gesagt: WebServer mit Delphi erstellen: Geht.
  Mit Zitat antworten Zitat
 


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 22:23 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