Erstellen von Zustandsspeicher für parallele Assemblys

Befolgen Sie beim Erstellen ihrer eigenen parallelen Assemblys die Richtlinien zum Erstellen von parallelen Assemblys , und erstellen Sie alle DLL-Dateien, die in die Assembly eingeschlossen werden sollen, gemäß den Richtlinien unter Erstellen einer DLL für eine parallele Assembly.

Befolgen Sie die folgenden Richtlinien für die Speicherung des Zustands:

  • Entwerfen Sie den Zustandsspeicher so, dass er vorwärts- und abwärtskompatibel ist. Erwarten Sie, dass die Versionen in beliebiger Reihenfolge verwendet werden: z. B. v1, dann v3, dann v2.

  • Initialisieren Sie die Standardeinstellungen für die Assembly im Assemblycode, und legen Sie sie fest. Speichern Sie die Standardeinstellungen nicht in der Registrierung.

  • Registrierungseinstellungen müssen auf Basis einzelner Versionen geschrieben werden, um mehrere Assemblyversionen zu isolieren, die möglicherweise gleichzeitig ausgeführt werden. Entwerfen Sie Ihre parallele Assembly so, dass sie den Zustand der Assembly während paralleler Freigabeszenarien ordnungsgemäß speichert und behandelt.

  • Assemblys speichern in der Regel Zustandsinformationen in Registrierungsschlüsseln. Erstellen Sie eine Reihe von Headerdateien und Hilfsfunktionen, um eine einfache Möglichkeit zur Versionierung von Registrierungsschlüsseln zu bieten, die den Assemblystatus enthalten.

  • Alle in der Registrierung gespeicherten Assemblystatusinformationen müssen von anderen Versionen der Assembly isoliert werden. Zustandseinstellungen, die in der Registrierung gespeichert sind, müssen in einzelnen Versionsabschnitten der Registrierung gespeichert werden. Dies ist sowohl im HKLM- als auch im HKCU-Teil der Registrierung erforderlich. Speichern Sie beispielsweise HKCU-Zustandseinstellungen für Assemblyversion XXXX unter dem folgenden Registrierungsschlüssel:

    HKCU\Mycompany\MyComponent\VersionXXXX

  • Alle Zustandsinformationen, die von freigegebenen Assemblys in der Registrierung gespeichert werden, müssen in einzelnen Versionsabschnitten der Registrierung gespeichert werden. Beispielsweise kann eine Zustandseinstellung namens EnableSuperCoolFeature den Wert TRUE oder FALSE aufweisen. Speichern Sie den Wert für eine gemeinsam genutzte parallele Assembly wie folgt:

    \ HKEY_CurrentUser Software\Mycompany\MyComponent\Version01.01\EnableSuperCoolFeature = TRUE

  • Alle Zustandsinformationen, die von privaten Assemblys in der Registrierung gespeichert werden, müssen in einzelnen Anwendungsabschnitten der Registrierung gespeichert werden. Dadurch werden die Zustandseinstellungen der Assembly auf die Anwendung isoliert. Sie können die GetModuleFileName-Funktion verwenden, um einen virtuellen Stamm einzurichten. Wenn die Assemblyversion XXYY beispielsweise eine private Assembly von "SomeApplication" ist, gibt ein Aufruf von GetModuleFileName "SomeApplication" zurück, und alle privaten Zustandseinstellungen für die Assembly sollten unter dem folgenden Schlüssel geschrieben werden:

    HKCU\Mycompany\MyComponent\VersionXXYY\SomeApplication

  • Stellen Sie in der Registrierung gespeicherte Einstellungen des freigegebenen Zustands für den ausgeführten Assemblykontext als privat fest. Sie können die GetModuleFileName-Funktion verwenden, um einen virtuellen Stamm einzurichten. Dies sollte für HKLM- und HKCU-Filialen erfolgen.

  • Im Idealfall sollten Sie ein Persistenzmodell übernehmen, bei dem die Anwendung den Zustand beibehalten und die Registrierung nicht ändert. Eine Anwendung sollte die Registrierungseinträge der Komponente nicht direkt berühren müssen. Stattdessen sollte die Assembly API-Funktionen bieten, die parallel kompatible Einstellungen speichern oder wiederherstellen.

  • Assemblys können Zustandseinstellungen in Speichern außerhalb der Registrierung speichern, damit die Assembly mit dem globalen Zustand interagieren kann. Parallele Assemblys können die folgenden parallel kompatiblen Speicher verwenden:

    • Ein geschützter Speicher (pstore)
    • Ein WinInet-Cache
    • Microsoft SQL Server