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.

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 memorizzazione nella cache, d’altra parte, consente di archiviare oggetti in memoria che richiedono vaste risorse del server per creare : offre potenti funzionalità che consentono di personalizzare il modo in cui gli elementi sono memorizzati nella cache e quanto tempo sono memorizzati nella cache: è ansible 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.

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, è ansible posizionarlo nella cache, mentre se si dispone di dati che non vengono aggiornati regolarmente, allora è il candidato di inserire nella variabile di applicazione.

> 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

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. È ansible 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.

C’è una limitazione molto importante dell’object 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’object 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

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

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.

Le 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.

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.