2016-05-19 3 views
1

Ich arbeite an einer GUI-basierten Anwendung, die mit Python und Go entwickelt wird. Ich benutze Python (+ Kivy), um UI zu implementieren, und Go, um Middleware/Core unter Windows OS zu implementieren.Kommunikation zwischen UI und Core auf Windows-Rechner

meine Problemstellung ist:

1) Ich möchte auf Starten der Anwendung die exe des Kerns laufen und es sollte im Hintergrund bleiben, bis meine Anwendung geschlossen ist.

2) Wenn ein Ereignis von der Anwendung ausgelöst wird, wird ein Befehl an den Kern gesendet, der den Befehl auf dem entfernten Gerät ausführt und mit dem Ergebnis der Befehlsausführung zurückkehrt.

Ich möchte wissen, wie ich die Lebensdauer der exe kontrolliere und wie ich eine Kommunikation zwischen der UI und Core herstellen kann.

Irgendwelche Ideen !!

Antwort

1

Es gibt viele Möglichkeiten, wie Sie das angehen können, aber was ich empfehlen würde ist mit einem der Teile (GUI/Core) als Hauptanwendung, die alle Initialisierungen durchführt und den anderen Teil startet. Ich würde empfehlen, den Kern dafür zu verwenden.

Hier ist eine Beispielarchitektur, die Sie verwenden können, obwohl die von Ihnen gewählte Architektur stark von der Anwendung und Ihren Zielen abhängt.

Core läuft zuerst, führt Initialisierungsaktionen durch, einschließlich des Startens der GUI, richtet die Kommunikation zwischen der GUI ein (unter Verwendung von Pipes, Sockets usw.) und wartet dann auf Befehle von der GUI. Wenn die GUI das Schließen signalisiert, kann der Kern die erforderliche Bereinigung durchführen und wird dann beendet. Bei diesem Szenario wird die Lebensdauer der EXE von der GUI gesteuert (GUI sendet ein Signal an den Kern, wenn der Benutzer die Exit-Taste drückt, um den Kern wissen zu lassen, dass er beendet werden sollte)

Wenn der Kern die GUI startet, dann kann es die STDIN/STDOUT-Pipes für es einrichten und auf Befehle auf dem STDOUT warten, während Ergebnisse auf dem STDIN senden. Sie können auch den Server-Ansatz wählen, bei dem der Kern auf einen Socket wartet und die GUI Anfragen sendet und auf eine Antwort wartet. Mit dem Server-Ansatz können Sie im Gegensatz zu den seriellen Pipes eine gewisse Parallelität haben, aber ich denke, es könnte langsamer als die Pipes sein (der Unterschied ist vielleicht vernachlässigbar, aber es ist schwer zu sagen, ohne zu wissen, was genau Sie tun).

Verwandte Themen