Webinterface schreiben. Was muss man können?

Alle Fragen zur Netzwerkkommunikation
Flashbanger
Beiträge: 94
Registriert: Mi 28. Mär 2007, 22:01
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Webinterface schreiben. Was muss man können?

Beitrag von Flashbanger »

Hallo

ich will ein Webinterface schreiben, bzw einem Programm die möglichkeit geben durch ein Webinterface gesteuert zu werden, bzw eingestellt zu werden. So ähnlich wie CUPS. Ich benutze Linux Debian amd64.

So nun wollt ich mal fragen wie so ein Webinterface funktioniert.

Da hab ich so ein paar Fragen.

1. Gibts ein Tutorial?

2. Muss man PHP können?

3. Ich hab 3 HTML für Anfänger Bücher von Cornelia Nicol, sind die hilfreich?

4. Es gibt ja z.B bei LNet eine http-server-Komponente, zu der ich keine Demos finden konnte, kann man diese komponente benutzen?

Gruß Flashbanger

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

1. Keine Ahnung
2. Nö, wieso? Dein Programm muss ja diese Funktionalität leisten.
3. Du musst natürlich HTML Output in deinem Programm generieren, aber das ist wahrscheinlich nicht das grösste Problem.
4. Ich würde für einen Server eher Synapse nehmen, kenne aber lNet nicht gut.

Vor allem musst du natürlich vom HTTP Protokoll was verstehen (GET, POST) und wie man einen anständigen Server schreibt.

In den Synapse Demos gibt's ein Fragment für einen HTTP Server:
http://synapse.ararat.cz/files/synademo.zip
Den muss man aber noch kräftig erweitern.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

man schaue mal ins Wiki, sind beispiele da ist alles vorhanden. Mie n paar Zeilen Code hat man den ersten Server oder Apache Modul
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Ich bin gerade dabei, mich mit diversen Möglichkeiten für Webinterfaces bei (portierten) Delphi-Programmen zu beschäftigen. Da gibt es jede Menge unterschiedliche Ansätze für unterschiedliche Zwecke. Das Thema ist gerade unheimlich aktuell und an allen Ecken wird gebastelt.

Der modernste ist "Silverlight" von Microsoft (oder in Linux "Moonlight"). Da das .NET (bzw Mono) basiert ist, kommen FPC und Lazarus da nicht zum Zug. Aber Chrome (Delphi-Pascal für .NET und Mono) wird gerade von der Firma RemObjecs Silverlight-kompatibel gemacht.

Das schöne an Silverlight ist, dass sowohl auf dem Server als auch beim Client ein .Net (mit Chrome also Delphi-Pascal) - Programm läuft und die beiden Teile über HTTP/Browser beliebig Daten austauschen können und die Oberfläche mit XAML Delphi/Lazarus-ähnlich designed werden kann (wenn Microsoft das Visual Studio-Plugin fertig hat) und automatisch vom Server auf den Client übertragen wird.

Eine Nummer kleiner ist ASP (mit oder ohne .NET) bzw Ajax. Da läuft auf dem Client nur Java (was man aber nicht selber schreiben muss, sondern man kann ein "Framework" (z.B. von Google) benutzen).

Die kleinste Variante ist das ursprüngliche CGI. Das ist "stateless": auf dem Server läuft (ohne zusätzliche Tricks) kein Programm dauerhaft, sondern das (FPC-) Programm wird vom Webserver (z.b. Apache) nur als Kommandozeilen-Tool beim Request des Clients aufgerufen und schickt eine HTML-Seite zurück wenn es sich beendet. Wenn das Ergebnis einer User-Aktion in der nächsten User-Aktion verwendet werden soll, muss das CGI-Programm diesen "Zustand" speichern (z.B. ein einer Datenbank , einer Datei oder durch Kommunikation mit einem dauerhafter laufenden Programm).

Für das Designen einer CGI-Oberfläche gibt es einen Standard "LUA" ( http://www.keplerproject.org/cgilua ). Damit habe ich mich aber noch nicht ernsthaft beschäftigt.

Lazarus definiert eine "CGI Application", die funktioniert in der aktuellen Version aber nicht richtig (Ich habe da einen Bugreport eingereicht, der auch - zumindest teilweise - bereits bearbeitet ist.)

Besser geht es sicherlich mit "POWTILS" (freie Utilities für diesen Zweck): http://wiki.freepascal.org/Powtils .

Bei "MSEgui" (ein super-schlanken "Konkurrenz-System" zu Lazarus, das ebenfalls mit Free Pascal arbeitet ( http://homepage.bluewin.ch/msegui ) ) wird von dem "Macher" Martin Schreiber gerade "MSEifi" zusammengebaut, das die MSEgui-controls (dem was da VCL/LCL entspricht) über HTTP/Browser anbindet und auf dem Client mit einer DLL/so darstellt. (Einige Informationen dazu sind in diesem Thread in der FPC-developers' List zu finden: http://www.mail-archive.com/fpc-devel@l ... 10085.html ).

Für alle Varianten gilt: Auf dem Server läuft entweder (die "normale" Art) ein entsprechender Standard Webserver (Microsoft IIS oder z.B. Apache) oder - wenn man dern Server selber betreibt - kann man den HTTP-Server auch in Delphi oder Lazarus selber programmieren (z.B. mit Indy). Dadurch ist die Performance natürlich viel besser.


Zu den übrigen Fragen:

PHP ist eine Alternative zu einem in Pascal geschriebenen Programm. Das ist eine auf dem Server ausgeführte (und dort von einem Framework interpretierte) Sprache. Eine weitere Möglichkeit, die viele Web-Server können ist Perl.

Indy hat vermutlich den ausgefeiltesten / in Windows wahrscheinlich performantesten http-Server für Pascal-Programme (Pro Zugriff wird automatisch ein eigenen Thread aus einem Thread-Pool verwendet), ist aber sicher auch das komplexeste der Tools (Synapse und lNet kenne ich bisher noch recht wenig. Eine Alternative ist die Verwendung eines Standard-Webservers (z.B: IIE oder Apache):


-Michael

Flashbanger
Beiträge: 94
Registriert: Mi 28. Mär 2007, 22:01
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von Flashbanger »

hab dem Webserver mitlerweilse antworten beigebracht. Werde jetzt mal schaun wies weitergeht.

Gruß Flashbanger

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Flashbanger hat geschrieben:hab dem Webserver mitlerweilse antworten beigebracht.


Was genau hat Du gemacht und was tut es ?

-Michael

Flashbanger
Beiträge: 94
Registriert: Mi 28. Mär 2007, 22:01
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von Flashbanger »

Naja es gibt so eine komponente.

So :

Code: Alles auswählen

procedure TForm1.LHTTPServerComponent1Accept(aSocket: TLSocket);
begin
   aSocket.SendMessage('hallo Browser');
   aSocket.Disconnect;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  LHttpServerComponent1.Listen;
end;
 
procedure TForm1.LHTTPServerComponent1Access(AMessage: string);
begin
   showmessage(AMessage);
end;


Greift man nun mit einem Browser auf http://localhost:XXXX" zu dann bekommt man ein Hallo.Browser.

Das wars schon. Irgendwie konnte man auch noch herausfinden wer auf einen Zugreift. Dann hat man bei mir irgendwas mit Mozilla-Webbrowser@Linux heruasbekommen, sowie die IP adresse.

Gruß Flashbanger

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Einen WebServer ist recht Interessant. ich selbst habe es versucht. Meiner konnte PHP Dateien schon parsen. Allerdings hatte ich Probleme bei perl. könntest du, wenn deiner Perl kann mir sagen wie du das hinbekommen hast ?

Ich meine bei perl war das so, das perl nur seine Dateien parsen kann aber nicht eingebettet Code.
oder geht das gar nicht bei Perl ?

bei PHP kann man ja auch in einer HTML Datei unterbringen.

Wie machst du das mit den "anderen sachen" ? Wie Java , Audio und Grafik Dateien.
Flasch ?

was gibt es noch ? ich glaube CSS wird doch direkt vom Browser ausgeführt aber CGI ?
MFG
Michael Springwald

Flashbanger
Beiträge: 94
Registriert: Mi 28. Mär 2007, 22:01
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von Flashbanger »

Nun ja mein Server kann bisher nur html. Aber ich denke um dem Server z.b Audiostreaming beizubringen muss man einen externen Audio-Stream-Server starten. Dann musst du den Audiostream als Link ins html einbinden. Wenn der Browser dann drauf klickt sollte er dass tun, was bei ihm als standart-Audio-Stream-Wiedergabeprogramm eingestellt ist starten.

Von PHP hab ich keine ahnung auch net von Pearl.

Gruß Flashbanger

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich leider auch nicht. Aber trozdem sollte ein Webserver so was können.

Das Ziel könnte z.b. sein ein PHP BB Forum local mit dem eigenen WebServer zu betreiben.
MFG
Michael Springwald

Flashbanger
Beiträge: 94
Registriert: Mi 28. Mär 2007, 22:01
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von Flashbanger »

Ich schreib ja auch keinen Webserver sondern ein Webinterface. Ich will damit keine Webseiten oder dienste Onlinestellen sondern einstellungen an einer Software vornehmen ohne ein Framework verwenden zu müssen. Es gibt Software, die auf einem 80386 laufen, aber die man über textdateien einstellen muss, weil unter einem 386er kaum ein X-Server läuft.

Für andere Fälle gibts ja Apache u Andere.

Gruß Flashbanger

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Indy soll mit Lazarus funktionieren. (Ich hab's nicht ausprobiert.) Da ist eine komplette HTTP-Server Komponente d'rin.

-Michael

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ach so, dann habe ich es falsch verstanden !
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Indy ist sehr unfelxibel und bugverseucht und funktioniert unter lazarus noch schlechter als unter delphi. LNet und Synapse bieteten auch WebServer an.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Christian hat geschrieben:Indy ist sehr unfelxibel und bugverseucht und funktioniert unter lazarus noch schlechter als unter delphi. LNet und Synapse bieteten auch WebServer an.

Gut, aber für Indy gibt es eine Dokumentation, man kann es also zumindest ausprobieren. Für lnet habe ich nichts gefunden außer einem Klassendiagramm.

-Michael

Antworten