Criação de armazenamento de estado para conjuntos 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.

Aderir às seguintes diretrizes para o armazenamento do estado:

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

  • Inicialize e defina as configurações padrão para a montagem no código de montagem. 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. Desenhe a sua montagem em paralelo para armazenar e manipular corretamente o estado da montagem durante cenários de partilha em paralelo.

  • 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 versionar chaves do Registro contendo o estado do assembly.

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

    HKCU\MyCompany\MyComponent\VersionXXXX

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

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

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

    HKCU\MyCompany\MyComponent\VersionXXYY\SomeApplication

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

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

  • Os assemblies podem salvar configurações de estado em armazenamentos fora do Registro para permitir que o assembly interaja com o estado global. As assemblagens "lado a lado" podem utilizar as seguintes lojas compatíveis:

    • Uma loja protegida (pstore)
    • Um cache WinInet
    • Um Microsoft SQL Server