Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 36245|Resposta: 1

[.NET Core] ASP.NET Injeção de Dependência Core usa o contêiner IOC que vem com ele

[Copiar link]
Publicado em 07/05/2019 13:55:10 | | | |
ASP.NET Injeção de Dependência Core usa o contêiner IOC que vem com ele
https://www.itsvse.com/thread-7562-1-1.html
(Fonte: Architect_Programmer)

ASP.NET Core usa Autofac para implementar a injeção de IOC
https://www.itsvse.com/thread-7563-1-1.html
(Fonte: Architect_Programmer)

ASP.NET Core usa o Autofac para implementar interceptação AOP
https://www.itsvse.com/thread-7566-1-1.html
(Fonte: Architect_Programmer)

No novo ASP.NET Core, um grande número de injeções de dependência é usado para escrever código.

Por exemplo, em nossa aula de Startup, podemos ver o seguinte:

O AddMvc AddDbContext inclui o AddDirectoryBrowser que usávamos para tours de diretórios antes:

Todos são frameworks que oferecem bons serviços, e podemos usá-los diretamente ao injetá-los.

Inversão de Controle (IoC) é um princípio de design em programação orientada a objetos que pode ser usado para reduzir o acoplamento entre códigos de computador. O método mais comum é chamado de Injeção de Dependências (DI), e também existe um método chamado "Consulta de Dependências". Ao controlar a inversão, quando um objeto é criado, uma entidade externa que controla todos os objetos do sistema lhe repassa uma referência ao objeto do qual depende. Também pode-se dizer que dependências são injetadas no objeto.

Para usar o ioc, a classe Startup precisa referenciar Microsoft.Extensions.DependencyInjection(ps), que já é bastante simples: Microsoft... Expandir... Injeção de dependência - - ,)

Injetar o ciclo de vida de um serviço

A Microsoft oferece 3 ciclos de vida para serviços auto-injetados.

Transitório

Um serviço instantâneo de ciclo de vida que é criado toda vez que é solicitado. Esse ciclo de vida é mais adequado para serviços leves e sem estado.

Escopo

No mesmo escopo, o serviço é criado apenas uma vez por solicitação.

Singleton (Apenas)

O global é criado apenas uma vez, na primeira vez que é solicitado, e então é sempre usado.

Como você usa esses três ciclos de vida? Podemos usar métodos diferentes diretamente ao injetar, o código é o seguinte:


Vamos testar a geração específica desses três ciclos de vida

Escrevemos três interfaces com nomes diferentes e 3 classes distintas para implementar as interfaces, da seguinte forma:

Em cada construtor de classe de implementação, geramos um novo GUID, que nos permite determinar se a classe reexecutou o construtor.

Injetar serviços no controlador

Geralmente existem três formas de injeção: injeção por construtor, injeção por método e injeção de atributo. O próprio container IOC da Microsoft usa injeção de construtores por padrão (A injeção de atributos não é suportada, mas isso pode ser alcançado com substituição de contêiner de terceiros)

Ver código da página:

Execute o projeto e acesse por meio de 2 navegadores diferentes, como mostrado abaixo:



Descobrimos que os GUIDs gerados duas vezes no ciclo de vida instantâneo são inconsistentes, indicando que o objeto não é o mesmo.

No entanto, o ciclo de vida do escopo é o mesmo, pois sob o mesmo escopo, o GUID do serviço usado duas vezes no mesmo navegador é o mesmo, indicando que o mesmo objeto é usado.

No caso de um singleton, dois navegadores diferentes acessam sempre o mesmo GUID, indicando que o mesmo objeto está sendo chamado.

(Fim)






Anterior:.NET Core Entity Entity usa o Entity Framework Core para conectar bancos de dados
Próximo:ASP.NET Core usa Autofac para implementar a injeção de IOC
 Senhorio| Publicado em 09/03/2022 11:00:35 |
Substituir serviços nos contêineres DI embutidos do ASP.NET Core

Código:





Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com