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
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#11

AW: WebServer

  Alt 26. Okt 2022, 17:26
Für Windows eigentlich WAMP ... hieß es mal, aber XAMPP ist dennoch gut.
Und sowieso installiert man sich natürlich den IIS.


Vor Jahren mal eine App in den Fingern gehabt ... finde sie nicht mehr ... irgendwas mit Me oder We oder
Egal, war sowas wie USBWebServer oder Server2Go ... halt eine Eierlegendewollmilchsauapp, wo Webbrowser, PHP und MySQL integriert waren ... eine EXE ohne Installation, z.B. für Dinge auf CD oder USB.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: WebServer

  Alt 26. Okt 2022, 19:52
habe aber einfach Lust was mit Delphi zu machen.
Das kenne ich
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#13

AW: WebServer

  Alt 26. Okt 2022, 20:31
Ok, ich weiss: Eigentlich sollte man doch bitteschön was "Docker"-mäßiges Verwenden, das ist ja sooo cool.
Eigentlich ein bissel offtopic, daher nur ganz am Rande:
Docker benutzt man nicht weil es cool ist, sondern weil es als Werkzeug für das richtige Problem angewendet echt saumäßig viel Arbeit (und damit Geld) und vor allem auch Betriebskosten einsparen kann. Das ist eher was für größere Businesses die aktuell im Betrieb mit zig VM's hantieren und wo da Patch-Management und Rollouts etc. echt kompliziert und teuer werden.
Und als Entwicklungs-Plattform für jemanden der mit vielen unterschiedlichen Kunden-Umgebungen arbeiten muss (wie z.B. für mich ) ist es auch klasse, weil ich da einfach für jeden Kunden die entsprechende SQL-Server oder Oracle-Version mit den Daten isoliert in einem Container liegen habe, und das nur mit einem Kommando hochfahren brauche wenn ich mal auf dem Projekt bin.

Wieder on-topic @Lucy:
Ein Webserver ist vielleicht nicht gerade das einfachste Projekt das man sich vorstellen kann. Vor allem nicht, wenn man ihn wirklich auf der Ebene implementieren möchte (okay, es geht natürlich noch tiefer, aber das wäre dann echt erstmal die komplette HTTP-Spezifikation durchimplementieren).

Delphi als Entwicklungsplattform hat, genau wie andere Toolsets, eine gewisse Abstraktionshöhe von der bare-metal Technik. Es macht einen Entwickler bei GUI-Anwendungen super-produktiv. Deswegen würde man in aller Regel auch z.B. keine Low-Level Treiber in Delphi schreiben sondern eher in C/C++ oder moderner in Rust oder Go.
Genauso würde man sich in C/C++ aber eher die Finger wundschreiben wenn es um Webserver oder APIs geht. Dort sind dann die Abstraktionsschickten in Rust oder Go wiederum vorhanden oder man greift zu .NET (oder Java... brrr), weil dort die vorhandenen Netzwerk-Geschichten schon so geil sind das man hier super-Produktiv ist.

Das Beispiel mit dem vollständigen Webserver (inkl. CSS, JS, Bildern, Videos, Binärformaten etc.) ist in modernem .NET 7 vermutlich irgendwas zwischen 3 und 5 Zeilen. Also wirklich Komplett, Production-Ready und sicher im Internet zu betreiben. Das kann man dann auf Linux, Windows, macOS betreiben und mit einem Dockerfile dazu auch unmittelbar containerisieren.

Kurzum: Willst Du was mit Delphi machen, dann mache vielleicht eher was, wo Delphi wirklich das richtige Tool für ist. Wenn Du Web-Sachen bauen willst, dann nimm eher Tools die einen Entwickler dort saumäßig Produktiv machen. Und: Immer mal wieder über den Tellerrand gucken
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#14

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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: WebServer

  Alt 27. Okt 2022, 07:05
Grob gesagt: WebServer mit Delphi erstellen: Geht.
Man kann auch mit einem Hammer eine Schraube in die Wand bekommen. Die Frage ist nur, ob das das optimal geeignete Werkzeug für diese Aufgabe ist. Und wenn es schon Delphi sein muss, würde ich mich nicht selbst kasteien, sondern lieber auf entsprechende Frameworks zurückgreifen (dieses TMS-Dings, mORMot, DMVC, MARS Curiosity etc.).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
309 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: WebServer

  Alt 27. Okt 2022, 07:33
Zitat:
dieses TMS-Dings


Mit dem TMS-Dings kann man aber auch keinen PHP Interpreter ersetzen. (oder doch?)
Chris
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#17

AW: WebServer

  Alt 27. Okt 2022, 08:22
Klar kann man überall intern auch PHP aufrufen.
PHP ist diesbezüglich nichts Anderes, wie Python, PowerShell, Batch, PascalScript ........


PHP4Delphi/RadPHP (k.A. wie weit auch HTML5 Builder) war reines PHP mit JavaScript, was man im PascalStyle mit vcl-ähnlichen Komponenten nutzen konnte.

Aber wer sagt denn das es PHP sein?
Wenn man unbedingt was mit Delphi machen will, dann schreibt man den Code in der delphi-language und lässt sich davon dann HTML erzeugen/ausgeben.

Ansonsten nimmt man was Anderes, was direkt PHP kann und eben kein Delphi ... OK, abgesehn von vielleicht einem Modul (Erweiterung) im PHP-Server oder sowas wie CGI im HTTP-Server.
Nur wenn man extrem pervers masochistisch veranlagt ist, dann schreibt man seinen eigenen PHP-Interpreter.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#18

AW: WebServer

  Alt 27. Okt 2022, 10:05
Grob gesagt: WebServer mit Delphi erstellen: Geht.
Man kann auch mit einem Hammer eine Schraube in die Wand bekommen. Die Frage ist nur, ob das das optimal geeignete Werkzeug für diese Aufgabe ist. Und wenn es schon Delphi sein muss, würde ich mich nicht selbst kasteien, sondern lieber auf entsprechende Frameworks zurückgreifen (dieses TMS-Dings, mORMot, DMVC, MARS Curiosity etc.).
Es geht doch garnicht darum ein optimales Werkzeug für was auch immer zu finden, sondern darum zu versuchen, ob es geht. Zumindest verstehe ich die Aufgabenstellung im Eingangsthread so.

Und nein, wenn man's mit reinem Delphi und den Indykomponenten macht, muss man sich nicht kasteien.
Delphi-Quellcode:
     
      sFilename := Format('%s%s',['htdocs',ARequestinfo.Document]);
      if FileExists(sFilename) then
      begin
        Stream:=TFileStream.Create(sFilename, fmOpenRead or fmShareDenyWrite);
      end
      else
      begin
        Stream:=TFileStream.Create('htdocs/index.html', fmOpenRead or fmShareDenyWrite);
      end;
      // Hier muss man noch den ContentType abhängig von dem Dateityp, setzen.
      AResponseinfo.ContentType:='text/html';
      AResponseinfo.ContentStream:=Stream;
      setlength(Groesse, Stream.Size);
      Stream.Read(Groesse[1], Stream.Size);
      Memo1.Lines.Add(datetostr(date) + ' | ' + timetostr(time) + ': Client ' + ARequestinfo.RemoteIP + ' hat die Datei ' + sFilename + ' (' + inttostr(round(Stream.Size /1024)) + 'kb) angefordert.');
Damit kann man dann auch CSS, Bilder, und was sonst noch so alles auf der Festplatte rumliegt, ausliefern.

CGI-Programme ruft man mit dem TIDCGIRunner im Prinzip in der Form auf:

CGIRunner.Execute(ARequestinfo.Document,AContext,RequestInfo,ResponseInfo,Action);

Ist also auch "nur" ein Einzeiler, geht auch mit .bat, .cmd, .pl für Perl, ..., ist ähnlich simpel wie ShellExecute.

Und ja: Als professionelle Lösung nicht geeignet, aber ist die hier gefordert?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: WebServer

  Alt 27. Okt 2022, 10:50
Sorry, mir war nicht bekannt, dass man in diesem Forum nicht mehr auf alternative Lösungen verweisen darf.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#20

AW: WebServer

  Alt 27. Okt 2022, 11:02
Es ging mir nicht um alternative Lösungen sondern um
Zitat von DeddyH:
Man kann auch mit einem Hammer eine Schraube in die Wand bekommen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 09:59 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