Laden...

Datenaustausch zwischen Programmen ohne Anlegen von Dateien?

Erstellt von DaBIGfisH vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.425 Views
D
DaBIGfisH Themenstarter:in
6 Beiträge seit 2007
vor 16 Jahren
Datenaustausch zwischen Programmen ohne Anlegen von Dateien?

Hallo!

Ich stehe vor der Herausforderung Daten vom Netzwerk (Ethernet) mit einem Konsolenprogramm (C#) zu empfangen / senden. Auf dem PC läuft weiterhin eine Simulation, die diese Daten vom Konsolenprogramm (abk: KP) bekommt, aber auch Daten fürs KP bereitstellt, welche vom KP geladen und versendet werden sollen.

Meine Idee war nun die Daten auf einer RAMDisk als Dateien zwischenzuspeichern. Also anders ausgedrückt:

HIN: Netzwerk -> KP -> RAMDisk (Datei_1) -> Simulation

ZURÜCK: Simulation -> RAMDisk (Datei_2) -> KP -> Netzwerk

Gibts denn auch andere Wege, die Datenübergabe, ohne Dateien anzulegen, zu übertragen? Sowas wie programmübergreifende Variblen?

Gruß, Matze

S
8.746 Beiträge seit 2005
vor 16 Jahren

Diese Art von Kommunikation nennt man "Inter Process Communication" (kurz IPC). Da gibts es einige Möglichkeiten, die sich nach Funktionalität, Komfort und Durchsatz unterscheiden. Unter .NET steht eigentlich nur Remoting und (Low-Level) Sockets zur Verfügung. Letzteres bietet sich natürlich an, wenn du die Daten eh aus dem Netzwerk holst.

D
DaBIGfisH Themenstarter:in
6 Beiträge seit 2007
vor 16 Jahren

Hey Danke, dass ist doch mal was, was ich nachschlagen kann! 🙂

S
8.746 Beiträge seit 2005
vor 16 Jahren

Hier mal alles, was Windows an Bord hat, im Prinzip via PInvoke alles von .NET aus nutzbar:

http://msdn2.microsoft.com/en-us/library/aa365574.aspx#base.using_pipes_for_ipc

D
DaBIGfisH Themenstarter:in
6 Beiträge seit 2007
vor 16 Jahren

Ich vermute mal, dass IPC noch ne Runde schneller ist als Dateien auf eine RAMDisk zu schreiben, oder?

476 Beiträge seit 2004
vor 16 Jahren

ja, du vermutest richtig.

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de

U
1.688 Beiträge seit 2007
vor 16 Jahren

.Net 3.5 bietet eine einfache Möglichkeit, anonyme und benannte Pipes zu benutzen: http://blogs.msdn.com/bclteam/archive/2006/12/07/introducing-pipes-justin-van-patten.aspx
Ist einfacher als über P/Invoke.

3.728 Beiträge seit 2005
vor 16 Jahren
Remoting

Hallo DaBIGfish,

du kannst schnelle Interprozesskommunikation in .NET auch mit Remoting (IPCChanel) machen. Mit Remoting kannst Du Funktionen eines anderen Prozesses über einen Kommunikationskanal aufrufen.

Du findest hier im Forum viele Informationen zu Remoting.