Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 36245|Risposta: 1

[.NET Core] ASP.NET Core dependency injection utilizza il container IOC che lo accompagna

[Copiato link]
Pubblicato su 07/05/2019 13:55:10 | | | |
ASP.NET Core dependency injection utilizza il container IOC che lo accompagna
https://www.itsvse.com/thread-7562-1-1.html
(Fonte: Architect_Programmer)

ASP.NET Core utilizza Autofac per implementare l'iniezione IOC
https://www.itsvse.com/thread-7563-1-1.html
(Fonte: Architect_Programmer)

ASP.NET Core utilizza Autofac per implementare l'intercettazione AOP
https://www.itsvse.com/thread-7566-1-1.html
(Fonte: Architect_Programmer)

Nel nuovo ASP.NET Core, un gran numero di iniezioni di dipendenza viene utilizzato per scrivere codice.

Ad esempio, nella nostra classe Startup, possiamo vedere quanto segue:

AddMvc AddDbContext include l'AddDirectoryBrowser che utilizzavamo per i tour delle directory precedenti:

Sono tutti framework che forniscono buoni servizi, e possiamo usarli direttamente inserendoli.

L'inversione di controllo (IoC) è un principio di progettazione nella programmazione orientata agli oggetti che può essere utilizzato per ridurre l'accoppiamento tra il codice informatico. Il metodo più comune è chiamato Pendency Injection (DI), e esiste anche un metodo chiamato "Dependency Lookup". Controllando l'inversione, quando un oggetto viene creato, un'entità esterna che controlla tutti gli oggetti nel sistema gli passa un riferimento all'oggetto da cui dipende. Si può anche dire che le dipendenze vengono iniettate nell'oggetto.

Per usare l'ioc, la classe Startup deve fare riferimento a Microsoft.Extensions.DependencyInjection(ps), che è già piuttosto semplice: Microsoft... Espandi... Iniezione di dipendenza - - ,)

Inietta il ciclo di vita di un servizio

Microsoft offre 3 cicli di vita per i servizi auto-iniettati.

Transitorio

Un servizio istantaneo del ciclo di vita che viene creato ogni volta che viene richiesto. Questo ciclo di vita è più adatto a servizi leggeri e senza stato.

Ambito

Nello stesso ambito, il servizio viene creato una sola volta per richiesta.

Singleton (Solo)

Il globale viene creato solo una volta, la prima volta che viene richiesto, e poi viene sempre utilizzato.

Come si utilizzano questi tre cicli di vita? Possiamo usare metodi diversi direttamente durante l'iniezione, il codice è il seguente:


Testiamo la generazione specifica di questi tre cicli di vita

Scriviamo tre interfacce con nomi diversi e 3 classi diverse per implementare le interfacce, come segue:

Nel costruttore di ogni classe di implementazione, generiamo un nuovo GUID, che ci permette di determinare se la classe ha rieseguito il costruttore.

Inietta i servizi nel controller

Generalmente esistono tre modi di iniezione: iniezione costruttiva, iniezione metodografica e iniezione attributo. Il container IOC di Microsoft utilizza di default l'iniezione di costruttori (L'iniezione di attributi non è supportata, ma può essere ottenuto con la sostituzione di un contenitore di terze parti)

Visualizza codice pagina:

Esegui il progetto e accedi tramite 2 browser diversi, come mostrato di seguito:



Abbiamo riscontrato che i GUID generati due volte nel ciclo di vita istantaneo sono incoerenti, indicando che l'oggetto non è lo stesso.

Tuttavia, il ciclo di vita dell'ambito è lo stesso, perché con lo stesso ambito, il GUID del servizio usato due volte nello stesso browser è lo stesso, indicando che viene utilizzato lo stesso oggetto.

Nel caso di un singleton, due browser diversi accedono sempre allo stesso GUID, indicando che lo stesso oggetto viene chiamato.

(Fine)






Precedente:.NET Core Entity utilizza Entity Framework Core per collegare database
Prossimo:ASP.NET Core utilizza Autofac per implementare l'iniezione IOC
 Padrone di casa| Pubblicato su 09/03/2022 11:00:35 |
Sostituire i servizi nei container DI integrati di ASP.NET Core

Codice:





Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com