Question

Je travaille sur un client Silverlight et sur les services Web ASP.NET associés (pas WCF), et je dois implémenter certaines fonctionnalités contenant des préférences utilisateur, telles qu'un "éléments favoris". système et si elles aimeraient habillage des mots ou non. Afin de créer une expérience utilisateur agréable (plutôt que irritante), je souhaite conserver ces paramètres au cours des sessions. Une brève enquête suggère qu'il existe deux possibilités principales.

  1. Stockage isolé Silverlight
  2. base de données accessible par ASP.NET

Je me rends compte que l'option 2 est probablement la meilleure option car elle garantit que même si un utilisateur désactive le stockage isolé pour Silverlight, leurs préférences persistent, mais je voudrais éviter le fardeau de la maintenance d'une base de données pour le moment. comme l'idée que les préférences sont disponibles pour le chargement et l'édition même lorsque la connectivité du serveur n'est pas disponible. Cependant, je suis ouvert à des arguments raisonnés sur les raisons pour lesquelles il serait préférable de prendre cette décision maintenant plutôt que plus tard.

Ce que je recherche, ce sont des suggestions sur la meilleure façon d'implémenter la persistance des paramètres, dans les deux cas. Par exemple, si un stockage isolé est utilisé, dois-je utiliser un format XML ou une autre structure de fichier pour conserver les paramètres; si l'approche par base de données est utilisée, dois-je concevoir un tableau de paramètres ou existe-t-il un mécanisme intégré dans ASP.NET pour prendre en charge cette opération, et comment puis-je servir les préférences au client?

Donc:

Quelle solution est la meilleure pour la persistance des préférences utilisateur? Comment les paramètres peuvent-ils être conservés dans cette solution et comment le client peut-il les accéder et les mettre à jour?

Recherche antérieure

Notez que j’ai déjà effectué quelques recherches sur le sujet et trouvé les liens suivants, qui semblent suggérer l’une ou l’autre des solutions en fonction de l’article que vous avez lu.

Mettre à jour

Il s’avère que Microsoft a fourni la persistance des paramètres dans le stockage isolé en tant que partie intégrante de Silverlight (je l’avais en quelque sorte oublié après avoir implémenté une alternative). Ma réponse ci-dessous contient davantage de détails à ce sujet.

Je garde la question ouverte car, même si Microsoft fournit la persistance des paramètres côté client, cela ne signifie pas nécessairement qu'il s'agit de la meilleure approche pour conserver les préférences de l'utilisateur et j'aimerais proposer davantage d'opinions et de suggestions à ce sujet.

Était-ce utile?

La solution

Après avoir enquêté davantage et mis en œuvre ma propre persistance de paramètres basée sur un fichier XML à l'aide de IsolatedStorage , j'ai découvert le IsolatedStorageSettings et la classe IsolatedStorageSettings.ApplicationSettings objet qui est une collection clé / valeur spécifiquement destinée au stockage de paramètres d’application spécifiques à l’utilisateur.

Tout semble évident maintenant. Bien entendu, à long terme, un mécanisme de sauvegarde et de restauration des paramètres à l'aide d'une base de données de serveur constituerait une amélioration intéressante de cette persistance des paramètres côté client.

Autres conseils

Je pense qu'en général, la valeur par défaut serait de stocker sur le serveur; nous ne devrions le faire que lorsqu'il existe des raisons impérieuses de tenter de stocker sur le client. Plus vous comptez stocker sur un support que vous ne pouvez pas contrôler, plus vous prenez de risques.

Cela étant dit, et me placer dans la "base de données" côté de l'argument, je voudrais demander ce que l'inconvénient d'une base de données est? Vous avez mentionné l'utilisation de XML - vos données sont-elles uniquement semi-structurées? Si oui, pourquoi ne pas stocker XML dans une base de données SQL? Installer quelque chose d'aussi simple ne serait généralement pas considéré comme un "fardeau". par la plupart des normes. Un simple service Web peut servir d’intermédiaire entre votre client Silverlight et la base de données de paramètres.

S'il est important pour vous que les utilisateurs aient accès à leurs préférences en mode hors connexion, il semble qu'un stockage isolé soit la solution. S'il est plus important que les utilisateurs puissent sauvegarder les préférences même s'ils ont désactivé le stockage isolé (est-ce vraiment un problème? Je serais tenté d'appeler YAGNI à ce sujet, mais je ne suis pas très expérimenté avec la plate-forme Silverlight .. .) alors vous devez héberger une base de données. Si les deux sont importants, vous envisagez probablement une solution hybride; en utilisant un stockage isolé si disponible, puis en retombant dans une base de données.

En d'autres termes, je pense que les besoins de votre application sont plus importants que certaines meilleures pratiques abstraites.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top