Mi considero consapevole dei concetti di threading e perché determinati codici sono o non sono "thread-safe", ma come qualcuno che lavora principalmente con ASP.NET, la sicurezza di threading e thread è qualcosa a cui raramente penso. Tuttavia, mi sembra di imbattersi in numerosi commenti e risposte (non necessariamente per ASP.NET) su Stack Overflow per l'effetto di "avviso - che non è thread-safe!, "e tende a indurmi a pensare se ho scritto un codice simile che potrebbe effettivamente causare un problema nelle mie applicazioni. [Shock, orrore, ecc] Quindi sono costretto a chiedere: gli sviluppatoriGli sviluppatori ASP.NET devono davvero preoccuparsi della sicurezza dei thread?
Do ASP.NET davvero bisogno di essere interessati con la sicurezza dei thread?
Prendete il mio: Mentre un'applicazione web è intrinsecamente multi-threaded, ogni richiesta particolare arriva su un singolo thread, e tutti non statici tipi di creare, modificare o distruggere sono esclusivi a quel singolo thread/richiesta. Se la richiesta crea un'istanza di un oggetto DAL che crea un'istanza di un oggetto business e I want to lazy-initialize a collection within this object, , non importa se non è thread-safe, perché non verrà mai toccato da un altro thread. ...Destra? (Supponiamo di non iniziare un nuovo thread per avviare un processo asincrono di lunga durata durante la richiesta.) Sono perfettamente consapevole del fatto che cambia tutto.)
Naturalmente, classi, metodi e variabili statici sono solo le di fronte. Sono condivisi da ogni richiesta e lo sviluppatore deve stare molto attento a non avere codice "non sicuro" che, quando viene eseguito da un utente, può avere un effetto non voluto su tutti gli altri.
Ma questo è tutto, e quindi la sicurezza dei thread in ASP.NET si riduce principalmente a questo: Prestare attenzione a come si progetta e si utilizza la statica. Oltre a questo, non devi preoccuparti di niente.
Mi sbaglio su tutto ciò? Sei in disaccordo? Illuminami!
Non dimenticare i valori di sessione. :) – Randolpho
A quale punto i valori di sessione saranno accessibili da più di un thread? –