• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
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

on

  • 1,177 views

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.

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.

Statistics

Views

Total Views
1,177
Views on SlideShare
1,172
Embed Views
5

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 5

http://www.linkedin.com 3
http://localhost:3808 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    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 Presentation Transcript

    • 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 Trainer @ CICLO• Líder da Comunidade NetPonto
    • Agenda• Inversão de Controlo (IoC) - Princípio• Dependency Injection (DI) - Padrão • Demo• Unity como container para DI • Demo• Outros containers 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 - 06/07/02 Adding temporarytracking of Login screen
    • // 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
    • 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.
    • 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) }}
    • 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) }}
    • 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) }}
    • 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
    • Injecção de Dependência (DI)Demo
    • 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
    • Unity: Container para DIDemo
    • 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
    • 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.
    • Q&A
    • A sua opinião é importante!Complete o questionário deavaliação e devolva-o à saida.