Domanda

Sto lavorando su un client Silverlight e sui servizi web ASP.NET associati (non su WCF) e devo implementare alcune funzionalità contenenti le preferenze dell'utente come un "oggetto preferito"; sistema e se vorrebbero il wrapping delle parole o meno. Al fine di rendere l'esperienza utente piacevole (piuttosto che esasperante), voglio mantenere queste impostazioni attraverso le sessioni. Una breve indagine suggerisce che esistono due possibilità principali.

  1. Archiviazione isolata Silverlight
  2. Database accessibile da ASP.NET

Mi rendo conto che l'opzione 2 è probabilmente l'opzione migliore in quanto garantisce che anche se un utente disabilita l'archiviazione isolata per Silverlight, le sue preferenze persistono, ma vorrei evitare l'onere di mantenere un database in questo momento, e io come l'idea che le preferenze siano disponibili per il caricamento e la modifica anche quando la connettività del server non è disponibile. Tuttavia, sono aperto a argomentazioni ragionate sul perché potrebbe essere preferibile prendere questo successo ora piuttosto che dopo.

Quello che sto cercando sono suggerimenti sul modo migliore per implementare la persistenza delle impostazioni, in entrambi gli scenari. Ad esempio, se si utilizza l'archiviazione isolata, è necessario utilizzare un formato XML o un altro layout di file per mantenere le impostazioni; se viene utilizzato l'approccio del database, devo progettare una tabella delle impostazioni o esiste un meccanismo integrato in ASP.NET per supportarlo e come posso servire le preferenze al client?

Qual è la soluzione migliore per la persistenza delle preferenze dell'utente? Come possono persistere le impostazioni in quella soluzione e in che modo il client può accedervi e aggiornarle?

Ricerche precedenti

Nota che ho condotto alcune ricerche precedenti sull'argomento e ho trovato i seguenti link, che sembrano sostenere entrambe le soluzioni a seconda dell'articolo che leggi.

Aggiornamento

Si scopre che Microsoft ha fornito la persistenza delle impostazioni nello spazio di archiviazione isolato come parte integrante di Silverlight (in qualche modo l'ho perso fino a dopo aver implementato un'alternativa). La mia risposta di seguito contiene ulteriori dettagli al riguardo.

Tengo aperta la domanda poiché anche se Microsoft fornisce la persistenza delle impostazioni sul lato client, ciò non significa necessariamente che questo sia l'approccio migliore per il persistere delle preferenze dell'utente e mi piacerebbe tracciare più opinioni e suggerimenti su questo.

È stato utile?

Soluzione

Dopo aver approfondito un po 'di più e implementato la mia persistenza delle impostazioni basate su file XML usando IsolatedStorage , ho scoperto IsolatedStorageSettings e la classe IsolatedStorageSettings.ApplicationSettings oggetto che è una raccolta chiave / valore specifica per la memorizzazione di impostazioni dell'applicazione specifiche dell'utente.

Adesso sembra tutto ovvio. Naturalmente, a lungo termine, un meccanismo per il backup e il ripristino delle impostazioni utilizzando un database server sarebbe un buon miglioramento della persistenza delle impostazioni sul lato client.

Altri suggerimenti

Penso che in generale il default sia l'archiviazione sul server; solo quando ci sono ragioni convincenti specifiche per tentare di archiviare sul client dovremmo farlo. Più fai affidamento sulla memorizzazione in un supporto che non puoi controllare, più rischi corri.

Detto questo, e impostandomi sul "database" lato dell'argomento, vorrei chiedere qual è il rovescio della medaglia di un database? Hai menzionato l'utilizzo di XML: i tuoi dati sono solo semi-strutturati? In tal caso, perché non archiviare XML in un database SQL? Configurare qualcosa di così semplice non sarebbe generalmente considerato un "onere". dalla maggior parte degli standard. Un semplice servizio Web potrebbe fungere da intermediario tra il client Silverlight e il database delle impostazioni.

Se per te è una caratteristica importante che gli utenti abbiano accesso alle loro preferenze mentre sono offline, allora sembra che l'archiviazione isolata sia la strada giusta per te. Se è più importante che gli utenti siano in grado di salvare le preferenze anche se hanno disattivato l'archiviazione isolata (è davvero un problema? Sarei tentato di chiamare YAGNI su questo, ma non sono terribilmente esperto con la piattaforma Silverlight .. .) quindi è necessario ospitare un database. Se entrambi sono importanti, probabilmente stai cercando una sorta di soluzione ibrida; usando l'archiviazione isolata se disponibile, quindi ricadendo in un database

In altre parole, penso che le esigenze della tua applicazione siano più importanti di alcune best practice astratte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top