IPC Frage

29/04/2008 - 14:35 von Christian Havel | Report spam
Hi,

ich habe folgende Situation:
Eine .NET 2.0 Konsolenanwendung wird auf einem Rechner mehrfach am Tag
gestartet. Die Initialisierung ist relativ zeitaufwendig. Daher soll die
erstmalig gestartete Instanz "am Leben" bleiben, bis der Rechner beendet
wird. Die daraufhin gestarteten Instanzen sollen prüfen, ob bereits eine
Instanz existiert und in diesem Fall den Aufruf an diese weiterleiten und
sich beenden.
Ich vermute, dass hierfür IPC Remoting die geeignetste Lösung ist. Da ich
leider von .NET Remoting nur sehr wenig Ahnung habe, würde ich mich über
einen Hinweis freuen.

Christian
 

Lesen sie die antworten

#1 Kerem Gümrükcü
29/04/2008 - 15:37 | Warnen spam
Hallo Herfried,

in deinem Posting davor hast du ja von Herfried eine
gute Antwort bekommen. Ich würde wie folgt vorgehen

Daher soll die
erstmalig gestartete Instanz "am Leben" bleiben, bis der Rechner beendet
wird.



Was aber vorraussetzt, das deine erste Instanz àußerst stabil laufen muss
und auf alles vorbereitet. Die einfachste Form, den Prozess gegen allg.
Terminierung zu schützen, selbst gegen den Taskmanager oder so
Dinger wie Process Explorer/Monitor, ist die ACL des Prozesses zu
"leeren" und so den Zugriff zum terminieren auf den Prozess zu unterbinden.
Du kannst auch mit Hooks und sogar aus dem Kernel arbeiten, aber das
ist hier keine Thema.

Die daraufhin gestarteten Instanzen sollen prüfen, ob bereits eine
Instanz existiert und in diesem Fall den Aufruf an diese weiterleiten und
sich beenden.



Das làsst sich mit Mutexen (Synchronisationsprimitiven) sehr gut machen.
Hier ein Beispiel, das gleich zwei Fliegen schlàgt:

[Single Instance Application, Passing Command Line Arguments]
http://www.codeproject.com/KB/threa...onApp.aspx

Wenn mehr Daten rüber müssen, dann empfehle ich die Ansàtze
mit Sockets, SharedMemory, Pipes, an sich das, was der Herfried
sagte und was sicher andere hier auch sagen werden,...

Am àrgerlichsten ist, das ich ein sehr gewalltiges Framework mal für
solche Sachen geschrieben habe, aber es leider nicht veröffentlichen
darf, nicht mehr, da meine Firma den Code von mir übernommen
hat,...und ich mich an meine Regeln halte,...

Suche mal in Codeproject nach Informationen und Beispielen,
vielleicht auch auf der Seite von Frank und Herfried. Die haben
da auch Beispiele, die Dir helfen werden, sofern ich das richtig
in Erinnerung habe,...

Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen