Używam kontenera IoC Autofac z dodatkiem MVC4, który zapewnia zakres życia instancePerHttpRequest. Jednak w ramach mojego projektu mam wątki web, api i api. W poniższym przykładzie zakładam, że zasięg InstancePerHttpRequest nie ma większego znaczenia, jeśli nie pochodzi z żądania internetowego.Czy w rejestracji można określić wiele zakresów życia w Autofac?
builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>()
.InstancePerHttpRequest()
Zastanawiam się, czy można zrobić coś podobnego do poniższego przykładu i czy kontener wybiera najbardziej odpowiedni zakres życia?
builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>()
.InstancePerHttpRequest()
.InstancePerApiRequest()
.InstancePerDependency();
W tym przypadku, co mam zamiar się zdarzyć, jeżeli żądanie pochodzi od żądania sieci to będzie wybrać InstancePerHttpRequest zakres, jeżeli pochodzi od żądania WebAPI to dobrania InstancePerApiRequest zakres i jeśli jest ona wykorzystywana przez wątki robota aplikacji użyje zasięgu InstancePerDependency?
Jakieś pomysły, jeśli to lub coś podobnego jest możliwe?
Dzięki
Awesome! Dziękuję za dokładną odpowiedź, to bardzo pomaga. – chriskopec
myślę, że byłoby to przydatne. jednym z przykładów jest użycie EF frameworku, ponieważ akcja webowa dbcontext, jeśli wywołuje klasę, która potrzebuje dostępu do bazy danych z nowym wątkiem, jest szansa, że jest to tylko wystąpienie requestttttt, spowoduje wyjątek, więc trzeba mieć elastyczność, aby mieć InstancePerLifetimeScope. prawie lepiej po prostu mieć InstancePerLifetimeScope. – koo9