Prozess-Prozess Kommunikation

martinpriebe

Erfahrenes Mitglied
Hi,

mal ne Hardcorefrage.

Ich möchte/will/muss eine Prozess-Prozess Kommunikation aufbauen.

Ein Prozess macht irgendwas.
Prozess sendet nun Daten an 4 Prozesse.
Von diesen 4 Prozessen bekommt er Daten zurück.

Wie kann man das realisieren ?
Ich kann keine Threads verwenden - es müssen Prozesse sein.

Zu den 4 Prozessen geht eine Bilddatei.
Zurück kommen Werte - strings, doubles, ints.
Die verwertet er dann.

Ich habe was über Windows API und WM_COPYDATA gelesen und über MailSlots.
Oder doch Remoting ?
Welche Kommunikation geht am schnellsten ?

mfg
Martin
 
Hallo Martin,

um welche Art von Anwendung handelt es sich in deinem Fall?
Soll die Prozessverarbeitung innerhalb einer Anwendung stattfinden oder innerhalb mehrerer/verteilter Anwendungen?


Gruß Konstantin
 
Also es geht um Bildverarbeitung.

Ein Prozess nimmt das Bild auf.
Nun kommt eine Verarbeitung die nicht in Threads aufgeteilt werden kann aber aufgeteilt werden muss.

Wie die Verteilung erfolgen soll ist eigentlich egal - hauptsache schnell. :)
 
Hallo,

also eine Bildverarbeitung kannst du auch in Threads durchführen, solange dies in einer Anwendung geschehen soll.
Das wäre die leichteste Lösung. Weiß nicht, ob die Verwendung von .NET-Remoting performant ist, da du die Objekte ständig serialisiert/deserialisiert.
Naja mehr Informationen über deinen Anwendungsfall würden bei der Problemlösung weiter helfen. Z.B. Findet eine Bildverarbeitung von mehreren tausend Bildern statt oder ...?
Soll dies in einem Online/Offline-Modus stattfinden?


Gruß Konstantin
 
das mit den Threads ist klar aber wir müssen hier eine Bibliothek bzw. ein OCX Objekt verwenden das nicht in Threads aufgeteilt werden kann.

der hauptprozess nimmt ein Bild online auf und teilt es in 4 Unterbilder.
Die 4 Bilder sollen möglichst parallel abgearbeitet werden.

Normalerweise kein Problem abewr wie gesagt das OCX Objekt.

Nun war die Idee da Prozesse zu verwenden.
Da könnte man 4 dieser Objekte generieren.

Hab leider noch nie etwas in der Richtung Remoting etc. gemacht.
Threadskenntnisse ja, Prozesse nein :)
 
Mein Vorschlag ist, bau die OCX-Objekte zur Laufzeit in .NET-Objekte um. Was brauchst du von den OCX-Objekten? Nur den Zustand oder nicht? Gibts die Libs öffentlich?

Gruß Konstantin
 
ne ne - nix öffentlich.
Die kosten einiges.

den Objekten kann man eine spezielle Datei geben.
Die Datei beinhaltet die Bildverarbeitung.
Nun kann ich mittels diesem Objekt Variablen und Bilder übergeben

dann sagt man nur noch start und die datei wird durch das objekt abgearbeitet.

zum schluss lese ich variablen über das Objekt aus.


mfg
Martin
 
Hi,

habe ein ähnliches Problem zu lösen. Habe ebenfalls ein Bilddokument, welches mit einer nicht multi-threading fähigen Dll verarbeitet werden soll. Trotzdem soll eine parallele Verarbeitung von mehrereb Dokumenten möglich sein.

Wie has du dein Problem gelöst? Remoting, Memeory mapped files, sockets ...?

Gruß,

Heidi
 
hi,

ich habs per Memory Mapped File gemacht.
Geht relativ einfach mit den Win APIs.
Auch recht zuverlässig.

Als Signal das etwas in die MMO geschreiben wurde nehme ich ebenfalls ein Win API.
SystemEvent.

Man muss nur die bytes des Bitmaps holen und dann in die MMO schreiben/kopieren.
Als erstes Byte würde ich aber die Größe des Datenpaketes rein legen.
Dann weiß die Gegenseite wie viele bytes geholt werden müssen.
Falls es mehrere Bilder sein können in der MMO dann braucht du noch ein paar ein paar Längenbytes zusätzlich für des Bild seperat.


Sockets und Remoting war einfach zu langsam.

falls du noch fragen hast .. stehe bereit.
mfg
Martin


P.S. ab Framework 4.0 soll es eine Memory Mapped File Klasse geben.
Dann wird es etwas "schöner" im Code.
 
Zurück