Compartilhar via


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 de usuário que o sistema operacional reconhece, que é a identidade associada ao processo no qual o código está em execução 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 mude dinamicamente.

O acesso ao armazenamento isolado também é restrito de acordo com a identidade vinculada ao domínio e ao assembly do aplicativo, ou somente ao assembly. O runtime obtém essas identidades das seguintes maneiras:

  • A identidade de domínio representa a evidência do aplicativo, que no caso de um aplicativo Web pode ser a URL completa. Para código hospedado por shell, a identidade de domínio pode ser baseada no caminho do diretório do aplicativo. Por exemplo, se o executável for executado do caminho C:\Office\MyApp.exe, a identidade de domínio será C:\Office\MyApp.exe.

  • A identidade do conjunto é a prova do conjunto. Isso pode vir de uma assinatura digital criptográfica, que pode ser o nome forte do assembly, o publicador 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 for proveniente da Internet e não for assinado, a identidade da URL será usada. Para obter mais informações sobre assemblies e nomes fortes, consulte Programação com assemblies.

  • As lojas móveis se movem 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 baixados em qualquer computador em que o usuário faz logon. Para obter mais informações sobre perfis de usuário itinerante, consulte IsolatedStorageScope.Roaming.

Combinando os conceitos de identidade de usuário, domínio e assembly, o armazenamento isolado pode isolar os dados das seguintes maneiras, cada uma delas com seus próprios cenários de uso:

Qualquer um desses isolamentos pode ser combinado com um perfil de usuário itinerante. Para obter mais informações, consulte a seção Armazenamento Isolado e Roaming.

A ilustração a seguir demonstra como as lojas são isoladas em escopos diferentes:

Diagrama que mostra o isolamento por usuário e por conjunto.

Com exceção dos repositórios móveis, o armazenamento isolado é sempre isolado implicitamente pelo computador porque usa as instalações de armazenamento que são locais para um determinado computador.

Importante

O armazenamento isolado não está disponível para aplicativos da Windows 8.x Store. Em vez disso, use as classes de dados de aplicativo do Windows.Storage nos namespaces incluídos na API do Windows Runtime para armazenar dados locais e arquivos. Para obter mais informações, consulte os dados do aplicativo no Centro de Desenvolvimento do Windows.

Isolamento por usuário e montagem

Quando o assembly que utiliza 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 pelo usuário e pelo assembly, o código deve ser confiável para transferir informações entre aplicativos. Normalmente, o isolamento por usuário e por assemblagem é 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 repositório isolado pelo usuário e pelo assembly. O repositório pode ser acessado por meio do isoFile objeto.

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, conforme mostrado no exemplo de código a seguir. Esse atalho não pode ser usado para abrir repositórios capazes de roaming; use GetStore nesses casos.

IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForAssembly();
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetUserStoreForAssembly()

Isolamento por usuário, domínio e assembly

Se o aplicativo usar um assembly de terceiros que exija um armazenamento de dados privado, você poderá usar o armazenamento isolado para armazenar os dados privados. Proposta de Melhorias: O isolamento por usuário, domínio e assembly assegura que somente o código em um determinado assembly possa acessar os dados, e apenas quando o assembly for usado pelo aplicativo em execução na ocasião em que o assembly criou o armazenamento, e somente quando o usuário para quem o armazenamento foi criado executa o aplicativo. O isolamento de usuário, domínio e assembleia impede que a assembleia de terceiros vaze dados para outros aplicativos. Esse tipo de isolamento deve ser sua escolha padrão se você souber que deseja usar o armazenamento isolado, mas não tem certeza de qual tipo de isolamento usar. Chamar o método estático GetStore de IsolatedStorageFile e passar um usuário, um domínio e um assembly IsolatedStorageScope resulta em um armazenamento com esse tipo de isolamento.

O exemplo de código a seguir recupera um repositório isolado por usuário, domínio e assembly. O repositório pode ser acessado por meio do isoFile objeto.

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, conforme mostrado no exemplo de código a seguir. Esse atalho não pode ser usado para abrir repositórios capazes de roaming; use GetStore nesses casos.

IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForDomain();
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetUserStoreForDomain()

Armazenamento isolado e roaming

Perfis de usuário móveis são um recurso do Windows que permite a um usuário configurar uma identidade em uma rede e usar essa identidade para fazer logon em qualquer computador da rede, levando consigo todas as configurações personalizadas. Um assembly que utiliza armazenamento isolado pode especificar que o armazenamento isolado do usuário deve ser movido junto com o perfil de usuário itinerante. O roaming pode ser usado em conjunto com isolamento por usuário e assembly ou com isolamento por usuário, domínio e assembly. Se um escopo de roaming não for usado, os repositórios não irão 'roaming', mesmo se for utilizado um perfil de usuário de roaming.

O exemplo de código a seguir recupera um repositório de dados de roaming isolado pelo usuário e pelo assembly. O repositório pode ser acessado por meio do isoFile objeto.

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, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly Or IsolatedStorageScope.Domain Or _
        IsolatedStorageScope.Roaming, Nothing, Nothing)

Consulte também