Gemeinsam mit zwei Kollegen werde ich in den nächsten Monaten eine kleine Programm-Suite auf die Beine stellen. Dazu gibt es eine Hauptapplikation, welche dann bestimmte "Module" aufruft, die ihrerseits Dinge berechnen sollen. Mit "Modulen" sind hierbei eigenständige kleine Programme gemeint, die durch die Hauptapplikation synchron (d.h. die Applikation wartet, bis das jeweilige Modul seine Arbeit beendet hat) mittels Shell command gestartet werden. Die Applikation soll den Modulen dabei Daten mitgeben und wird von den Modulen auch Daten zurückerhalten.
Die Frage ist jetzt: Auf welchem Wege geben wir den Modulen ihre Daten mit? Hierbei wird es sich um Datenpakete von einigen Kilobyte Umfang handeln, ich schätze mal, maximal 1 MB. Dies wird wohl zu groß sein, um alle Daten in den Kommandozeilenstring zu quetschen. Dies hatten wir als erstes überlegt, dann aber verworfen. Aktuell schwanken wir zwischen einer Datenbank (wohl Overkill) und einer Lösung, bei der die Hauptapplikation die Daten in temporäre Dateien schreibt und dann per Kommandozeilenstring die Dateinamen übergibt. Auf ähnlichem Weg sollen auch die Ergebnisdaten zurück in die Hauptapplikation fließen.
Hm, irgendwie ist mir das noch zu unelegant. In der Windows-Welt würden mir noch die Piping-APIs einfallen (CreatePipe, PeekNamedPipe usw.), aber wir werden wohl auf C# setzen und hoffen, uns per Mono vielleicht einen Weg zur Plattformunabhängigkeit offen zu halten. Daher scheidet das aus.
Was ist Eure Ansicht? Wie würdet Ihr es machen? Habe ich was übersehen?
Die Frage ist jetzt: Auf welchem Wege geben wir den Modulen ihre Daten mit? Hierbei wird es sich um Datenpakete von einigen Kilobyte Umfang handeln, ich schätze mal, maximal 1 MB. Dies wird wohl zu groß sein, um alle Daten in den Kommandozeilenstring zu quetschen. Dies hatten wir als erstes überlegt, dann aber verworfen. Aktuell schwanken wir zwischen einer Datenbank (wohl Overkill) und einer Lösung, bei der die Hauptapplikation die Daten in temporäre Dateien schreibt und dann per Kommandozeilenstring die Dateinamen übergibt. Auf ähnlichem Weg sollen auch die Ergebnisdaten zurück in die Hauptapplikation fließen.
Hm, irgendwie ist mir das noch zu unelegant. In der Windows-Welt würden mir noch die Piping-APIs einfallen (CreatePipe, PeekNamedPipe usw.), aber wir werden wohl auf C# setzen und hoffen, uns per Mono vielleicht einen Weg zur Plattformunabhängigkeit offen zu halten. Daher scheidet das aus.
Was ist Eure Ansicht? Wie würdet Ihr es machen? Habe ich was übersehen?
Zuletzt bearbeitet: