Hallo,
ich stehe gerade vor dem Problem dass meine Applikation
als Dienst oder als GUI-Programm laufen kann.
Dann gibt es zur Steuerung noch ein XML-RPC interface oder ähnliches.
Wie verknüpfe ich jetzt am besten diese 3 Module?
Z.B. soll von der Logik nur etwas an die GUI geschickt werden,
wenn diese auch existiert.
Macht man so etwas normal direkt über Referenzen?
z.B. alle Module in einem Hauptmodul app.py referenzieren und über dieses dann darauf zugreifen.
Oder währe ein messagehandler über eine Queue besser geeignet?
Dieses stelle ich mir allerdings komplizierter vor da man sich ja für
alle Eventualitäten Messages ausdenken muss.
Designfrage: Gui und XMLRPC mit Logik verknüpfen
Warum soll sich die Logik darum kümmern? Die Funktionen sollen doch meist nur etwas berechnen und zurückgeben oder etwas verändern bzw etwas anderes aufrufen. Das können sie prima, ohne zu wissen ob eine Gui läuft.Hand hat geschrieben:Z.B. soll von der Logik nur etwas an die GUI geschickt werden,
wenn diese auch existiert.
Wenn deine Fenster bestimmte Werte anzeigen sollen, dann ruft die Gui die Funktion des Logikmoduls auf und gibt den Rückgabewert aus und nicht umgekehrt. Sollen wiederum zwei Eingabefelder aus der Gui in der Logik weiterverarbeitet werden, dann nimmt die Logik-Funktion eben zwei Argumente an. Diese Werte können dann entweder aus einem anderen Zusammenhang übergeben werden oder eben von der Gui, indem sie vorher durch die Textauslese-Funktion deines Toolkits bspw in Strings umgewandelt werden.
Mit XML-RPC kenne ich mich nicht wirklich aus, aber ich nehme an, dein drittes Modul ist nur als API beim Client gedacht. Denn großartig selbst implementieren muss man ja dank Pythons xmlrpclib anscheinend nicht. Hier können natürlich genau so die vom Server bereitgestellten Funktionen genutzt werden wie von der Gui.
Die Gui muss halt mitbekommen dass von XMLRPC was geändert wurde.
Desswegen muss von der Logik zur Gui was gesendet werden,
und da bin ich mir nicht sicher was der bessere Weg ist.
Z.b. müssen in der GUI Buttons deaktiviert werden wenn z.B. die Steuerung kurzzeitig via XMLRPC übernommen wird.
Dies soll aber nur dann passieren wenn überhaupt eine GUI existiert.
Über Referenzen -> Referenz ist eventuell nicht verhanden -> Exception.
Über eine Message Queue -> Die Message läuft einfach ins leere.
Oder verstehe ich da was falsch?
Desswegen muss von der Logik zur Gui was gesendet werden,
und da bin ich mir nicht sicher was der bessere Weg ist.
Z.b. müssen in der GUI Buttons deaktiviert werden wenn z.B. die Steuerung kurzzeitig via XMLRPC übernommen wird.
Dies soll aber nur dann passieren wenn überhaupt eine GUI existiert.
Über Referenzen -> Referenz ist eventuell nicht verhanden -> Exception.
Über eine Message Queue -> Die Message läuft einfach ins leere.
Oder verstehe ich da was falsch?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Da muss man ja generell zwischen dem Pull- Uns Push-Prinzip unterscheiden!Hand hat geschrieben:Die Gui muss halt mitbekommen dass von XMLRPC was geändert wurde.
Davor wäre es allerdings hilfreich, wie die genaue Architektur so aussieht? Soll das ganze nach dem Client-Server-prinzip aufgebaut sein? Oder handelt es sich "nur" um Interprozess-Kommunikation?
Klar, aber das kann ja nach Anfrage der "GUI" erfolgen! (Pull)Desswegen muss von der Logik zur Gui was gesendet werden,
und da bin ich mir nicht sicher was der bessere Weg ist.
Das ist aber ja "Logik", die sich innerhalb der GUI befindet - und dort ja durchaus ihre Berechtigung hat.Z.b. müssen in der GUI Buttons deaktiviert werden wenn z.B. die Steuerung kurzzeitig via XMLRPC übernommen wird.
Das führt uns vor allem zurück zur Architekturfrage ...Dies soll aber nur dann passieren wenn überhaupt eine GUI existiert.