Ich arbeite an einem System, das aus einer Kette von Datentransformation Komponenten besteht. Jede dieser Komponenten führt eine sehr einfache Aufgabe für ein Objekt durch, bevor sie an die nächste Komponente in der Kette übergeben wird. Jede dieser Komponenten wird als Windows-Dienst ausgeführt. Ich habe das System auf diese Weise entwickelt, um die Wartung zu verbessern und die zukünftige Erweiterbarkeit zu unterstützen.Schnelle, effiziente Interprozessing Messaging
Im Moment übergebe ich diese Objekte zwischen den Komponenten mit Message Queuing, aber das wird schnell zu einem Problem. Es gibt wahrscheinlich Dutzende von Diensten, die ständig Nachrichtenwarteschlangen lesen und in sie schreiben. Wie ich es verstehe, werden alle Nachrichten serialisiert und auf die Festplatte geschrieben, was in meinem System, wo der Durchsatz sehr schnell ist, sehr verschwenderisch erscheint.
Gibt es noch andere etablierte Systeme, die ich für die Kommunikation zwischen den Prozessen verwenden könnte, die den Aufwand für kontinuierliche Lese- und Schreibvorgänge vermeidet?
Danke.
Ich verwende die Standardeinstellungen, so wird dies in meinem aktuellen System falsch sein. – Barg
Was bringt Sie dann dazu zu denken, dass alles auf die Festplatte geschrieben wird? –
Eine Annahme. Ich begann tatsächlich, eine Nachrichtenwarteschlangenimplementierung zu entwickeln, die so viele Objekte im Speicher speichert, bevor entschieden wird, sie auf die Platte zu schreiben (z. B. wenn der 'Ziel' Dienst offline geht). Die Objekte werden über eine Named Pipe von der Quelle an den 'Server' gesendet und vom Ziel über eine andere Named Pipe gelesen. Dies war im Durchschnitt 3x schneller als MSMQ. Ich mag es jedoch nicht, das Rad neu zu erfinden, wenn es nicht nötig ist, also habe ich auf eine bestehende Lösung gehofft, wenn es eine gibt. – Barg