Domanda Applicazione vs Sessione vs Cache


Qual è un caso d'uso appropriato per tutto quanto sopra? Sembra che la sessione e la cache siano abbastanza simili e non riesco a pensare a molto uso per l'applicazione.


64
2018-02-23 20:15


origine


risposte:


Lo stato delle applicazioni e delle sessioni ha una differenza molto importante:

Lo stato dell'applicazione è un archivio dati disponibile per tutte le classi in un'applicazione ASP.NET. Lo stato dell'applicazione è archiviato in memoria sul server ed è più veloce della memorizzazione e del recupero delle informazioni in un database. A differenza dello stato di sessione, che è specifico per una singola sessione utente, lo stato dell'applicazione si applica a tutti gli utenti e le sessioni. Pertanto, lo stato dell'applicazione è utile per memorizzare piccole quantità di dati utilizzati spesso che non cambiano da un utente all'altro

Panoramica sullo stato dell'applicazione
Panoramica sullo stato della sessione

La cache, d'altra parte, ti permette di memorizzare gli oggetti in memoria richiede risorse di server estese per creare - Offre potenti funzionalità che consentono di personalizzare il modo in cui gli elementi sono memorizzati nella cache e per quanto tempo sono memorizzati nella cache: è possibile impostare proprietà estese come priorità e scadenza.

Panoramica dei dati delle applicazioni di caching

Sebbene possano sembrare simili, sono nettamente separati e hanno ruoli diversi da svolgere in un'applicazione ASP.NET nel suo senso più ampio.


98
2018-02-23 20:25



La sessione è per utente. Non è condiviso tra gli utenti.

L'ambito dell'applicazione e della cache sono a livello di applicazione. La cache può essere scaduta. Se si dispone di dati che possono essere modificati diciamo 5 minuti, è possibile posizionarlo nella cache, mentre se si dispone di dati che non vengono aggiornati regolarmente, allora è il candidato di inserire nella variabile di applicazione.


20
2018-02-23 20:19



> Applicazione

1)Application object always stores data on the server side RAM
example: Application["hits"]=1;
(key-value pair).

2)Application object maintains its data till the web application is shut down or we release the data manually by assigning null or Clear() method is called.

3)Application object has no Timeouts or File Dependencies.

4)Its data can be assigned using Global.asax file

5)Application object is not used for performance optimization.

USED in maintaining hit counters, data from readonly files/tables which can then
be displayed on varrious web pages.

> Sessione

A session is defined as a period of time that is shared between the web application
 and the user. Each user that is using the web application has their own session.
 Items/Objects can be placed into the Session which would only define these object 
for that user. Session contains key variables which help to identify the related values.
 This can be thought of as a hash table. Each user would represent a different key node 
in the hash identifying unique values. The Session variables will be clear by the
 application which can clear it, as well as through the timeout property in the
 web config file. Usually the timeout is 20 minutes by default.

> Cache

The Cache can be thought of as the memory. It is simply, the memory of the machine/server
 from which the source code is running from. This is an extremely important feature which
 can allow you to store difficult and complex constructed data which can be reused.

Imaging you had to query a large set of different databases, which may consist records
 from databases ranging from MySQL, MSSQL, to ORACLE which were joined using some VB.NET
 or C# code. Now if the records where changing insignificantly every couple of hours,
 why would we need to do a live fetch/lookup every time the user wanted to get some 
information? It would first be slow, and resource intensive as we would have to
 reconstruct all the data before displaying it to the user. By using Cache, we can store 
it in memory, and directly bind the data. This would be a more elegant and efficient way 
to retrieve data, while maintaining optimal performance.

Per saperne di più Qui 


10
2017-12-06 06:25



La sessione viene utilizzata per informazioni specifiche dell'utente. Normalmente salvi il nome utente, le preferenze utente come nome schermo, ID carrello (se stai vendendo qualcosa), email ecc

La cache viene generalmente utilizzata quando si dispone di informazioni condivise tra tutte le persone. Solitamente è necessario ridurre i processi lunghi o i colpi nel DB. IE si desidera visualizzare i primi n articoli. È possibile impostare un limite di tempo su questo, quindi aggiornerà la data dopo un periodo di tempo

La variabile dell'applicazione è utile per le informazioni statiche che si desidera salvare sul server. Questo potrebbe essere il luogo in cui si trovano i file multimediali.


6
2018-04-05 01:18



C'è una limitazione molto importante dell'oggetto di sessione inproc incorporato che nessuna delle altre risposte ha evidenziato, che ne limita l'uso in siti Web ad alta concorrenza. In particolare, se si modifica qualsiasi elemento di sessione nel codice, la richiesta si bloccherà e attenderà il completamento di tutte le richieste di lettura all'oggetto di sessione. In questo caso, la cache è una scelta molto migliore:

Ho appena scoperto perché tutti i siti Web ASP.Net sono lenti e sto cercando di capire cosa fare al riguardo


1
2017-09-12 00:29



Nessuna di queste risposte rende abbastanza chiara una proprietà molto importante della cache: ha un ambito di applicazione ed è condivisa da tutti gli utenti! Tutti i dati memorizzati nella cache sono disponibili per tutti gli utenti. È comunque possibile memorizzare i dati nella cache che si desidera siano disponibili solo per a specifica utente, ma è necessario utilizzare un valore di chiave di cache che è univoco per tale utente, ad es. Cache.Add("UserData" + userID, data...


1
2017-08-31 17:43



Variabili di stato della sessione sono disponibili su tutte le pagine, ma solo per una singola sessione. Le variabili di sessione sono come dati globali per utente singolo. Solo la sessione corrente ha accesso al suo stato di sessione.

Variabili dello stato dell'applicazione sono disponibili in tutte le pagine e in tutte le sessioni. Le variabili di stato dell'applicazione sono come dati globali multiutente. Tutte le sessioni possono leggere e scrivere variabili dello stato dell'applicazione.


0
2018-01-19 18:39



Le variabili di stato di sessione sono disponibili su tutte le pagine, ma solo per una singola sessione. Le variabili di sessione sono come dati globali per utente singolo. Solo la sessione corrente ha accesso al suo stato di sessione.


0
2018-05-23 09:05