Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais
Unity.MVC e o Web.Config
Data:1/31/2012

Translate this page now :





Categories: MVC , ASP.NET

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :
Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon

Veja Também


Na demonstração anterior sobre DI com Unity e MVC foi feita uma referência entre o site e a camada de negócios, o que, como citamos anteriormente, é indesejado devido ao vínculo rígido de design que mantém entre os 2.

Vamos então, partindo do projeto anterior, melhorar a separação das camadas removendo essa dependência :

Passo-a-Passo

1) No web.config, adicione logo no inicio da tag Configuration a seguinte tag :

     <configSections>
          <section name="unity" 
                   type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
  </configSections>

Explicação

Estamos criando uma nova seção no web.config. Precisamos fazer referência a classe que define essa nova seção do web.config.

2) Ainda no web.config, adicione as seguintes tags :

  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
          <container>
                 <register 
                   type="libInterface.ICalculo, libInterface" 
                           mapTo="libBLL.FazerCalculo, libBLL"  />     
          </container>   
  </unity>

Explicação

Com essas tags estamos substituindo a configuração do container em código por tags no web.config. Com isso ao invés da configuração ficar compilada junto ao código, ficará no web.config, acessível para mudanças mesmo em run-time

3) No arquivo Bootstrapper.cs insira um using adicional :

using Microsoft.Practices.Unity.Configuration;

4) Ainda no arquivo Bootstrapper.cs, na rotina BuildUnityContainer adicione a seguinte linha de código :

            container.LoadConfiguration();

5) Remova do BuildUnityContainer a linha resolve, deixando o código final da seguinte forma :

        private static IUnityContainer BuildUnityContainer()
        {
            var container = new UnityContainer();

            // register all your components with the container here
            // e.g. container.RegisterType();            
            container.LoadConfiguration();        

            container.RegisterControllers();

            return container;
        }

6) No site MVC, remova a referência para a libBLL.

Importante

A configuração no web.config faz com que a libBLL seja necessária, portanto precisará ser copiada para a pasta bin da aplicação. Com a ausência da referência essa cópia precisará ser um procedimento manual.

Essa organização da solução traz a possibilidade das dependências serem facilmente trocadas em run-time com a simples edição do web.config, o que não conseguiríamos com o container configurado em código.



Categories: MVC , ASP.NET


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br