2017-04-10 1 views
0

Je souhaite migrer ma configuration avec Ninject vers SimpleInjector. Au moment où j'ai une bibliothèque personnalisée qui est référencé à partir - une application ASP.NET MVC - une application API Web ASP.NETMixage d'étendues d'injecteur simples dans MVC, API Web et OWIN

Cette bibliothèque a une implémentation NinjectModule qui présente une déclaration comme le

suivant
Bind<MyDataContext>().To<MyDataContext>().InRequestScope(); 

Ma question concerne la durée de vie InRequestScope(). Comme je l'ai lu sur la documentation SimpleInjector, pour le ASP.NET MVC application est suggéré d'utiliser WebRequestLifestyle comme l'option DefaultScopedLifestyle alors qu'il est suggéré AsyncScopedLifestyle pour le Web API.

également lors de l'utilisation Owin, ce qui est mon cas dans les deux applications, la documentation suggère d'envelopper tout dans un bloc comme

app.Use(async (context, next) => { 
    using (AsyncScopedLifestyle.BeginScope(container)) { 
     await next(); 
    } 
}); 

Pour ma compréhension, cela signifie:

  1. chaque enregistrement doit être enregistré avec le mode de vie Lifestyle.Scoped
  2. Les deux applications doivent permettre la résolution des instances de portée via le bloc de code app.Use(...)

Est-ce correct?

Répondre

1

chaque enregistrement doivent être enregistrées avec le mode de vie Lifestyle.Scoped

correcte.

Les deux applications devraient permettre cas scope à résoudre par la app.Use (...) du bloc de code

Lorsque le bloc de code app.Use(...) avec le AsyncScopedLifestyle est appliqué à toutes les demandes, ce moyen ce code MVC peut également être exécuté dans une portée asynchrone. Cela signifie que vous n'avez plus besoin du WebApiRequestLifestyle et que vous pouvez également utiliser AsyncScopedLifestyle pour votre application MVC.

+0

Très bien. Merci beaucoup Steven! – Lorenzo