Inversão de Controlo e Injecção de  Dependência no .NET Framework
Caio Proiete•   10 anos de experiência profissional em TI•   Microsoft Most Valuable Professional•   Microsoft Certified T...
Agenda• Inversão de Controlo (IoC) - Princípio• Dependency Injection (DI) - Padrão  • Demo• Unity como container para DI  ...
// Magic. Do not touch.
// Magic. Do not touch.// When I wrote this, only God and Iunderstood what I was doing
// Magic. Do not touch.// When I wrote this, only God and Iunderstood what I was doing// Now, God only knows
// Magic. Do not touch.// When I wrote this, only God and Iunderstood what I was doing// Now, God only knows// somedev1 - ...
// Magic. Do not touch.// When I wrote this, only God and Iunderstood what I was doing// Now, God only knows// somedev1 - ...
Inversão de Controlo (IoC)Numa hierarquia, os módulos de nível maisalto não devem depender directamente dosmódulos de níve...
Inversão de Controlo (IoC)Exemplo (simples) da Violação do Princípiopublic class SessoesTechDaysService{    public IEnumer...
Inversão de Controlo (IoC)Exemplo (simples) da Violação do Princípiopublic class SessoesTechDaysService{    public IEnumer...
Inversão de Controlo (IoC)Exemplo (simples) da Violação do Princípio        Precisamos abstrair esta dependência.public cl...
Injecção de Dependências (DI)• Técnica / Padrão de Implementação• Diferentes Formas de Implementar  • Constructor Injectio...
Injecção de Dependência (DI)Demo
Unity: DI Container• “Application Block” da Microsoft disponível  no CodePlex  • http://unity.codeplex.com• Actuamente na ...
Unity: Container para DIDemo
Outros containers para DI• Autofac   • http://code.google.com/p/autofac• Castle Windsor   • http://www.castleproject.org/c...
Resumo• Dependency Injection  • Classes independentes umas das outras através    de abstrações.  • Menor impacto para intr...
Q&A
A sua opinião é importante!Complete o questionário deavaliação e devolva-o à saida.
Inversão de Controlo e Injecção de Dependência na .NET Framework
Inversão de Controlo e Injecção de Dependência na .NET Framework
Inversão de Controlo e Injecção de Dependência na .NET Framework
Upcoming SlideShare
Loading in …5
×

Inversão de Controlo e Injecção de Dependência na .NET Framework

1,184 views
1,052 views

Published on

Apresentação realizada no evento Microsoft TechDays 2010 (http://www.techdays2010.com) sobre Inversão de Controlo e Injecção de Dependência na .NET Framework.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,184
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Inversão de Controlo e Injecção de Dependência na .NET Framework

  1. 1. Inversão de Controlo e Injecção de Dependência no .NET Framework
  2. 2. Caio Proiete• 10 anos de experiência profissional em TI• Microsoft Most Valuable Professional• Microsoft Certified Trainer @ CICLO• Líder da Comunidade NetPonto
  3. 3. Agenda• Inversão de Controlo (IoC) - Princípio• Dependency Injection (DI) - Padrão • Demo• Unity como container para DI • Demo• Outros containers para DI
  4. 4. // Magic. Do not touch.
  5. 5. // Magic. Do not touch.// When I wrote this, only God and Iunderstood what I was doing
  6. 6. // Magic. Do not touch.// When I wrote this, only God and Iunderstood what I was doing// Now, God only knows
  7. 7. // Magic. Do not touch.// When I wrote this, only God and Iunderstood what I was doing// Now, God only knows// somedev1 - 06/07/02 Adding temporarytracking of Login screen
  8. 8. // Magic. Do not touch.// When I wrote this, only God and Iunderstood what I was doing// Now, God only knows// somedev1 - 06/07/02 Adding temporarytracking of Login screen// somedev2 - 05/22/07 Temporary my ass
  9. 9. Inversão de Controlo (IoC)Numa hierarquia, os módulos de nível maisalto não devem depender directamente dosmódulos de nível mais baixo. Ambos devemdepender de abstrações.As abstrações não devem depender dedetalhes de implementação, mas os detalhesdevem depender das abstrações.
  10. 10. Inversão de Controlo (IoC)Exemplo (simples) da Violação do Princípiopublic class SessoesTechDaysService{ public IEnumerable<Sessao> ObterSessoesDo(string nomeOrador) { var service = new TechDaysDataService(); return service.ObterSessoes() .Where(s => s.Orador.Nome == nomeOrador) }}
  11. 11. Inversão de Controlo (IoC)Exemplo (simples) da Violação do Princípiopublic class SessoesTechDaysService{ public IEnumerable<Sessao> ObterSessoesDo(string nomeOrador) { var service = new TechDaysDataService(); return service.ObterSessoes() .Where(s => s.Orador.Nome == nomeOrador) }}
  12. 12. Inversão de Controlo (IoC)Exemplo (simples) da Violação do Princípio Precisamos abstrair esta dependência.public class SessoesTechDaysService{ Dependency Injection FTW :) public IEnumerable<Sessao> ObterSessoesDo(string nomeOrador) { var service = new TechDaysDataService(); return service.ObterSessoes() .Where(s => s.Orador.Nome == nomeOrador) }}
  13. 13. Injecção de Dependências (DI)• Técnica / Padrão de Implementação• Diferentes Formas de Implementar • Constructor Injection* • Setter Injection • Interface Injection * mais comum
  14. 14. Injecção de Dependência (DI)Demo
  15. 15. Unity: DI Container• “Application Block” da Microsoft disponível no CodePlex • http://unity.codeplex.com• Actuamente na versão 2.0.• Parte integrante da Enterprise Library • http://entlib.codeplex.com
  16. 16. Unity: Container para DIDemo
  17. 17. Outros containers para DI• Autofac • http://code.google.com/p/autofac• Castle Windsor • http://www.castleproject.org/container/index.html• Ninject • http://ninject.org• Spring.NET • http://www.springframework.net• StructureMap • http://structuremap.sourceforge.net• Lista com mais algumas opções • http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx
  18. 18. Resumo• Dependency Injection • Classes independentes umas das outras através de abstrações. • Menor impacto para introdução de mudanças e código mais fácil de testar. • Diferentes formas de implementar (Constructor, Setter, Interface, entre outras... • Normalmente utiliza-se algum tipo de Container para as dependências. Várias opções disponíveis.
  19. 19. Q&A
  20. 20. A sua opinião é importante!Complete o questionário deavaliação e devolva-o à saida.

×