Wo finden Sie Ninject-Module in einer mehrschichtigen Anwendung?

Meine Anwendung enthält eine Reihe von Back-End-Assemblys (einschließlich einer Entity Framework-Datenrepository-Ebene), die von einer Reihe von Front-End-Assemblys (einschließlich eines Windows-Dienstes und einer MVC3-Webanwendung) gemeinsam genutzt werden.

Mein Verständnis des Ninject-Bindungsprozesses ist, dass jede Assembly, die injizierbare Typen enthält, auch ein Ninject-Modul enthalten sollte, das die Standardbindungen für diese Typen definiert. Die Menge der definierten Module würde dann in den Ninject-Kernel der konsumierenden Assemblys geladen.

Ich habe jedoch Probleme, da der erforderliche Bindungsumfang nicht immer konsistent ist. Beispielsweise muss mein MVC-Projekt an den Datenkontext gebunden werdenInRequestScopeDer Windows-Dienst wird an dieselbe Klasse gebundenInThreadScope.

Ich kann dieses Problem natürlich lösen, indem ich alle Module in die Front-End-Projekte verschiebe und somit für jedes Verwendungsszenario separate Kopien von jedem Modul verwalte. Dies scheint jedoch schwierig zu sein, da ein Großteil des Modulinhalts über mehrere Projekte hinweg dupliziert wird.

Gibt es eine bewährte Methode dafür, wo sich Module in einer mehrschichtigen Anwendung befinden sollten, und wie kann ich dies mit meinem Bedürfnis nach verbindlichen Unterschieden zwischen Projekten in Einklang bringen?

Vielen Dank für Ihre Anregungen,

Tim

Antworten auf die Frage(2)

Ihre Antwort auf die Frage