Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

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

1.255 Aufrufe

Veröffentlicht am

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.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

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.

×