Tipos de isolamento
O acesso ao armazenamento isolado é sempre restrito ao usuário que o criou. Para implementar esse tipo de isolamento, o common language runtime usa a mesma noção de identidade do usuário que o sistema operacional reconhece, que é a identidade associada ao processo no qual o código está sendo executado quando o repositório é aberto. Essa identidade é uma identidade de usuário autenticada, mas a representação pode fazer com que a identidade do usuário atual seja alterada dinamicamente.
O acesso ao armazenamento isolado também é restrito de acordo com a identidade associada ao domínio e ao assembly do aplicativo ou apenas ao assembly. O tempo de execução obtém essas identidades das seguintes maneiras:
A identidade do domínio representa a evidência do aplicativo, que no caso de um aplicativo Web pode ser a URL completa. Para código hospedado no shell, a identidade do domínio pode ser baseada no caminho do diretório do aplicativo. Por exemplo, se o executável for executado a partir do caminho C:\Office\MyApp.exe, a identidade do domínio será C:\Office\MyApp.exe.
A identidade da montagem é a evidência da montagem. Isso pode vir de uma assinatura digital criptográfica, que pode ser o nome forte do assembly, o editor de software do assembly ou sua identidade de URL. Se um assembly tiver um nome forte e uma identidade de editor de software, a identidade do editor de software será usada. Se o assembly vier da Internet e não estiver assinado, a identidade da URL será usada. Para obter mais informações sobre assemblies e nomes fortes, consulte Programação com assemblies.
As lojas de roaming são movidas com um usuário que tem um perfil de usuário móvel. Os arquivos são gravados em um diretório de rede e são baixados para qualquer computador no qual o usuário faça logon. Para obter mais informações sobre perfis de usuário móvel, consulte IsolatedStorageScope.Roaming.
Ao combinar os conceitos de identidade de usuário, domínio e assembly, o armazenamento isolado pode isolar dados das seguintes maneiras, cada uma com seus próprios cenários de uso:
Qualquer um desses isolamentos pode ser combinado com um perfil de usuário móvel. Para obter mais informações, consulte a seção Armazenamento isolado e roaming.
A ilustração a seguir demonstra como os armazenamentos são isolados em escopos diferentes:
Com exceção dos repositórios em roaming, o armazenamento isolado é sempre implicitamente isolado pelo computador porque usa os recursos de armazenamento que são locais para um determinado computador.
Importante
O armazenamento isolado não está disponível para aplicações da Loja Windows 8.x. Em vez disso, use as classes de dados do aplicativo nos Windows.Storage
namespaces incluídos na API do Tempo de Execução do Windows para armazenar dados e arquivos locais. Para obter mais informações, consulte Dados de aplicativos no Centro de Desenvolvimento do Windows.
Isolamento por usuário e assembly
Quando o assembly que usa o armazenamento de dados precisa ser acessível a partir do domínio de qualquer aplicativo, o isolamento por usuário e assembly é apropriado. Normalmente, nessa situação, o armazenamento isolado é usado para armazenar dados que se aplicam a vários aplicativos e não estão vinculados a nenhum aplicativo específico, como o nome do usuário ou informações de licença. Para acessar o armazenamento isolado por usuário e assembly, o código deve ser confiável para transferir informações entre aplicativos. Normalmente, o isolamento por usuário e assembly é permitido em intranets, mas não na Internet. Chamar o método estático IsolatedStorageFile.GetStore e passar um usuário e um assembly IsolatedStorageScope retorna o armazenamento com esse tipo de isolamento.
O exemplo de código a seguir recupera um armazenamento que é isolado por usuário e assembly. A loja pode ser acessada através do isoFile
objeto.
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 obter um exemplo que usa os parâmetros de evidência, consulte GetStore(IsolatedStorageScope, Evidence, Type, Evidence, Type).
O GetUserStoreForAssembly método está disponível como um atalho, como mostrado no exemplo de código a seguir. Este atalho não pode ser usado para abrir lojas capazes de roaming; nestes GetStore casos.
IsolatedStorageFile^ isoFile = IsolatedStorageFile::GetUserStoreForAssembly();
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForAssembly();
Dim isoFile As IsolatedStorageFile = _
IsolatedStorageFile.GetUserStoreForAssembly()
Isolamento por usuário, domínio e assembly
Se seu aplicativo usa um assembly de terceiros que requer um armazenamento de dados privado, você pode usar o armazenamento isolado para armazenar os dados privados. O isolamento por usuário, domínio e assembly garante que somente o código em um determinado assembly possa acessar os dados e somente quando o assembly for usado pelo aplicativo que estava sendo executado quando o assembly criou o repositório e somente quando o usuário para o qual o repositório foi criado executar o aplicativo. O isolamento por usuário, domínio e assembly impede que o assembly de terceiros vaze dados para outros aplicativos. Esse tipo de isolamento deve ser sua opção padrão se você souber que deseja usar o armazenamento isolado, mas não tiver certeza de qual tipo de isolamento usar. Chamar o método estático GetStore e IsolatedStorageFile passar um usuário, domínio e assembly IsolatedStorageScope retorna o armazenamento com esse tipo de isolamento.
O exemplo de código a seguir recupera um armazenamento isolado por usuário, domínio e assembly. A loja pode ser acessada através do isoFile
objeto.
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)
Outro método está disponível como um atalho, como mostrado no exemplo de código a seguir. Este atalho não pode ser usado para abrir lojas capazes de roaming; nestes GetStore casos.
IsolatedStorageFile^ isoFile = IsolatedStorageFile::GetUserStoreForDomain();
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForDomain();
Dim isoFile As IsolatedStorageFile = _
IsolatedStorageFile.GetUserStoreForDomain()
Armazenamento isolado e roaming
Os perfis de usuário móvel são um recurso do Windows que permite que um usuário configure uma identidade em uma rede e use essa identidade para fazer login em qualquer computador da rede, carregando todas as configurações personalizadas. Um assembly que usa armazenamento isolado pode especificar que o armazenamento isolado do usuário deve ser movido com o perfil de usuário móvel. O roaming pode ser usado em conjunto com o isolamento por usuário e assembly ou com o isolamento por usuário, domínio e assembly. Se um escopo de roaming não for usado, as lojas não usarão roaming mesmo se um perfil de usuário móvel for usado.
O exemplo de código a seguir recupera um armazenamento móvel isolado por usuário e assembly. A loja pode ser acessada através do isoFile
objeto.
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)
Um escopo de domínio pode ser adicionado para criar um repositório móvel isolado por usuário, domínio e aplicativo. O exemplo de código a seguir demonstra isso.
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)