2013-11-22 10 views
5

Was ist der Unterschied zwischen statischen und dynamischen Montage. Nur die Tatsache, dass man aus einer Datei geladen werden kann und eine andere kann während des laufenden Programms erstellt werden?Arten der Montage - was ist der Unterschied

+2

Gute Frage! Einfach aber nicht viel gehandhabt! –

Antwort

6

Statische Assemblys können .NET Framework-Typen (Schnittstellen und Klassen) sowie Ressourcen für die Assembly (Bitmaps, JPEG-Dateien, Ressourcendateien usw.) enthalten. Statische Assemblys werden auf der Festplatte in tragbaren ausführbaren Dateien (PE-Dateien) gespeichert. Sie können das .NET Framework auch zum Erstellen dynamischer Assemblys verwenden, die direkt aus dem Arbeitsspeicher ausgeführt und nicht vor der Ausführung auf dem Datenträger gespeichert werden. Sie können dynamische Assemblies nach der Ausführung auf dem Datenträger speichern.

Statische Baugruppen sind jene Baugruppen, die dauerhaft auf der Festplatte gespeichert sind. Sie können .NET Framework-Klassen, Schnittstellen sowie eine Ressourcendatei enthalten. Diese Assemblys werden nicht direkt aus dem Speicher geladen, sondern direkt von der Festplatte geladen, wenn sie von CLR (Common Language RunTime) angefordert werden. Diese Assemblys wurden auf der Festplatte als Datei oder Dateigruppe gespeichert. Wenn man den C# -Code kompiliert, erhält man STATIC-Assemblies.

Dynamische Assemblies sind solche Assemblys, die nicht auf der Festplatte gespeichert werden, bevor sie tatsächlich nach der Ausführung auf der Festplatte gespeichert werden. Wenn .NET Runtime sie aufruft, werden sie direkt aus dem Speicher geladen, nicht von der Festplatte. Reflection emittiert bietet viele Möglichkeiten zum Erstellen dynamischer Assemblies bedeutet Diese werden im Speicher mit dem Namespace System.Reflection.emit erstellt. Der Namespace System.Reflection.Emit enthält Klassen, mit denen Compiler oder Tools Metadaten und MSIL (Microsoft Intermediate Language) ausgeben können Optional generieren Sie eine PE-Datei auf der Festplatte. Wenn eine Anwendung die Typen innerhalb dieser Baugruppen benötigt, werden diese dynamischen Baugruppen zur Laufzeit dynamisch erstellt.

Mit einfachen Worten lösen die statischen Baugruppen die normalen Baugruppen, mit denen wir täglich interagieren, die Last usw. auf und die dynamischen Baugruppen Erstelle es mit Reflektion und Aufruf.

Informationsquellen: http://www.dotnetheaven.com/article/static-assembly-vs-dynamic-assembly-in-csharp und MSDN

+1

ich auch nur versuchen, zu lesen und mit 'System.Reflection.Emit' zu arbeiten - kann erstellen (mit Step-bystep' Tutorial einige app - Ergebnis bekam Klasse, die von 1 von 4 Varianten verwaltet werden können - nach 'AppDomain.DefineDynamicAssembly () 'und' AssemblyBuilderAccess '- reflection, Run, RunANdSave, Save.Versuchen Sie zu speichern. Jetzt speichere ich es - hab lib (* .dll Datei), aber immer noch nicht sehen, wenn es nützlich sein kann .. – gbk

Verwandte Themen