Kommunikation zwischen Programmen - wie am besten umsetzen?

BAGZZlash

Moderator
Teammitglied
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?
 
Zuletzt bearbeitet:
Hmm... In der Linux welt nehm ich oft das loopback device für sowas.
Das gibt's aber in Windows nicht, richtig? Somit keine Plattformunabhängigkeit.

Process.StandardInput etc. gibt's nur innerhalb .NET, richtig? Wir wollen eigentlich die Module sprachunabhängig halten, sodass Drittentwickler hier beispielsweise auch Module in C oder Python oder so schreiben können. Damit würde das auch ausscheiden, oder? Hm, das mit den temporären Dateien scheint doch der kleinste gemeinsame Nenner zu sein. Doof...
 
Zurück
Oben Unten