4 Stimmen

Was ist der zugrunde liegende Mechanismus für die Kommunikation zwischen .Net AppDomains im selben Prozess?

Mir ist klar, dass eine rationale, reflexartige Reaktion wäre: "Remoting, du Idiot! Lies die MSDN-Dokumente." Alle Informationen, die ich über .Net Remoting finden kann, stehen im Zusammenhang mit der Kommunikation zwischen Prozessen: Sockets, Shared Memory, Pipes... die Klassiker, wenn es um IPC geht, aber eine AppDomain ist nicht wirklich ein Prozess. Dennoch scheinen AppDomains die meisten Vorteile eines Prozesses zu genießen. Aus akademischer Sicht sind die IPC-Primitive des Betriebssystems schwerfällig im Vergleich zur Kommunikation zwischen Entitäten, die sich im selben Prozess befinden. Gibt es eine spezielle AppDomain Pipe, die verwendet wird, wenn die Kommunikation eine AppDomain-Grenze innerhalb desselben Prozesses überschreitet? Ich bezweifle es. Ich wäre schockiert, wenn MS die Grundlagen der Prozessisolierung im Windows-Kernel ändern würde, um AppDomains zu ermöglichen.

4voto

Two Bit Gangster Punkte 973

In diesem Fall gibt es einen schnellen Weg. Es besteht keine Notwendigkeit für eine Kommunikation zwischen den Prozessen, da die Anwendungsdomänen im selben Prozess leben und die CLR vollen Zugriff auf alle und den gesamten Adressraum hat. Es handelt sich wirklich nur um einige Markierungen im Aufrufstapel für Sicherheits- und Ausnahmebehandlungszwecke sowie um die Entladbarkeit, die Appdomains bieten.

1voto

Remus Rusanu Punkte 280155

Eine Randbemerkung zu Ihrer Frage, oder eher eine Fußnote zur Geschichte. Dies ist nicht ganz neu, COM hatte etwas ähnliche Semantik bei der Bereitstellung von Schnittstellen zwischen Threads: ein Thread würde die Schnittstelle in einen Stream mit CoMarshalInterThreadInterfaceInStream und dann würde der andere Thread die Schnittstelle aus dem Stream extrahieren, indem er CoGetInterfaceAndReleaseStream .

-1voto

JaredPar Punkte 699699

Die grundlegende Art der Kommunikation zwischen AppDomains innerhalb eines Prozesses ist in der Tat Remoting. Dadurch kann ein Objekt in einer AppDomäne leben und andere über einen transparenten Proxy in einer anderen Domäne kommunizieren lassen.

Ja, AppDomains sind nicht wirklich ein Prozess, aber man kann sie sich am besten als sehr leichtgewichtige Prozesse vorstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X