GUI von Datenverarbeitung vollständig trenne
-
Hi,
Ich habe Folgendes Problem.
Ich habe ein Programm "P_data" geschrieben, welches Daten liefert.
Darauf möchte ich gerne eine GUI "gui_show" implementieren.
Würde "gui_show" aber gerne von "P_data" getrennt halten.
(Die GUI würde ich gerne mit wxWidgets schreiben.
Wird nichts größeres werden, nur Kleinigkeiten zur Ausgabe.)
Es soll nun so sein, dass das Programm "P_data" auch ohne "gui_show" laufen kann.
Mann soll die GUI später nachladen können bei bedarf. Auch wieder beenden, ohne dass das ganze Programm beendet werden muß.
Das Problem ist, dass die guis immer ihre eigene Main Funktion haben,.....
Also ich bräuchte ein: IMPLEMENT_APP(...) ->"main" für wxWidgets ("gui_show")
Und ein: int main (...) -> "main" für Programm ("P_data")
Damit hätte ich zwei Prozesse, wo mindestens eienr den anderen kennen müßte.
Gibts was zur Kommunikation zwischen den beiden, wo plattformunabhängig ist ??
Mit nem guten schmalen Beispiel ??
Oder ist das ganze konzept so nicht gut ???Gruß Alex
-
Gibts was zur Kommunikation zwischen den beiden, wo plattformunabhängig ist ??
Ja, Sockets.
-
Oder Sharared-Memory über einen plattformunabhängige Wrapper-Lib.
-
Müssen es denn 2 Prozesse sein?
Lass doch deine Geschäftsfunktionalität in GUI unabhängigem Code und schreib ein Passiv View (oder MVP oder andere MVC Varianten), dass du per Compiler/Laufzeit-Schalter gegen eine Konsolenausgabe oder gar keine Ausgabe austauschen kannst.
-
Danke hustbaer und Tachyon,
Das war genau das nach dem ich gesucht hatte.Zu Sockets, das ist dann einfach z.B. ne TCP/IP Verbindung nur auf dem lokalen PC ???
Habe ich das richtig verstanden ??Bei Shared Memory müßt ich ne so datei für Linux und ne DLL für windows machen mit den Selben funktionen und je nach Betriebssystem die eine oder andere einbinden ???
Wenns so ist, glaube ich dass shared Memory an der Stelle besser geeignet ist. Die sockets kommen mir aber für was anderes naoch in Sinn. Da könnte ich ja dann GUI und Daten_Programm auf verschiedenen PCs laufen lassen. Ist hier ein bisschen viel denke ich.
An brotbernd,
Ja es sollen schon zwei Prozesse sein. Denke das wird so wesentlich sauberer.Gruß
-
Guck Dir evtl. mal boost.interprocess an. Das bietet eigentlich alles, was Du brauchen solltest.