Onde localizar os módulos Ninject em um aplicativo multicamadas

Meu aplicativo inclui vários assemblies de back-end (incluindo uma camada de repositório de dados do Entity Framework) que são compartilhados por vários assemblies de front-end (incluindo um serviço do Windows e um aplicativo da Web do MVC3).

Meu entendimento do processo de ligação Ninject é que cada assembly que contém tipos injetáveis ​​também deve conter um módulo Ninject que define as ligações padrão para esses tipos. O conjunto de módulos definidos seria então carregado no Ninject Kernel dos assemblies consumidores.

No entanto, estou com problemas, pois o escopo obrigatório da vinculação nem sempre é consistente. Por exemplo, meu projeto MVC precisa se vincular ao contexto de dadosInRequestScope, enquanto o serviço do Windows se liga à mesma classeInThreadScope.

Obviamente, posso resolver esse problema realocando todos os módulos nos projetos front-end e, assim, manter cópias separadas de cada módulo para cada cenário de uso, mas isso parece hacky, pois duplica muito do conteúdo do módulo em vários projetos.

Existe uma prática recomendada sobre onde os módulos devem estar localizados em um aplicativo multicamada e como posso reconciliar isso com minha necessidade de vincular diferenças entre projetos?

Muito obrigado por suas sugestões,

Tim

questionAnswers(2)

yourAnswerToTheQuestion