2017-09-15 3 views
0

Ich habe ein Web-API-Projekt, das Unity als GlobalConfiguration.Configuration.DependencyResolver verwendet. Das Projekt verwendet das Arbeitseinheitsmuster mit einer einzelnen Datenzugriffsebene, die während der gesamten Lebensdauer jeder Anforderung im Speicher gehalten wird. Am Ende jeder Anforderung werden Ereignisse ausgelöst. Ich möchte die Ereignisse mithilfe ihrer eigenen eindeutigen Datenzugriffsebene ausführen, sodass sie parallel ausgeführt werden können (die gemeinsame Nutzung verursacht Probleme mit dem gemeinsamen Zugriff).Erstellt einen verschachtelten lebenslangen Bereich mit Unity DI

Wie kann ich einen Child-Lifetime-Bereich innerhalb eines HTTP-Anfragekontexts erstellen?

Ich habe Zugang zu einer statischen Instanz UnityDependencyResolver, die das Verfahren hat IDependencyScope BeginScope(), aber es implementiert System.Web.Http.Dependencies.IDependencyResolver es scheint mit das ist nicht die richtige Option gegeben?

Mit anderem DI-Frameworks wie Autofac, wäre es:

using(var scope = container.BeginLifetimeScope()) 
{ 
    var service = scope.Resolve<IService>(); 

    using(var nestedScope = scope.BeginLifetimeScope()) 
    { 
    var anotherService = nestedScope.Resolve<IOther>(); 
    } 
} 

Ich würde es vorziehen, um die Ereignisse zu einem anderen Prozess und Feuer über Nachrichtenwarteschlangen zu bewegen, aber es ist zu diesem Zeitpunkt nicht möglich.

Antwort

Verwandte Themen