IoC em ASP.NET MVC com Unity Application Block

Uma prática muito comum e bem aceita em projetos de software é a utilização do pattern “Injeção de Dependências” (Dependency Injection). Este post não pretende explicar o que é a inversão de controle e a injeção de dependências. Para isso você pode procurar excelentes posts, como este do Martin Fowler. O que veremos aqui é como preparar o seu projeto para começar utilizar o Unity Application Block

Para começar, vamos adicionar as referências do Unity utilizando o Package Manager Console. Instalando com o nuget, nós podemos instalar uma versão preparada para o asp.net mvc, mas não nada mais do que adicionar as referências do Unity ao projeto e criar uma classe chamada Bootstrapper. Para instalar o Unity, basta digitar:

Install-Package Unity.Mvc4

Agora vamos inicializar o Unity em nosso Application_Start que fica em Global.asax.cs

protected void Application_Start()
{
    // ... o que mais tem dentro de application_start()
    Bootstrapper.Initialise();
}

Agora que temos isso, fica fácil todo o resto (como se até agora já não tivesse sido o suficiente né? =D). Basta adicionarmos as dependências que o Unity gerenciará em BuildUnityContainer() que fica dentro da classe Bootstrapper. Imagine que você quer que o seu controller passe a receber seu service através do Unity, basta informarmos ao Unity para ele injetar o service onde precise. Como?
Na classe bootstrapper informe o unity sobre a existência do seu service e a classe que o implementa:

private static IUnityContainer BuildUnityContainer()
{
    var container = new UnityContainer();
    container.RegisterType<IPasswordService, PasswordService>();
    RegisterTypes(container);

    return container;
}

Agora basta esperar em nosso controller que um PasswordService seja injetado:

public class AccountController : Controller
{
    readonly IPasswordService passwordService;

    public AccountController(IPasswordService passwordService)
    {
        this.passwordService = passwordService;
    }

...

Pronto! Por hoje é só 😉

Anúncios

Um comentário sobre “IoC em ASP.NET MVC com Unity Application Block

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s