Richtlinien für die Erstellung von Anwendungen und Komponenten für die parallele Ausführung
Aktualisiert: November 2007
Beachten Sie folgende allgemeine Richtlinien beim Erstellen von verwalteten Anwendungen oder Komponenten, die für die parallele Ausführung entworfen werden:
Binden Sie die Typidentität an eine bestimmte Version einer Datei.
Durch die Verwendung von Assemblys mit starken Namen bindet die Common Language Runtime die Typidentität an eine bestimmte Dateiversion. Um Anwendungen oder Komponenten für die parallele Ausführung zu erstellen, müssen Sie alle Assemblys mit starken Namen benennen. Dadurch werden präzise Typidentitäten erstellt und es wird sichergestellt, dass alle Typauflösungen an die richtigen Dateien geleitet werden. Eine Assembly mit starkem Namen enthält Informationen zu Version, Kultur und Herausgeber, die von der Common Language Runtime verwendet werden, um die richtige Datei zu suchen und eine Bindungsanforderung zu erfüllen.
Verwenden Sie die versionsabhängige Speicherung.
Die Common Language Runtime verwendet den globalen Assemblycache, um die versionsabhängige Speicherung bereitzustellen. Der globale Asssemblycache ist eine versionsabhängige Verzeichnisstruktur, die auf jedem Computer mit .NET Framework installiert ist. Im globalen Assemblycache installierte Assemblys werden bei der Installation einer neuen Version dieser Assembly nicht überschrieben.
Erstellen Sie eine Anwendung oder Komponente, die isoliert ausgeführt wird.
Eine Anwendung oder Komponente, die isoliert ausgeführt wird, muss Ressourcen verwalten, um Konflikte zu vermeiden, wenn zwei Instanzen der Anwendung oder Komponente gleichzeitig ausgeführt werden. Die Anwendung oder Komponente muss außerdem eine versionsspezifische Dateistruktur verwenden.
Isolation von Anwendungen und Komponenten
Der Schlüssel zum erfolgreichen Entwerfen von Anwendungen oder Komponenten für die parallele Ausführung ist die Isolation. Die Anwendung oder Komponente muss alle Ressourcen, insbesondere Datei-E/A, isoliert verwalten. Beachten Sie folgende Richtlinien, um sicherzustellen, dass die Anwendung oder Komponente isoliert ausgeführt wird:
Schreiben Sie in die Registrierung unter Berücksichtigung der Version. Speichern Sie Werte in Strukturen oder Schlüsseln, die die Version angeben, und verwenden Sie bei Komponenten die Informationen oder Zustände nicht versionsübergreifend. So wird verhindert, dass zwei gleichzeitig ausgeführte Anwendungen oder Komponenten Informationen überschreiben.
Erstellen Sie benannte Kernelobjekte in versionsspezifischer Weise, damit keine Racebedingung eintritt. Eine Racebedingung tritt z. B. ein, wenn zwei Semaphore zweier verschiedener Versionen derselben Anwendung aufeinander warten.
Verwenden Sie versionsabhängige Datei- und Verzeichnisnamen. Dies bedeutet, dass Dateistrukturen auf Versionsinformationen beruhen sollten.
Erstellen Sie versionsspezifische Benutzerkonten und -gruppen. Von einer Anwendung erstellte Benutzerkonten und -gruppen sollten anhand der Version bezeichnet werden. Verwenden Sie Benutzerkonten und -gruppen einer Anwendung nicht versionsübergreifend.
Installieren und Deinstallieren von Versionen
Beachten Sie beim Entwerfen von Anwendungen für die parallele Ausführung folgende Richtlinien zum Installieren und Deinstallieren von Versionen:
Löschen Sie keine Informationen aus der Registrierung, die eventuell von Anwendungen benötigt werden, die in einer anderen Version von .NET Framework ausgeführt werden.
Ersetzen Sie keine Informationen in der Registrierung, die eventuell von Anwendungen benötigt werden, die in einer anderen Version von .NET Framework ausgeführt werden.
Heben Sie nicht die Registrierung von COM-Komponenten auf, die eventuell von Anwendungen benötigt werden, die in einer anderen Version von .NET Framework ausgeführt werden.
Ändern Sie InprocServer32 oder andere Registrierungseinträge für einen bereits registrierten COM-Server nicht.
Löschen Sie keine Benutzerkonten oder Benutzergruppen, die eventuell von Anwendungen benötigt werden, die in einer anderen Version von .NET Framework ausgeführt werden.
Fügen Sie der Registrierung keinen Eintrag hinzu, der einen Pfad ohne Versionsinformationen enthält.
Dateiversionsnummer und Assemblyversionsnummer
Die Dateiversion ist eine Win32-Versionsressource, die von der Common Language Runtime nicht verwendet wird. In der Regel aktualisieren Sie die Dateiversion sogar für direktes QFE. Zwei identische Dateien können über unterschiedliche Dateiversionsinformationen verfügen. Gleichzeitig können zwei unterschiedliche Dateien über dieselben Dateiversionsinformationen verfügen.
Die Assemblyversion wird von der Common Language Runtime für die Assemblybindung verwendet. Die Common Language Runtime behandelt zwei identische Assemblys mit unterschiedlichen Versionsnummern als zwei verschiedene Assemblys.
Mit dem Global Assembly Cache-Tool (Gacutil.exe) können Sie eine Assembly ersetzen, wenn lediglich die Dateiversionsnummer neuer ist. Das Installationsprogramm installiert i. d. R. nur dann über eine Assembly hinweg, wenn die Assemblyversionsnummer höher ist.
Siehe auch
Konzepte
Bestimmen einer Aktualisierungsstrategie für Anwendungen und Komponenten
Weitere Ressourcen
Grundlagen der parallelen Ausführung
Erstellen mehrerer Versionen einer Anwendung oder Komponente