Hai detto che il tuo servizio ha delle dipendenze.
Se una qualsiasi dipendenza nel tuo grafo di dipendenze non è completamente priva di stato, o se una delle tue dipendenze nel tuo grafico delle dipendenze dovrebbe essere modificata per non essere più completamente priva di stato, allora l'intero sistema fallirà. E gli errori che otterrai saranno probabilmente molto criptici, rendendo così difficile scoprire il problema.
Supponiamo che tu sia un team di sviluppatori che lavorano al progetto. È altamente improbabile che ognuno di loro sia consapevole del fatto che la configurazione IOC richiede che tutti questi componenti rimangano completamente privi di stato. Potrebbero saperlo ora, ma quella consapevolezza svanirà nel tempo. E se assumi un nuovo ragazzo, anche lui / lei non sarà a conoscenza.
Quindi definisco definitivamente il contenitore IOC per restituire una nuova istanza ogni volta. È semplicemente la scelta più sicura, imho.
Non mi preoccuperei certamente delle risorse. Il costo di costruzione e raccolta dei rifiuti di oggetti è probabilmente insignificante rispetto ad es. solo una singola ricerca nel database.