Programmdesign: Background + GUI trennen ?

Hallo Torben,

hier ein Vorschlag für die Version 3.0 :slight_smile:

Wie wäre es, wenn man das Frontend (also die gesamte grafische Obelfläche) von der eigentlichen Funktionalität trennt und diese dann einzelnen Programme via Netzwerk miteinander “sprecen” lässt ?

Vorteile:

  • grafische Elemente beeinflussen die eigentlichen Ausspielfunktionen nicht (ist bei meiner Dualscreengrafikkarte und kurzen Jingles im AUTO-Modus ein Problem)
  • bei entsprechender Architektur wären mehrere GUIs gleichzeitig nutzbar, z.B. einer im Studio mit der Berechtigung auch Aktionen durchzuführen, einer im Aufenthaltsraum nur zum schauen
  • bei entsprechender Architektur könnte man den eigentlich wichtigen “Abspieler” auf “Serverhardware” evtl. sogar geclustered laufen lassen und hätte im Notfall sogar die Möglichkeit, ohne GUI noch im AUTO-Modus weiterzusenden
  • Wer mag und programmieren kann, kann sich ein eigenes GUI programmieren

Christoph

Prinzipiell, also von der inneren Architektur her, ist das schon vorgesehen durch die konsequente Trennung von GUI und Kontrollklassen. Allerdings ist die Kommunikation zwischen zwei Programmen über das Netzwerk natürlich immer schwieriger als wenn man direkt im Speicher auf die Klassen zugreifen kann. Außerdem sind solche Remote-Aufrufe in der Regel “stateless”, das heißt, man kann den Server (= die im Hintergrund laufende mAirList-Instanz) immer nur was fragen (“Welche Titel sind gerade in der Playlist?”) und kriegt eine Antwort, hat aber keine dauerhafte Verbindung zu den Daten.

Auf meiner persönlichen Wuschliste ist sowas aber, und mit dem bereits für mAirListCommand verwendeten RemObjects SDK auch zu realisieren. Aber es erfordert eine Menge Arbeit, und sicherlich auch etliche Anpassungen.

Torben

so was ähnliches hatte ich ja auch mal vorgeschlagen. mit den RemObjects. Also wenn das mal umgesetzt werden würde, ich wäre ein fürsprecher! Das kommt dann sehr nahe an RadioMax. Dabei geht auch alles Zentral über einen Zentralrechner auf dem die Instanzen laufen und auf die man zugriff hat. Wie bei den Windows - Terminalservern. Dabei werden die Programme zwar auf einem anderen Rechner ausgeführt können aber durch ein Login jederzeit von einem Terminal mit sehr geringen anforderungen gestartet werden. Man müsste also einen Server mit allen Soundkarten haben und diese dann nur noch streamen. Das einfachste der welt also.

Nein, das ist ganz anders als beim Windows Terminal Server. Dort machst du ja eine graphische Session auf einem anderen Rechner auf und kannst dann in dieser Programme laufen lassen. Also GUI und Logik auf dem gleichen (entfernten) Rechner.

Bei dem hier angedachten Konzept würde die “Logik” im Hintergrund auf dem Server laufen und die GUI im Vordergrund auf einem Client.

Torben