Pergunta

Eu absolutamente preciso usar um contêiner IoC para desacoplar dependências em um sistema cada vez mais complexo de serviços empresariais.O problema que estou enfrentando está relacionado à configuração (também conhecido comocadastro).Atualmente temos 4 ambientes diferentes – do desenvolvimento à produção e intermediários.Esses ambientes possuem inúmeras configurações que variam ligeiramente de ambiente para ambiente;no entanto, em todos os casos que Atualmente posso pensar em, as dependências entre os componentes não diferem de ambiente para ambiente, embora eu possa ter perdido alguma coisa e/ou isso possa obviamente mudar.

Então, a questão final é: alguém tem uma experiência semelhante usando uma estrutura de IoC?Ou alguém pode recomendar uma estrutura em detrimento de outra que forneça registro flexível, seja por meio de algum tipo de convenção ou de informações de configuração simplificadas?Ainda seria capaz de me beneficiar de uma interface fluente ou estou preso ao XML - gostaria de evitar o inferno do XML.

Editar: Este é um ambiente .Net e estou pesquisando Windsor, Ninject e Autofac.Todos eles parecem agora suportar ambos os métodos de registro (fluente e XML), embora o suporte do Autofac para expressões lambda pareça um pouco diferente dos outros.Alguém usa isso em um ambiente de implantação múltipla semelhante?

Foi útil?

Solução

eu uso Ninjeto.Gosto do fato de não precisar usar XML para configurar as dependências.Posso apenas usar código C# direto.Há múltiplas maneiras de fazer isso também.Eu sei que outras bibliotecas têm esse recurso, mas o Ninject oferece instanciação rápida, é bastante leve, possui ligação condicional, suporta estrutura compacta e suporta Silverlight, 2.0.Eu também uso um wrapper em cima dele, caso eu troque por outro framework no futuro.Definitivamente, você deveria experimentar o Ninject ao decidir sobre uma estrutura.

Outras dicas

Se você deseja abstrair seu contêiner e poder usar diferentes, considere torná-lo injetável da maneira que tentei fazer aqui

Não tenho certeza se será adequado ao seu caso específico, você não mencionou em qual plataforma está trabalhando, mas tive grande sucesso com Estrutura do COI do Castelo Windsor.As dependências são configuradas no arquivo de configuração (é um framework .NET)

Veja os rinocerontes comuns de Ayendes.Ele usa uma abstração sobre o contêiner IoC.Para que você possa trocar de contêiner sempre que quiser.Algo como container.Resolve está sempre presente em todos os contêineres.

Eu uso o Structuremap para fazer o trabalho sujo, ele tem uma interface fluente e coisas XML e é poderoso o suficiente para a maioria das coisas que você deseja fazer.Cada um tem seus prós e contras, então um pouco de abstração para que você possa mudar facilmente (você nunca sabe quanto tempo eles estarão por aí) é bom.De resto, acho que Spring.Net, Castle Windsor, Ninject e StructureMap não estão mais tão distantes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top