Soy nuevo en el COI en general y estoy luchando un poco para entender si lo que intento hacer tiene sentido. Tengo una aplicación de formularios web en la que quiero crear un módulo para definir algunos enlaces para mí. Las consolidaciones se usarán para inyectar repositorios en mis clases de gerente de negocios, lo que me permite probar las unidades de los gerentes de negocios. También me gustaría usar el contenedor para inyectar el contexto de Entity Framework en mis repositorios de esa manera todos comparten el mismo contexto por solicitud http. Así que aquí es lo que estoy preguntando:Dónde almacenar Ninject IKernel en una aplicación web?
entiendo que tengo que tener la misma instancia del núcleo manejar mi creación de objetos y de su vida. Por ejemplo, si deseo un escenario de tipo de uno por cada httprequest, necesito que la instancia del kernel esté disponible para ese período de tiempo. ¿Qué pasa si necesito un singleton? Entonces tiene que ser un ámbito de aplicación de alguna manera. Entonces, ¿dónde exactamente guardo la instancia de IKernel? Parece que podría querer convertirlo en estático en mi Global.asax, ¿es ese el enfoque correcto y la seguridad de las hebras es una preocupación?
Dado que estoy usando Bind <> para definir mis enlaces, ¿cómo hago para hacer esa definición en la capa Web/UI cuando no debería hacer referencia a mi capa de acceso a datos desde la UI? Mis referencias se parecen a .Web -> .Business -> DataAccess. Parece que quiero decirle al kernel "hey gestionar mis instancias de acceso a datos, pero no tienen una referencia en tiempo de compilación". Una unión de este tipo:
//Any object requesting an instance of AdventureWorksEntities will get an instance per request
Bind<AdventureWorksEntities>().ToSelf().InRequestScope();
Siento que podría estar acercándose a este mal, gracias.
http://stackoverflow.com/questions/367178/usage-of-ioc-containers-specifically-windsor –