Pergunta

Eu estou trabalhando em um cliente Silverlight e associado serviços web ASP.NET (não WCF), e eu preciso implementar algumas características que contêm as preferências do usuário, tais como um sistema de "favorito itens" e se eles gostariam palavra-wrapping ou não. A fim de fazer uma agradável experiência do usuário (em vez de irritante), quero persistir essas configurações entre sessões. Uma investigação breve sugere que há duas possibilidades principais.

  1. Silverlight isolado de armazenamento
  2. banco de dados ASP.NET acessível

Eu percebo que a opção 2 é provavelmente a melhor opção, pois garante que mesmo que um usuário desativa isolado de armazenamento para Silverlight, suas preferências ainda persistem, mas eu gostaria de evitar o fardo de manter um banco de dados neste momento, e eu como a idéia de que as preferências estão disponíveis para carregar e editar mesmo quando a conectividade do servidor não está disponível. No entanto, eu estou aberto a argumentos fundamentados por que ele pode ser preferível tomar essa parada agora ou mais tarde.

O que eu estou procurando é sugestões sobre a melhor maneira de implementar configurações de persistência, em qualquer cenário. Por exemplo, se o armazenamento isolado é usado, devo usar um formato XML, ou algum outro layout de arquivo para persistir as configurações; se a abordagem de banco de dados é usado, eu tenho que criar uma tabela configurações ou há um built-in mecanismo no ASP.NET para apoiar esta, e como faço para servir as preferências para o cliente?

Assim:

Qual a solução é a melhor solução para a preferência do usuário persistência? Como pode ser configurações persistiu nessa solução, e como pode o acesso do cliente e atualizá-los?

Antes Research

Note que eu tenho conduzido um pouco de pesquisa antes sobre o assunto e encontrei os seguintes links, que parecem defender qualquer solução dependendo de qual artigo que você leu.

Atualização

Acontece que a Microsoft ter fornecido configurações persistência no armazenamento isolado como um built-in parte do Silverlight (eu de alguma forma perdeu-lo até que após a implementação de uma alternativa). minha resposta abaixo tem mais detalhes sobre este assunto.

Eu estou mantendo a questão em aberto, embora Microsoft fornece configurações do lado do cliente de persistência, não significa necessariamente que esta é a melhor abordagem para persistir as preferências do usuário e eu gostaria de lona mais opiniões e sugestões sobre este assunto.

Foi útil?

Solução

Depois de investigar um pouco mais e implementação de minhas próprias configurações baseadas em arquivo XML de persistência usando IsolatedStorage , descobri a IsolatedStorageSettings classe e o IsolatedStorageSettings.ApplicationSettings objeto que é uma coleção de chave / valor especificamente para armazenar específicas do usuário, configurações do aplicativo.

Tudo parece óbvio agora. Claro que, a longo prazo, um mecanismo para fazer backup e restaurar as configurações usando um banco de dados do servidor seria um bom reforço para este configurações do lado do cliente de persistência.

Outras dicas

Eu acho que, em geral, o padrão seria armazenar no servidor; somente quando há razões específicas convincentes para tentar armazenar no cliente que devemos fazê-lo. Quanto mais você confiar em armazenar em um meio que você não pode controlar, o maior risco que você assumir.

Dito isto, e estabelecendo-me no lado "banco de dados" do argumento, gostaria de pedir que a desvantagem de um banco de dados é? Você mencionou usando XML - é o seu dados apenas semi-estruturado? Se assim for, por que não armazenar XML em um banco de dados SQL? A criação de algo tão simples não seria geralmente considerado um "fardo" pela maioria dos padrões. Um serviço web simples poderia agir como um intermediário entre o cliente Silverlight eo banco de dados de configurações.

Se é uma característica importante para você que os usuários tenham acesso a suas preferências enquanto offline, então parece que o armazenamento isolado é o caminho a percorrer para você. Se é mais importante que os usuários ser capaz de salvar preferências, mesmo que tenham desligado o armazenamento isolado (é realmente um problema? Eu estaria tentado a chamar YAGNI sobre isso, mas eu não estou terrivelmente experiente com a plataforma Silverlight .. .), então você precisa para hospedar um banco de dados. Se ambos são importantes, então provavelmente você está olhando para algum tipo de solução híbrida; usar o armazenamento isolado, se disponível, em seguida, cair de volta para um banco de dados.

Em outras palavras, eu acho que as necessidades de sua aplicação são mais importantes do que algumas das melhores práticas abstrato.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top