Para preservar os dados de uma aplicação Windows Phone precisamos armazena-los em algum lugar do telefone. Para isso temos de utilizar recursos pertencentes ao Isolated Storage. Para aplicações Windows Phone todas as operações de IO (input-output) estão restritas ao Isolated Storage, esse recurso aprimora a segurança do aparelho e reduz as chances de acesso não autorizado ou corrompimento de arquivos do sistema, ou até mesmo de dados de outras aplicações.
Os tipos de armazenamento existentes no Windows Phone são três:
– Settings: armazenamento em estruturas de dados que funcionam como pares de chave/valor, assim como Dictionaries no .Net Framework (http://msdn.microsoft.com/en-us/library/xfhwa508.aspx).
– Files and Folders: acesso e armazenamento em estruturas de pastas restritas ao acesso de sua aplicação.
– Relational Data: armazenamento de dados em bancos de dados locais, no caso SQL CE (como descrito neste post https://ferhenriquef.com/2011/10/17/windows-phone-mango-e-microsoft-sql-ce/)
Neste post falaremos sobre o Isolated Storage Settings. Sua utilização é bastante simples e vamos ver isso através deste post. Nosso exemplo utiliza dois cenários, sendo eles: o armazenamento de uma estrutura simples e o armazenamento de uma estrutura complexa. No caso da estrutura simples faremos o armazenamento de uma string, conforme o bloco “Simple structure” do formulário do Windows Phone (conforme imagem a baixo), e no caso da estrutura complexa armazenaremos uma estrutura complexa, no caso uma instância da classe People. Este último cenário será utilizado através do bloco “Complex structure” (conforme o formulário a baixo).
Para fazer uso do Isolated Storage é preciso fazer referência ao namespace System.IO.IsolatedStorage. A classe responsável por acessar o Isolated Storage é a classe IsolatedStorageSettings. Para armazenarmos dados no Isolated Storage precisamos acessar a instância de IsolatedStorageSettings que esta vinculada a aplicação, pode fazer isso acessando a propriedade ApplicationSettings da classe IsolatedStorageSettings, desta forma:
IsolatedStorageSettings _isoSettings; _isoSettings = IsolatedStorageSettings.ApplicationSettings;
Para gravarmos uma estrutura simples (i.e., string, inteiro) no Isolated Storage devemos criar uma chave que funcione como identificador dentro da estrutura do Isolated Storage. Podemos fazer este armazenamento desta forma:
IsolatedStorageSettings _isoSettings; string ISO_KEY_SIMPLE = "Key_simpleIS"; _isoSettings = IsolatedStorageSettings.ApplicationSettings; _isoSettings[ISO_KEY_SIMPLE] = this.txtSimpleStorage.Text;
Para gravarmos uma estrutura complexa (i.e., lista, instância de objeto, estrutura, array) devemos fazer da mesma maneira, sem adicionar nenhuma configuração ou comando adicional. No exemplo crio uma classe chamada People, e faço a atribuição de uma instância desta classe para um novo par chave/valor no Isolated Storage, desta maneira:
People newPeople = null; IsolatedStorageSettings _isoSettings; string ISO_KEY_COMPLEX = "Key_complexIS"; _isoSettings = IsolatedStorageSettings.ApplicationSettings; newPeople = new People(); newPeople.Address = this.txtAddress.Text; newPeople.FirstName = this.txtFirstName.Text; newPeople.LastName = this.txtLastName.Text; _isoSettings[ISO_KEY_COMPLEX] = newPeople;
E para leitura destes dados o processo é tão simples quanto a inclusão de novos dados. Devemos apenas validar se o par chave/valor existe na Isolated Storage, e capturar os dados fazendo o cast para o tipo de dados que está ali armazenado. Isso pode ser feito desta forma:
if (_isoSettings.Contains(ISO_KEY_SIMPLE)) this.txtSimpleStorage.Text = _isoSettings[ISO_KEY_SIMPLE].ToString(); if (_isoSettings.Contains(ISO_KEY_COMPLEX)) { People loadPeople = null; loadPeople = (People)_isoSettings[ISO_KEY_COMPLEX]; this.txtLastName.Text = loadPeople.LastName; this.txtAddress.Text = loadPeople.Address; this.txtFirstName.Text = loadPeople.FirstName; }
Assim podemos ver que o uso de Isolated Storage no Windows Phone é fácil e amplo, isto é, podemos implementar facilmente e podemos armazenar estruturas complexas de forma muito simples.
[ Para fazer o download deste exemplo, clique aqui: http://code.msdn.microsoft.com/Utilizando-Isolated-38674467 ]
Esta foi mais uma dica de armazenamento de dados!
Referências:
http://msdn.microsoft.com/en-us/library/ff402541%28v=vs.92%29.aspx
Por
Fernando Henrique Inocêncio Borba Ferreira
Microsoft Most Valuable Professional – Data Platform Development