Tipos de aislamiento
El acceso al almacenamiento aislado siempre está restringido al usuario que lo creó. Para implementar este tipo de aislamiento, Common Language Runtime usa el mismo concepto de identidad de usuario que reconoce el sistema operativo, que es la identidad asociada con el proceso en el que se ejecuta el código cuando se abre el almacén. Esta identidad es una identidad de usuario autenticado, pero la suplantación puede hacer que la identidad del usuario actual cambie de forma dinámica.
El acceso al almacenamiento aislado también está restringido por la identidad asociada con el dominio y el ensamblado de la aplicación, o solo con el ensamblado. El tiempo de ejecución obtiene estas identidades de las maneras siguientes:
La identidad de dominio representa la evidencia de la aplicación, que en el caso de una aplicación web podría ser la dirección URL completa. Para el código hospedado en el shell, la identidad de dominio podría basarse en la ruta de acceso del directorio de la aplicación. Por ejemplo, si se ejecuta el ejecutable desde la ruta de acceso C:\Office\MyApp.exe, la identidad de dominio sería C:\Office\MyApp.exe.
Identidad del ensamblado es la evidencia del ensamblado. Esto podría proceder de una firma digital criptográfica, que puede ser el nombre seguro del ensamblado, el editor de software del ensamblado o su identidad de dirección URL. Si un ensamblado tiene un nombre seguro y una identidad del editor de software, se utiliza la identidad del editor de software. Si el ensamblado procede de Internet y no está firmado, se utiliza la identidad de dirección URL. Para obtener más información sobre los ensamblados y nombres seguros, vea Programar con ensamblados.
Los almacenes móviles se mueven con un usuario que tenga un perfil de usuario móvil. Los archivos se escriben en un directorio de red y se descargan en cualquier equipo en que el usuario inicia sesión. Para obtener más información sobre los perfiles de usuarios móviles, consulte IsolatedStorageScope.Roaming.
Mediante la combinación de los conceptos de usuario, dominio e identidad de ensamblado, el almacenamiento aislado puede aislar los datos de las siguientes formas, cada una de las cuales tiene sus propios escenarios de uso:
Cualquiera de estos aislamientos se puede combinar con un perfil de usuario móvil. Para obtener más información, vea la sección Aislamiento aislado y movilidad.
En la siguiente ilustración se muestra cómo se aíslan los almacenes en distintos ámbitos:
Con la excepción de los almacenes móviles, el equipo siempre aísla de forma implícita el almacenamiento aislado, porque usa los medios de almacenamiento locales en un equipo determinado.
Importante
El almacenamiento aislado no está disponible para las aplicaciones de la Tienda Windows 8.x. En su lugar, use las clases de datos de la aplicación de los espacios de nombres Windows.Storage
incluidas en la API de Windows Runtime para almacenar archivos y datos locales. Para más información, vea Datos de aplicación en el Centro de desarrollo de Windows.
Aislamiento por usuario y ensamblado
Cuando es necesario acceder al ensamblado que usa el almacén de datos desde cualquier dominio de la aplicación, el aislamiento por usuario y ensamblado es adecuado. Normalmente, en esta situación, el almacenamiento aislado se usa para almacenar datos que se aplican en varias plataformas y no está vinculado a ninguna aplicación concreta, como el nombre del usuario o la información de licencia. Para acceder al almacenamiento aislado por usuario y ensamblado, el código debe ser de confianza para transferir información entre aplicaciones. Por lo general, se permite el aislamiento por usuario y ensamblado en intranets, pero no en Internet. La llamada al método estático IsolatedStorageFile.GetStore y pasar un usuario y un ensamblado IsolatedStorageScope devuelven almacenamiento con este tipo de aislamiento.
El ejemplo de código siguiente recupera un almacén aislado por usuario y ensamblado. Se puede acceder al almacén con el objeto isoFile
.
IsolatedStorageFile^ isoFile =
IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
IsolatedStorageScope::Assembly, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Assembly, null, null);
Dim isoFile As IsolatedStorageFile = _
IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
IsolatedStorageScope.Assembly, Nothing, Nothing)
Para obtener un ejemplo que utiliza los parámetros de prueba, consulte GetStore(IsolatedStorageScope, Evidence, Type, Evidence, Type).
El método GetUserStoreForAssembly está disponible como un acceso directo, como se muestra en el ejemplo de código siguiente. Este acceso directo no se puede usar para abrir almacenes que son capaces de realizar la itinerancia; use GetStore en esos casos.
IsolatedStorageFile^ isoFile = IsolatedStorageFile::GetUserStoreForAssembly();
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForAssembly();
Dim isoFile As IsolatedStorageFile = _
IsolatedStorageFile.GetUserStoreForAssembly()
Aislamiento por usuario, dominio y ensamblado
Si la aplicación usa un ensamblado de terceros que requiera un almacén de datos privado, puede usar el almacenamiento aislado para almacenar los datos privados. El aislamiento por usuario, dominio y ensamblado garantiza que solo el código de un ensamblado determinado pueda acceder a los datos, únicamente cuando el ensamblado lo usa la aplicación que se estaba ejecutando cuando el ensamblado creó el almacén y solo cuando el usuario para el que se creó el almacén ejecuta la aplicación. El aislamiento por usuario, dominio y ensamblado impide que el ensamblado de terceros filtre datos a otras aplicaciones. Este tipo de aislamiento debe ser la opción predeterminada si sabe que desea usar el almacenamiento aislado pero no está seguro de qué tipo de aislamiento usar. La llamada al método estático GetStore de IsolatedStorageFile y pasar un usuario, un dominio y un ensamblado IsolatedStorageScope devuelven almacenamiento con este tipo de aislamiento.
El ejemplo de código siguiente recupera un almacén aislado por usuario, dominio y ensamblado. Se puede acceder al almacén con el objeto isoFile
.
IsolatedStorageFile^ isoFile =
IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
IsolatedStorageScope::Domain |
IsolatedStorageScope::Assembly, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Domain |
IsolatedStorageScope.Assembly, null, null);
Dim isoFile As IsolatedStorageFile = _
IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
IsolatedStorageScope.Domain Or _
IsolatedStorageScope.Assembly, Nothing, Nothing)
Otro método está disponible como acceso directo, como se muestra en el ejemplo de código siguiente. Este acceso directo no se puede usar para abrir almacenes que son capaces de realizar la itinerancia; use GetStore en esos casos.
IsolatedStorageFile^ isoFile = IsolatedStorageFile::GetUserStoreForDomain();
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForDomain();
Dim isoFile As IsolatedStorageFile = _
IsolatedStorageFile.GetUserStoreForDomain()
Almacenamiento aislado e itinerancia
Los perfiles de usuario móvil son una característica de Windows que permite a un usuario configurar una identidad en una red y utilizar esa identidad para iniciar sesión en cualquier equipo de la red, conservando toda la configuración personalizada. Un ensamblado que usa almacenamiento aislado puede especificar que el almacenamiento aislado del usuario debe moverse con el perfil de usuario móvil. La itinerancia puede usarse junto con el aislamiento por usuario y ensamblado o con el aislamiento por usuario, dominio y ensamblado. Si no se usa un ámbito de itinerancia, los almacenes no realizarán la itinerancia aunque se use el perfil de usuario móvil.
El ejemplo de código siguiente realiza la itinerancia de un almacén aislado por usuario y ensamblado. Se puede acceder al almacén con el objeto isoFile
.
IsolatedStorageFile^ isoFile =
IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
IsolatedStorageScope::Assembly |
IsolatedStorageScope::Roaming, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Assembly |
IsolatedStorageScope.Roaming, null, null);
Dim isoFile As IsolatedStorageFile = _
IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
IsolatedStorageScope.Assembly Or _
IsolatedStorageScope.Roaming, Nothing, Nothing)
Un ámbito de dominio se puede agregar para crear un almacén de itinerancia aislado por usuario, dominio y aplicación. El siguiente ejemplo de código muestra esto.
IsolatedStorageFile^ isoFile =
IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
IsolatedStorageScope::Assembly | IsolatedStorageScope::Domain |
IsolatedStorageScope::Roaming, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Assembly | IsolatedStorageScope.Domain |
IsolatedStorageScope.Roaming, null, null);
Dim isoFile As IsolatedStorageFile = _
IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
IsolatedStorageScope.Assembly Or IsolatedStorageScope.Domain Or _
IsolatedStorageScope.Roaming, Nothing, Nothing)