Erstellungszustands-Storage für nebenseitige Assemblys

Befolgen Sie beim Erstellen eigener nebeneinander seitiger Assemblys die Richtlinien für das Erstellen von nebenseitigen Assemblys, und erstellen Sie eine beliebige DLL, die gemäß den Richtlinien unter Erstellen einer DLL für eine side-by-side-Assemblyin die Assembly aufgenommen werden soll.

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 und 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 einzeln geschrieben werden, um mehrere Assemblyversionen zu isolieren, die gleichzeitig ausgeführt werden können. Entwerfen Sie die nebeneinander ausgeführte Assembly so, dass sie den Zustand der Assembly während der Szenarien für die side-by-side-Freigabe ordnungsgemäß speichern und verarbeiten kann.

  • Assemblys speichern häufig Zustandsinformationen in Registrierungsschlüsseln. Erstellen Sie eine Reihe von Headerdateien und Hilfsfunktionen, um eine einfache Möglichkeit zum Erstellen von Versionsregistrierungsschlüsseln zu bieten, die den Assemblyzustand enthalten.

  • Alle in der Registrierung gespeicherten Assemblyzustandsinformationen müssen von anderen Versionen der Assembly isoliert werden. In der Registrierung gespeicherte Zustandseinstellungen 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 die HKCU-Statuseinstellungen für die 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 mit dem Namen EnableSuper99Feature den Wert TRUE oder FALSE haben. Store den Wert für eine freigegebene, nebeneinander seitige Assembly wie folgt ab:

    HKEY _ CurrentUser \ Software \ MyCompany \ MyComponent \ Version01.01 \ EnableSuperVervollständigenFeature = 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 für die Anwendung isoliert. Sie können die GetModuleFileName-Funktion verwenden, um ein virtuelles Stammverzeichnis zu erstellen. 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

  • Machen Sie freigegebene Zustandseinstellungen, die in der Registrierung gespeichert sind, für den Assemblykontext privat, der ausgeführt wird. Sie können die GetModuleFileName-Funktion verwenden, um ein virtuelles Stammverzeichnis zu erstellen. Dies sollte für HKLM- und HKCU-Branches erfolgen.

  • Im Idealfall sollten Sie ein Persistenzmodell übernehmen, bei dem die Anwendung den Zustand beibehält 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 anbieten, die einstellungen speichern oder wiederherstellen, die nebeneinander kompatibel sind.

  • Assemblys können Zustandseinstellungen in Speichern außerhalb der Registrierung speichern, damit die Assembly mit dem globalen Zustand interagieren kann. Für nebenseitige Assemblys können die folgenden nebeneinander kompatiblen Speicher verwendet werden:

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