Compartilhar via


Criação de armazenamento de estado para assemblies lado a lado

Ao criar seus próprios assemblies lado a lado, siga as Diretrizes para criar assemblies lado a lado e crie qualquer DLL a ser incluída no assembly de acordo com as diretrizes em Criação de uma DLL para um assembly lado a lado.

Siga as seguintes diretrizes para o armazenamento do estado:

  • Projete o armazenamento de estado para ser compatível com a frente e com versões anteriores. Espere que as versões sejam usadas em qualquer ordem: por exemplo, v1, v3 e v2.

  • Inicialize e defina as configurações padrão para o assembly no código do assembly. Não salve as configurações padrão no Registro.

  • As configurações do Registro devem ser gravadas em uma base de versão individual para isolar várias versões de assembly que podem ser executadas ao mesmo tempo. Crie seu assembly lado a lado para armazenar e manipular corretamente o estado do assembly durante cenários de compartilhamento lado a lado.

  • Os assemblies geralmente armazenam informações de estado em chaves do Registro. Crie um conjunto de arquivos de cabeçalho e funções auxiliares para fornecer uma maneira fácil de ver as chaves do Registro que contêm o estado do assembly.

  • Todas as informações de estado do assembly salvas no registro devem ser isoladas de outras versões do assembly. As configurações de estado armazenadas no registro devem ser salvas em seções de versão individuais do registro. Isso é necessário nas partes HKLM e HKCU do registro. Por exemplo, armazene as configurações de estado do HKCU para a versão do assembly XXXX na seguinte chave do Registro:

    HKCU\Mycompany\Meucomponente\VersionXXXX

  • Todas as informações de estado armazenadas no registro por assemblies compartilhados devem ser salvas em seções de versão individuais do registro. Por exemplo, uma configuração de estado chamada EnableSuperCoolFeature pode ter um valor TRUE ou FALSE. Armazene o valor de um assembly lado a lado compartilhado da seguinte maneira:

    \ HKEY_CurrentUser Software\Mycompany\Meucomponente\Versão 01.01\EnableSuperCoolFeature = TRUE

  • Todas as informações de estado armazenadas no registro por assemblies privados devem ser salvas em seções de aplicativo individuais do registro. Isso isola as configurações de estado do assembly para o aplicativo. Você pode usar a função GetModuleFileName para configurar uma raiz virtual. Por exemplo, se a versão do assembly XXYY for um assembly privado de "SomeApplication", uma chamada para GetModuleFileName retornará "SomeApplication" e todas as configurações de estado privado para o assembly deverão ser gravadas sob a seguinte chave:

    HKCU\Mycompany\Meucomponente\VersionXXYY\SomeApplication

  • Torne as configurações de estado compartilhado armazenadas no registro privadas para o contexto de assembly executado. Você pode usar a função GetModuleFileName para configurar uma raiz virtual. Isso deve ser feito para branches HKLM e HKCU.

  • O ideal é adotar um modelo de persistência no qual o aplicativo persista o estado e não altere o registro. Um aplicativo não deve precisar tocar diretamente nas entradas do registro do componente. Em vez disso, o assembly deve oferecer funções de API que salvam ou restauram configurações compatíveis lado a lado.

  • Os assemblies podem salvar as configurações de estado em repositórios fora do registro para permitir que o assembly interaja com o estado global. Os assemblies lado a lado podem usar os seguintes repositórios compatíveis lado a lado:

    • Um repositório protegido (pstore)
    • Um cache WinInet
    • Um microsoft SQL Server