Hallo Zusammen, ich arbeite an einem kleinen Programm, das ich in C# (Visual Studio 2010 Ultimate) schreibe. Bislang habe ich das Hauptprogramm und die GUI in einem Programm. Der Artikel "Linux ist nicht Windows" aus dem Embedded Projects Journal Ausgabe 5 hat mich allerdings auf die Idee gebracht, das Programm selbst von der GUI zu trennen. Momentan habe ich aber noch keine Vorstellung, wie ich das am Besten bewerkstellige. Vielleicht hat jemand Tipps oder Informationsquelle hierfuer. Vielen Dank schon mal im Vorraus Mathias
Hallo, such mal nach IPC (inter-process communication). Gruss, Tobi
Mathias B. schrieb: > Der Artikel "Linux ist nicht Windows" aus dem Embedded Projects Journal > Ausgabe 5 hat mich allerdings auf die Idee gebracht, das Programm selbst > von der GUI zu trennen. Hervorragende Idee! > Momentan habe ich aber noch keine Vorstellung, wie ich das am Besten > bewerkstellige. Was tut das Programm denn? Kleines Brainstorming: In der *nix-Welt gibt es da eine Vielzahl von Varianten. Schau dir K3B an, das Brennprogramm für KDE: Das ist im Wesentlichen eine GUI für eine ganze Reihe von Programmen (Image erstellen, brennen, Transkodieren, Vergleichen). Teilweise wird schlicht die Standardausgabe dieser Programme aufgefangen und verarbeitet (cdrdao), andere brauchen garkeine Ausgabe, sondern nur Eingaben (geht dann bequem mit Kommandozeilenschaltern). Du müsstest klären, was und in welcher Art zu zwischen Programm und GUI kommunizieren musst. Vielleicht ist die Trennung ja doch garkeine so gute Idee. Wenn als Backend nachher ein Programm zurückbleibt, welches nur etwas Datei-I/O macht, wars halt der falsche Weg. Auch sollte es nicht dazu führen, dass du redundanten Code programmierst, denn daran scheitert es oft. Das passiert zum Beispiel, wenn man umfangreiche Eingabemasken auslagert. Einerseits muss das Backend immer noch robust sein, denn man soll es ja auch ohne GUI verwenden können. Andrerseits soll die GUI auch interaktiv sein und nicht erst beim Abschicken Eingabefehler finden. Manche Programme bieten auch einen Schalter an, um die Ausgaben in einer Art zu erzeugen, die leicht wieder von Programmen geparst werden kann. Bei anderen Projekten liegt der Programmkern in einer Programmbibliothek. Dann gibt es eben zwei UI dafür, eines mit Klickibunti (GUI) und eines für die Konsole (CLI, command line interface). Du könntest auch, wie Tobi schon schreibt, klassisch IPC nehmen. Das ist unter Windows zugegebenermaßen manchmal ätzend. Unter Unix mach ich ein Socket auf und gut ist. Das erfordert dann aber wieder ein Kommunikationsprotokoll...
Hallo Tobi und Sven, ich habe mir in letzter Zeit immer wieder Gedanken ueber das Trennen der GUI von der Anwendung gemacht. Ich bin dann zu dem Entschluss gekommen, dass es in meinem Fall eher keine Sinn macht die beiden Teile zu trennen. Mein Programm ist hierfuer einfach zu klein. Trotzdem vielen Dank fuer eure Tipps! Mathias
Eine ganz andere Möglichkeit ist auch, die Funktionalität in eine Bibliothek auszulagern, für die du dann ein Kommandozeilen- und ein GUI-Frontend schreibst.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.