Was ist eine nicht domänenneutrale Assembly AppDomain

12/08/2008 - 08:57 von Michael Burkhardt | Report spam
Ich versuche eine AppDomain zu erzeugen die eine Assambly DLL làdt und aus
der darin enthaltenen Klasse eine Methode aufruft. Danach die Assembly
entlàdt und ich ohne die "AppDomainHost.exe" zu beenden die Assembly.dll
löschen kann. Ich habe diese Frage schon einmal àhnlich gestellt.
Nun habe ich in einem Artikel gelesen das es "nicht domànenneutrale
Assemblys"
gibt die gelöscht werden können. Aber leider steht dort kein Quellcode oder
ein hinweis was das sein soll!
Vielleicht kann mir hier jemand diese Frage beantworten!

Mit freundlichen Grüßen
Michael
 

Lesen sie die antworten

#1 Frank Dzaebel
12/08/2008 - 13:43 | Warnen spam
Hallo Michael,

Nun habe ich in einem Artikel gelesen das es "nicht domànenneutrale
Assemblys" gibt die gelöscht werden können. Aber leider steht
dort kein Quellcode oder ein hinweis was das sein soll!
Vielleicht kann mir hier jemand diese Frage beantworten!



Die Leistung von Assemblies kann durch domànenneutrales
Laden verbessert werden. Wenn eine Assembly in eine
separate Anwendungsdomàne geladen wird, werden Aufrufe
zwischen dem Host und der Assembly von der Pipeline über
die Grenze der Anwendungsdomàne hinweg gemarshallt.
Die Leistung dieser domànenübergreifenden Aufrufe wird
erheblich verbessert, wenn die Assembly, die den Vertrag
enthàlt, als domànenneutral geladen wird.
Normal nimmt man "Assembly.Load()" dafür, denn
"Assembly.LoadFrom()" kann die Assembly nicht
domànenneutral laden.

Wende für verwaltete Anwendungen das LoaderOptimization-
Attribut auf die Einstiegspunktmethode für den Prozess an,
und gib ihr einen Wert aus der dazugehörigen
LoaderOptimization-Enumeration. Gib für nicht
verwaltete Anwendungen, beim Aufrufen der
CorBindToRuntimeEx-Methode das entsprechende Flag an.

Für das verwaltetete domànenneutrale Laden über das
LoaderOptimization-Attribut hier ein paar Referenzen:

SingleDomain:
Keine Assembly wird als domànenneutral geladen.

MultiDomain:
Alle Assemblys werden als domànenneutral geladen.

MultiDomainHost:
Alle Assemblys mit starkem Namen werden als
domànenneutral geladen.

Die LoaderOptimization steuert, ob Assemblys domànenneutral geladen
werden. Durch das domànenneutrale Laden von Assemblys können
der JIT-kompilierte Assemblercode und schreibgeschützte
Datenstrukturen
der CLR für alle Anwendungsdomànen innerhalb
eines Prozesses freigegeben werden.

______________________________
[Anwendungsdomànen und Assemblys]
http://msdn.microsoft.com/de-de/lib...c4hhs.aspx

[LoaderOptimization-Enumeration (System)]
http://msdn.microsoft.com/de-de/lib...ation.aspx

[AppDomain-Klasse (System)]
http://msdn.microsoft.com/de-de/lib...omain.aspx

[Laden der Common Language Runtime in einen Prozess]
http://msdn.microsoft.com/de-de/lib...18c6x.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen