Vorteile von Assemblys
Assemblys werden entworfen, um die Bereitstellung von Anwendungen zu erleichtern und Versionsprobleme zu beheben, die bei Anwendungen auf Komponentenbasis auftreten können.
Durch die Verbreitung von Systemen auf Komponentenbasis ist das Auftreten von Versions- und Bereitstellungsproblemen sowohl Endbenutzern als auch Entwicklern bekannt. Einige Endbenutzern haben die unangenehme Erfahrung gemacht, dass eine vorhandene Anwendung nach dem Installieren einer neuen Anwendung auf einmal nicht mehr funktionierte. Viele Entwickler haben zahllose Stunden damit verbracht, alle relevanten Registrierungseinträge konsistent zu halten, um eine COM-Klasse zu aktivieren.
In .NET Framework konnte eine Vielzahl von Bereitstellungsproblemen durch die Verwendung von Assemblys behoben werden. Da Assemblys selbstbeschreibende, von Registrierungseinträgen unabhängige Komponenten sind, ermöglichen sie das Installieren von Anwendungen ohne unerwünschte Auswirkungen. Assemblys vereinfachen außerdem das Deinstallieren und Replizieren von Anwendungen.
Versionsprobleme
Derzeit treten zwei Versionsprobleme mit Win32-Anwendungen auf:
Versionsregeln können zwischen Teilen einer Anwendung nicht ausgedrückt und vom Betriebssystem nicht erzwungen werden. Beim aktuellen Ansatz wird von Abwärtskompatibilität ausgegangen, die jedoch nicht immer gewährleistet werden kann. Schnittstellendefinitionen müssen nach der Veröffentlichung statisch sein, und ein einzelner Code muss die Abwärtskompatibilität mit früheren Versionen aufrechterhalten. Code ist außerdem meist so entworfen, dass immer nur eine Version dessen gleichzeitig auf einem Computer installiert sein und ausgeführt werden kann.
Es gibt keine Möglichkeit, die Konsistenz zwischen Komponentengruppen, die zusammen erstellt wurden, und der Gruppe aufrechtzuerhalten, die zur Laufzeit vorhanden ist.
Aus dem gleichzeitigen Auftreten dieser beiden Versionsprobleme ergeben sich DLL-Konflikte. Diese bestehen darin, dass eine vorhandene Anwendung durch das Installieren einer neuen Anwendung beschädigt wird, da eine bestimmte Softwarekomponente oder DLL installiert wird, die nicht vollständig abwärtskompatibel mit einer früheren Version ist. In dieser Situation stellt das System keine Unterstützung für die Diagnose und die Behebung des Problems bereit.
Das Ende der DLL-Konflikte
In Microsoft® Windows® 2000 wurden diese Probleme erstmals vollständig berücksichtigt. Es enthält zwei Funktionen, mit denen DLL-Konflikte teilweise behoben werden können:
Unter Windows 2000 können Sie Clientanwendungen erstellen, bei denen die abhängigen DLL-Dateien in demselben Verzeichnis gespeichert sind wie die EXE-Datei der Anwendung. Windows 2000 kann so konfiguriert werden, dass zunächst in dem Verzeichnis mit der EXE-Datei nach einer Komponente gesucht wird, bevor der vollständig gekennzeichnete Pfad oder der normale Pfad durchsucht werden. Daher können Komponenten von Komponenten unabhängig sein, die von anderen Anwendungen installiert und verwendet werden.
Unter Windows 2000 werden Dateien, die zum Lieferumfang des Betriebssystems gehören, im Verzeichnis System32 gesperrt, sodass diese Dateien beim Installieren von Anwendungen nicht versehentlich überschrieben werden.
Die Common Language Runtime stellt einen weiteren Schritt zur vollständigen Behebung von DLL-Konflikten bereit, indem sie diese Entwicklung durch die Verwendung von Assemblys fortführt.
Die Assemblylösung
In der Common Language Runtime werden Assemblys verwendet, um Versionsprobleme sowie die anderen Probleme zu beheben, die zu DLL-Konflikten führen. Assemblys unterstützen dabei folgende Aufgaben:
Sie ermöglichen es Entwicklern, Versionsregeln zwischen verschiedenen Softwarekomponenten anzugeben.
Sie stellen die Infrastruktur bereit, mit der Versionsregeln erzwungen werden können.
Sie stellen eine Infrastruktur bereit, die es ermöglicht, mehrere Versionen einer Komponente gleichzeitig auszuführen (die so genannte parallele Ausführung).