Moja aplikacja zawiera wiele zespołów zaplecza (w tym warstwę repozytorium danych Entity Framework), które są współużytkowane przez wiele zespołów front-end (w tym usługę Windows i aplikacja internetowa MVC3).Gdzie zlokalizować moduły Ninject w wielowarstwowej aplikacji?
Moje zrozumienie procesu wiązania Ninject polega na tym, że każdy zestaw zawierający typy wstrzykiwalne powinien również zawierać moduł Ninject, który definiuje domyślne powiązania dla tych typów. Zbiór zdefiniowanych modułów zostałby następnie załadowany do jądra Ninject dla złożeń.
Występują jednak problemy, ponieważ wymagany zakres powiązań nie zawsze jest spójny. Na przykład mój projekt MVC musi powiązać kontekst danych InRequestScope
, podczas gdy usługa Windows wiąże się z tą samą klasą InThreadScope
.
Oczywiście mogę rozwiązać ten problem, przenosząc wszystkie moduły do projektów frontowych i tym samym utrzymując oddzielne kopie każdego modułu dla każdego scenariusza użycia, ale wydaje się to być hacky, ponieważ duplikuje znaczną część zawartości modułu w wielu projektach. .
Czy istnieje najlepsza praktyka dotycząca tego, gdzie moduły powinny znajdować się w aplikacji wielowarstwowej i jak mogę to pogodzić z potrzebą wiążących różnic między projektami?
Wielkie dzięki za sugestie,
Tim
Zobacz także http://stackoverflow.com/questions/1699197/how-do-you-organise-your-ninject-modules (IIRC to Q to dup, ale jest to najlepsze, co mam na razie) –
Dzięki, Ruben. Masz rację, że między tymi dwoma pytaniami jest wiele wspólnego. Szczególnie podoba mi się twoja sugestia przekazywania parametrów środowiska wykonawczego do modułów, które znajdują się we wspieraniu złożeń - bardzo elastyczna. –
Hmm; to jakiś czas temu (nie próbowałem w żaden sposób wyleczyć mojej odpowiedzi). Mógłbym dosłownie oznaczać * przekazywanie parametrów * z powrotem w ciągu dnia - ogólnie staram się to robić poprzez interfejsy tak bardzo, jak to tylko możliwe. Ponadto było to przed http://manning.com/seemann, co redukuje liczbę pytań, które możesz znaleźć zaskakująco w architekturze DI - dramat def biegnij, nie zadawaj pytań. –