Unter Linux haben viele Programme eine CLI-Version und ein GUI-Frontend. Ich habe irgendwo gelesen, dass dies der Linux-Philosophie folgt und eine gute Praxis ist. Natürlich ist es aus Entwicklersicht richtig, den GUI-Code vom eigentlichen Programm zu trennen.
Bei einem Programm, das problemlos von der Befehlszeile aus verwendet werden kann, möchte ich eine GUI für die Befehlszeilenversion erstellen. Welche Möglichkeiten habe ich hier?
Mir fallen nur 2 ein, die der GUI-Entwickler verwenden würde.
-
Aufruf des Programms mit den konfigurierten Parametern wie folgt:
system("irgendeinProgramm –Parameter1 -p2 -p3")
-
dass die CLI-Version im Servermodus mit Sockets (unix, inet, …) ausgeführt werden kann und diese Sockets zur Kommunikation mit dem „Server“ verwendet werden
Die sauberste Lösung wäre meiner Meinung nach die zweite, aber das ist nicht immer möglich, ohne die CLI-Version zu ändern.
Die eigentliche Frage ist, was der richtige Weg ist, sowohl eine CLI-Version als auch eine GUI-Version separat zu bauen?
Akzeptierte Antwort:
Ein anderer Ansatz besteht darin, Ihre Funktionalität als Bibliothek zu schreiben. Dann haben Sie eine GUI, die die Bibliothek verwendet; und eine CLI, die ebenfalls die Bibliothek verwendet. Abhängig von der Komplexität Ihrer Aufgabe kann dies die beste Lösung sein, da beide Programme unabhängig voneinander arbeiten können, ohne dass irgendeine Art von Interprozesskommunikation erforderlich ist.