Pregunta

Estoy trabajando en un cliente Silverlight y en los servicios web asociados ASP.NET (no en WCF), y necesito implementar algunas funciones que contengan preferencias de usuario, como los "elementos favoritos". sistema y si les gustaría envolver palabras o no. Con el fin de crear una experiencia de usuario agradable (en lugar de exasperante), deseo mantener estos ajustes en todas las sesiones. Una breve investigación sugiere que hay dos posibilidades principales.

  1. almacenamiento aislado de Silverlight
  2. base de datos accesible a ASP.NET

Me doy cuenta de que la opción 2 es probablemente la mejor, ya que asegura que incluso si un usuario desactiva el almacenamiento aislado para Silverlight, sus preferencias aún persisten, pero me gustaría evitar la carga de mantener una base de datos en este momento. como la idea de que las preferencias están disponibles para cargar y editar incluso cuando la conectividad del servidor no está disponible. Sin embargo, estoy abierto a argumentos razonados por los que podría ser preferible tomar este golpe ahora en lugar de más tarde.

Lo que estoy buscando son sugerencias sobre la mejor manera de implementar la persistencia de la configuración, en cualquier escenario. Por ejemplo, si se usa almacenamiento aislado, debo usar un formato XML o algún otro diseño de archivo para conservar la configuración; si se usa el enfoque de base de datos, ¿tengo que diseñar una tabla de configuración o hay un mecanismo incorporado en ASP.NET para admitir esto, y cómo sirvo las preferencias al cliente?

Entonces:

¿Qué solución es la mejor solución para la persistencia de las preferencias del usuario? ¿Cómo podrían persistir las configuraciones en esa solución, y cómo podrían el cliente acceder y actualizarlas?

Investigación previa

Tenga en cuenta que he realizado una pequeña investigación previa sobre el tema y he encontrado los siguientes enlaces, que parecen recomendar cualquiera de las soluciones según el artículo que lea.

Actualizar

Resulta que Microsoft ha proporcionado la persistencia de configuraciones en el almacenamiento aislado como una parte integrada de Silverlight (de alguna manera me la perdí hasta después de implementar una alternativa). Mi respuesta a continuación tiene más detalles sobre esto.

Mantengo la pregunta abierta ya que aunque Microsoft proporciona persistencia en la configuración del lado del cliente, no significa necesariamente que este sea el mejor enfoque para las preferencias persistentes de los usuarios y me gustaría agregar más opiniones y sugerencias al respecto.

¿Fue útil?

Solución

Después de investigar un poco más e implementar mi propia persistencia de configuración basada en archivos XML usando IsolatedStorage , descubrí el IsolatedStorageSettings y la clase IsolatedStorageSettings.ApplicationSettings que es una colección de clave / valor específicamente para almacenar configuraciones de aplicaciones específicas del usuario.

Todo parece obvio ahora. Por supuesto, a largo plazo, un mecanismo para realizar copias de seguridad y restaurar configuraciones utilizando una base de datos del servidor sería una buena mejora para esta persistencia de configuración del lado del cliente.

Otros consejos

Creo que, en general, lo predeterminado sería almacenar en el servidor; Solo cuando existan razones convincentes específicas para intentar almacenar en el cliente, deberíamos hacerlo. Cuanto más dependa de almacenar en un medio que no pueda controlar, más riesgo asumirá.

Habiendo dicho eso, y estableciéndome en la " base de datos " parte del argumento, me gustaría preguntar cuál es la desventaja de una base de datos? Usted mencionó el uso de XML: ¿sus datos son solo semiestructurados? Si es así, ¿por qué no almacenar XML en una base de datos SQL? Configurar algo así de simple no se consideraría generalmente una " carga " por la mayoría de los estándares. Un servicio web simple podría actuar como un intermediario entre su cliente de Silverlight y la base de datos de configuración.

Si es una característica importante para usted que los usuarios tengan acceso a sus preferencias mientras están fuera de línea, entonces parece que el almacenamiento aislado es el camino a seguir para usted. Si es más importante que los usuarios puedan guardar las preferencias incluso si han desactivado el almacenamiento aislado (¿es esto realmente un problema? Estaría tentado de llamar a YAGNI al respecto, pero no tengo mucha experiencia con la plataforma Silverlight). .) entonces necesitas alojar una base de datos. Si ambos son importantes, entonces probablemente estés buscando algún tipo de solución híbrida; usando almacenamiento aislado si está disponible, luego retroceda a una base de datos.

En otras palabras, creo que las necesidades de su aplicación son más importantes que algunas de las mejores prácticas abstractas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top