INVERSÃO DE CONTROLE INJE?ÃO DE DEPENDENCIA (IOC)
Olá pessoal.
Estou tentando implementar injeção de controle no meu projeto pesquisei na internet e tem muito material só que muitos deles são para projetos Web e não estou conseguindo fazer no meu projeto Desktop. No meu caso estou utilizando o framework STRUCTURMAP para fazer a injeção de dependência a minha dúvida é como fazer para meus métodos enxergar o mapeamento do STRUCTUREMAP? Exemplo tenho 5 projetos na minha solução como fazer para que esses projetos enxergue os mapeamento, onde eu crio a classe que faz o mapeamento?
Já tentei de varias formas mas estou me esbarrando porque meus métodos não consegue enxergar os mapeamentos.
Alguém pode me dar alguma ajuda se possÃvel algum exemplo.
Desde já agradeço.
Estou tentando implementar injeção de controle no meu projeto pesquisei na internet e tem muito material só que muitos deles são para projetos Web e não estou conseguindo fazer no meu projeto Desktop. No meu caso estou utilizando o framework STRUCTURMAP para fazer a injeção de dependência a minha dúvida é como fazer para meus métodos enxergar o mapeamento do STRUCTUREMAP? Exemplo tenho 5 projetos na minha solução como fazer para que esses projetos enxergue os mapeamento, onde eu crio a classe que faz o mapeamento?
Já tentei de varias formas mas estou me esbarrando porque meus métodos não consegue enxergar os mapeamentos.
Alguém pode me dar alguma ajuda se possÃvel algum exemplo.
Desde já agradeço.
Você precisaria referenciar o projeto onde está contido o mapeamento do STRUCTUREMAP para aqueles que você deseja. Mande-nos uma imagem de como está a sua estrutura.
Olá JABA obrigado pelo interesse em me ajudar, desculpe pela demora em dar retorno é porque esses dias foram muito corridos e não tive tempo de me dedicar a programação.
A estrutura da minha solução está da seguinte forma:
São cinco projetos:
1º Entities - Onde ficam minhas classes de domÃnio;
2º Dal – Onde fica toda comunicação com banco de dados e toda interação com o banco de dados;
3º App - Onde fica a comunicação com a camada de Visualização;
4º View - Onde ficam meus formulários (estou desenvolvendo em WPF)
O referenciamento está assim:
O projeto Entities Não referencia ninguém;
O projeto Dal referencia o projeto Entities;
O projeto App referencia o projeto Entities e Dal;
O projeto View referencia o projeto App.
Será que a arquitetura está errada por isso não consigo implementar StructureMap? Teria que concentrar minhas classes em menos projetos para que minha classe onde fica a StructureMap possa ser enxergada?
Por exemplo:
Para fazer o Mapeamento tive que referenciar os projetos onde tem as interfaces e as classes que implementa as interfaces já que estão em projetos diferentes, mas ao mesmo tempo nas classes onde faço a implementação também tenho que referenciar o projeto onde está o StructureMap para que possa tratar a inversão de controle, mas não é possÃvel referenciar uma classe que já referencia própria classe.
Levando em consideração as boas praticas de programação é errado ter uma solução com único projeto separado por pastas das classes referente as entidades, Repositórios e as classes que controla as interações com usuário (App)? Desta forma acredito que seria mais fácil fazer as inversões de controles.
Desde já agradeço a ajuda.
A estrutura da minha solução está da seguinte forma:
São cinco projetos:
1º Entities - Onde ficam minhas classes de domÃnio;
2º Dal – Onde fica toda comunicação com banco de dados e toda interação com o banco de dados;
3º App - Onde fica a comunicação com a camada de Visualização;
4º View - Onde ficam meus formulários (estou desenvolvendo em WPF)
O referenciamento está assim:
O projeto Entities Não referencia ninguém;
O projeto Dal referencia o projeto Entities;
O projeto App referencia o projeto Entities e Dal;
O projeto View referencia o projeto App.
Será que a arquitetura está errada por isso não consigo implementar StructureMap? Teria que concentrar minhas classes em menos projetos para que minha classe onde fica a StructureMap possa ser enxergada?
Por exemplo:
Para fazer o Mapeamento tive que referenciar os projetos onde tem as interfaces e as classes que implementa as interfaces já que estão em projetos diferentes, mas ao mesmo tempo nas classes onde faço a implementação também tenho que referenciar o projeto onde está o StructureMap para que possa tratar a inversão de controle, mas não é possÃvel referenciar uma classe que já referencia própria classe.
Levando em consideração as boas praticas de programação é errado ter uma solução com único projeto separado por pastas das classes referente as entidades, Repositórios e as classes que controla as interações com usuário (App)? Desta forma acredito que seria mais fácil fazer as inversões de controles.
Desde já agradeço a ajuda.
Cara, ao meu ver, sua estrutura parece correta. A única coisa que eu acrescentaria aà seria uma camada de Serviços para tratar de coisas mais gerais, como é o caso de STRUCTUREMAP. Abaixo alguns sites interessantes sobre o assunto:
social.msdn.microsoft.com/Forums/pt-BR/bda1d98e-363f-4fc6-ae33-0b06ec15bcc1/dvida-sobre-injeo-de-dependncia-em-modelo-03-trs-camadas?forum=arquiteturapt
www.devmedia.com.br/artigo-injecao-de-dependencia-com-structuremap/18464
Não acho que seja errado fazer tudo dentro de um único projeto, desde que você respeite os princÃpios da arquitetura em camadas. Não é atoa que existem as NameSpaces!
social.msdn.microsoft.com/Forums/pt-BR/bda1d98e-363f-4fc6-ae33-0b06ec15bcc1/dvida-sobre-injeo-de-dependncia-em-modelo-03-trs-camadas?forum=arquiteturapt
www.devmedia.com.br/artigo-injecao-de-dependencia-com-structuremap/18464
Citação:Levando em consideração as boas praticas de programação é errado ter uma solução com único projeto separado por pastas das classes referente as entidades, Repositórios e as classes que controla as interações com usuário (App)?
Não acho que seja errado fazer tudo dentro de um único projeto, desde que você respeite os princÃpios da arquitetura em camadas. Não é atoa que existem as NameSpaces!
Olá JABA obrigado pela ajuda.
Consegui implementar o StructureMap, só que o mapeamento tive que fazer no meu projeto de visualização (WPF) está funcionando muito bem. Não consegui criar uma camada só para isso e depois referenciar em outros projetos que farão a injeção.
Alguém poderia me apontar o caminho como seria criar uma camada de serviço para tratar StructureMap conforme a sugestão do JABA? Eu tente só que para fazer o mapeamento o projeto onde está o serviço tem que referenciar praticamente todos os projetos para poder enxergar as Interfaces e as classes concretas que serão mapeadas, mas da erro quando vou referenciar o projeto Serviço nas classes onde vou fazer a injeção já que o projeto serviço já referenciou a classe atual. Tentei criar classe estática sem sucesso.
Posso ter problemas futuros no meu projeto pelo fato da minha camada visualização ter referencia do projeto Dal (repositório)?
Desde já agradeço.
Consegui implementar o StructureMap, só que o mapeamento tive que fazer no meu projeto de visualização (WPF) está funcionando muito bem. Não consegui criar uma camada só para isso e depois referenciar em outros projetos que farão a injeção.
Alguém poderia me apontar o caminho como seria criar uma camada de serviço para tratar StructureMap conforme a sugestão do JABA? Eu tente só que para fazer o mapeamento o projeto onde está o serviço tem que referenciar praticamente todos os projetos para poder enxergar as Interfaces e as classes concretas que serão mapeadas, mas da erro quando vou referenciar o projeto Serviço nas classes onde vou fazer a injeção já que o projeto serviço já referenciou a classe atual. Tentei criar classe estática sem sucesso.
Posso ter problemas futuros no meu projeto pelo fato da minha camada visualização ter referencia do projeto Dal (repositório)?
Desde já agradeço.
Tópico encerrado , respostas não são mais permitidas