La quantità di dati che può/si deve conservare in un utenti oggetto di sessione?

StackOverflow https://stackoverflow.com/questions/73008

  •  09-06-2019
  •  | 
  •  

Domanda

Abbiamo diversi in stile wizard, le applicazioni modulo sul nostro sito web, dove siamo in grado di acquisire informazioni da parte dell'utente di ogni pagina e quindi invia ad un backend processo di utilizzo di un servizio web.

Purtroppo non siamo in grado di inviare le informazioni in blocchi durante ogni invio del modulo, in modo che abbiamo per memorizzare la sessione di utenti fino alla fine del processo e presentare tutti allo stesso tempo.

È la quantità di memoria del server/sql server spazio su disco l'unico vincolo su quanto posso conservare in sessioni di utenti o c'è qualcos'altro che devo prendere in considerazione?

Edit:Il sito è costruito su ASP.NET web form.

È stato utile?

Soluzione

Supponendo che le informazioni non sensibili, quindi è possibile memorizzare le informazioni in un cookie al fine di ridurre la quantità di informazioni che devono essere memorizzate lato server.Questo consentirebbe anche di accedere alle informazioni tramite JavaScript.

In alternativa si può usare il viewstate per conservare le informazioni, anche se questo può portare a grandi quantità di dati che vengono inviati tra il server e il client e non il mio preferito di soluzione.

La quantità di informazioni di sessione è necessario memorizzare varia notevolmente a seconda dell'applicazione, il numero previsto di utenti, il server specifica etc.Per dare una risposta più accurata richiederebbe ulteriori informazioni :)

Infine, supponendo che le informazioni raccolte durante il processo non è richiesto da pagina a pagina, è possibile memorizzare tutte le informazioni in una tabella di database e di memorizzare solo i record con id univoco della sessione.Come ogni pagina viene presentato il db un record viene aggiornato e quindi sull'ultima pagina tutte le informazioni è recuperato e inviato.Questa non è un'idea, soluzione, se avete bisogno di recuperare informazioni su ciascuna pagina successiva a causa del numero di db legge necessaria.

Altri suggerimenti

Si potrebbe anche avere 1 pagina asp con l'intero modulo html, e nascondere le parti di esso fino a quando l'utente compila e "sostiene" la parte visibile...

quindi semplicemente nascondere la parte che viene compilato e mostra la parte successiva del modulo...

Questo sarebbe estremamente facile .NET framework, utilizzo di pannelli per ogni "passaggio" e aggiungere loggic quando visualizzare e nascondere ogni pannello.

si avrà quindi tutti i dati in una pagina.

Se si utilizza un tradizionale HTTP modello (es.non utilizzare runat="server") si possono inviare i dati ad un'altra pagina asp e posto i dati inseriti nel modulo nascosto elementi, si può fare questo per tuttavia molte pagine è necessario, quindi, evitando l'immissione nulla in una variabile di sessione.

Quanto è problematico dal punto di vista del rendimento di memorizzare grandi quantità di dati in oggetto della Sessione utente, ASP.Net fornisce alcune altre soluzioni su ciò che è menzionato nel post di cui sopra. ASP.NET Profilo Provider consente di mantenere relative alla sessione di informazioni in un database.È inoltre possibile utilizzare Lo Stato Di Sessione Server che utilizza un server per memorizzare tutte le informazioni di Sessione.Entrambe queste situazioni di prendere in considerazione se avete bisogno di utilizzare cluster o bilanciatori di carico, il server è ancora possibile riconoscere la sessione di informazioni tra server diversi.Se si memorizzano le informazioni in Sessione Http oggetto, si verificano il problema è che un utente debba andare sempre allo stesso server per la sessione.

Sessione viewstate, database.Questi sono tutti lenti, ma otterrà il lavoro fatto.

Nascosto campi del modulo è la risposta che mi piace di più.

Ci sono altri modi per mantenere lo stato.I cookie, finestra di popup, set di frame o iframe.

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