Quando una richiesta HTTP viene ricevuta da IIS, invia la richiesta all'applicazione richiesta in un pool di applicazioni gestito da uno o più processi di lavoro. Un processo di lavoro genera un thread dal pool di thread condiviso (se necessario) per soddisfare la richiesta http.Web Api Controller e pool di thread
(i) Nel contesto di un controller web api, quando viene ricevuta questa richiesta, il controller è istanziato e assegnato al thread generato?
(ii) Quando ci sono più richieste HTTP sullo stesso controller API, ci saranno tante istanze del controller per thread generato?
(iii) In uno scenario in cui una risorsa non thread-safe (dbContext) viene dichiarata a livello di classe e creata un'istanza in un costruttore e quindi utilizzata nei metodi di classe. Ci saranno problemi nell'impegno e nella gestione delle transazioni?
In sostanza, esiste una corrispondenza one-to-one dell'istanza controller per thread? (Sono consapevole che con asp.net più thread possono effettivamente servire una singola richiesta http).
Quindi ha senso istanziare un dbcontext all'interno dei metodi di azione e riutilizzarli con più istanze di repository diversi tutti nell'ambito del metodo di azione. Ho già provato questo e funziona :). Ma sono preoccupato per gli odori di codice ... –