Creación del almacenamiento de estado para ensamblados en paralelo

Al crear sus propios ensamblados en paralelo, siga las instrucciones para crear ensamblados en paralelo y cree cualquier archivo DLL que se incluya en el ensamblado según las directrices de Creación de un archivo DLL para un ensamblado en paralelo.

Siga las siguientes directrices para el almacenamiento del estado:

  • Diseñe el almacenamiento de estado para que sea compatible con versiones anteriores y hacia delante. Espere que las versiones se usen en cualquier orden: por ejemplo, v1, v3 y v2.

  • Inicialice y establezca la configuración predeterminada para el ensamblado en el código del ensamblado. No guarde la configuración predeterminada en el Registro.

  • La configuración del Registro debe escribirse en una versión individual para aislar varias versiones de ensamblado que se pueden ejecutar al mismo tiempo. Diseñe el ensamblado en paralelo para almacenar y controlar correctamente el estado del ensamblado durante escenarios de uso compartido en paralelo.

  • Los ensamblados suelen almacenar información de estado en las claves del Registro. Cree un conjunto de archivos de encabezado y funciones auxiliares para proporcionar una manera sencilla de versionar las claves del Registro que contienen el estado del ensamblado.

  • Cualquier información de estado de ensamblado guardada en el Registro debe aislarse de otras versiones del ensamblado. La configuración de estado almacenada en el Registro debe guardarse en secciones de versión individuales del Registro. Esto es necesario en las partes HKLM y HKCU del registro. Por ejemplo, almacene la configuración de estado HKCU para la versión de ensamblado XXXX en la siguiente clave del Registro:

    HKCU\Mycompany\MyComponent\VersionXXXX

  • Cualquier información de estado almacenada en el Registro por ensamblados compartidos debe guardarse en secciones de versión individuales del Registro. Por ejemplo, una configuración de estado denominada EnableSuperCoolFeature podría tener un valor de TRUE o FALSE. Almacene el valor de un ensamblado en paralelo compartido de la siguiente manera:

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

  • Cualquier información de estado almacenada en el Registro por ensamblados privados debe guardarse en secciones de aplicación individuales del Registro. Esto aísla la configuración de estado del ensamblado a la aplicación. Puede usar la función GetModuleFileName para configurar una raíz virtual. Por ejemplo, si la versión de ensamblado XXYY es un ensamblado privado de "SomeApplication", una llamada a GetModuleFileName devuelve "SomeApplication" y cualquier configuración de estado privado para el ensamblado debe escribirse bajo la siguiente clave:

    HKCU\Mycompany\MyComponent\VersionXXYY\SomeApplication

  • Convierta la configuración de estado compartido almacenada en el registro privado en el contexto de ensamblado que se ejecuta. Puede usar la función GetModuleFileName para configurar una raíz virtual. Esto debe hacerse para las ramas HKLM y HKCU.

  • Idealmente, debe adoptar un modelo de persistencia en el que la aplicación conserva el estado y no modifica el registro. Una aplicación no debe necesitar tocar directamente las entradas del Registro del componente. En su lugar, el ensamblado debe ofrecer funciones de API que guarden o restaure la configuración compatibles en paralelo.

  • Los ensamblados pueden guardar la configuración de estado en almacenes fuera del Registro para permitir que el ensamblado interactúe con el estado global. Los ensamblados en paralelo pueden usar los siguientes almacenes compatibles en paralelo:

    • Un almacén protegido (pstore)
    • Una memoria caché de WinInet
    • Un SQL Server de Microsoft