Stockage de l’état de création pour les assemblys côte à côte

Lorsque vous créez vos propres assemblys côte à côte, suivez les Instructions pour la création d’assemblys côte à côte et créez toute DLL à inclure dans l’assembly conformément aux instructions de création d’une DLL pour un assembly côte à côte.

Respectez les instructions suivantes pour le stockage de l’état :

  • Concevez le stockage de l’état pour qu’il soit compatible avant et descendant. Attendez-vous à ce que les versions soient utilisées dans n’importe quel ordre : par exemple, v1, puis v3, puis v2.

  • Initialisez et définissez les paramètres par défaut de l’assembly dans le code de l’assembly. N’enregistrez pas les paramètres par défaut dans le Registre.

  • Les paramètres de Registre doivent être écrits sur une version individuelle pour isoler plusieurs versions d’assembly qui peuvent être exécutées en même temps. Concevez votre assembly côte à côte pour stocker et gérer correctement l’état de l’assembly pendant les scénarios de partage côte à côte.

  • Les assemblys stockent généralement des informations d’état dans les clés de Registre. Créez un ensemble de fichiers d’en-tête et de fonctions d’assistance pour fournir un moyen simple de version des clés de Registre contenant l’état de l’assembly.

  • Toutes les informations d’état d’assembly enregistrées dans le Registre doivent être isolées des autres versions de l’assembly. Les paramètres d’état stockés dans le Registre doivent être enregistrés dans des sections de version individuelles du registre. Cela est obligatoire dans les parties HKLM et HKCU du registre. Par exemple, stockez les paramètres d’état HKCU pour la version d’assembly XXXX sous la clé de Registre suivante :

    HKCU\MyCompany\MyComponent\VersionXXXX

  • Toutes les informations d’état stockées dans le Registre par les assemblys partagés doivent être enregistrées dans des sections de version individuelles du Registre. Par exemple, un paramètre d’état appelé EnableSuperCoolFeature peut avoir la valeur TRUE ou FALSE. Stockez la valeur d’un assembly côte à côte partagé comme suit :

    \ HKEY_CurrentUser Logiciel\MyCompany\MyComponent\Version01.01\EnableSuperCoolFeature = TRUE

  • Toutes les informations d’état stockées dans le Registre par des assemblys privés doivent être enregistrées dans des sections d’application individuelles du Registre. Cela isole les paramètres d’état de l’assembly dans l’application. Vous pouvez utiliser la fonction GetModuleFileName pour configurer une racine virtuelle. Par exemple, si la version d’assembly XXYY est un assembly privé de « SomeApplication », un appel à GetModuleFileName renvoie « SomeApplication » et tous les paramètres d’état privés de l’assembly doivent être écrits sous la clé suivante :

    HKCU\MyCompany\MyComponent\VersionXXYY\SomeApplication

  • Rendez les paramètres d’état partagé stockés dans le Registre privés pour le contexte d’assembly qui s’exécute. Vous pouvez utiliser la fonction GetModuleFileName pour configurer une racine virtuelle. Cette opération doit être effectuée pour les branches HKLM et HKCU.

  • Dans l’idéal, vous devez adopter un modèle de persistance dans lequel l’application conserve l’état et ne modifie pas le Registre. Une application ne doit pas avoir à toucher directement les entrées de Registre du composant. Au lieu de cela, l’assembly doit proposer des fonctions d’API qui enregistrent ou restaurent des paramètres compatibles côte à côte.

  • Les assemblys peuvent enregistrer les paramètres d’état dans des magasins en dehors du Registre pour permettre à l’assembly d’interagir avec l’état global. Les assemblys côte à côte peuvent utiliser les magasins compatibles côte à côte suivants :

    • Un magasin protégé (pstore)
    • Un cache WinInet
    • Microsoft SQL Server