Come gestire le variabili statiche in una libreria che viene utilizzato sia per desktop e web?

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

  •  19-09-2019
  •  | 
  •  

Domanda

Ho alcune classi della libreria C # che fanno uso di variabili statiche. Io uso queste classi della libreria sia per applicazioni desktop e web. Il problema è che, come ho appena scoperto, variabili statiche non vanno giù così bene su un server web; i valori sono condivisi in tutte le sessioni che utilizzano il sito web!

Come faccio a preservare le caratteristiche di una variabile statica per l'uso nelle mie applicazioni desktop, pur facendo in modo che ogni sessione sul mio server web ha i suoi propri valori indipendenti per queste variabili - ma all'interno della sessione stessa, ancora si comporta davvero come una statica?

È stato utile?

Soluzione

i valori delle variabili statiche vengono condivisi tra tutte le discussioni in un dominio applicazione. In un'applicazione ASP.NET il metodo consigliato per memorizzare i dati che è legato solo per l'utente corrente è il Session .

Se è possibile modificare il codice di questa libreria condivisa vi consiglio di estrarre un'interfaccia da queste variabili statiche che forniranno un meccanismo per memorizzare i valori. Questo permetterà ogni applicazione per fornire la propria implementazione. Per un'applicazione Windows è possibile utilizzare un'implementazione che utilizza internamente una variabile statica. Per un'applicazione ASP.NET è possibile utilizzare la sessione. Ma in tutti i casi si espone solo un'interfaccia. Ciò avrà anche l'effetto positivo di rendere il codice più facile da unit test.

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