Say mam następujące zespoły: 4 .netNie rozumiejąc gdzie utworzyć IoC kontenerów w architekturze systemu
- WinForm UI
- Biznes Logic
- SQL Server Data Access (wdrożenie IRepository)
- Wspólne interfejsy (definicja IRepository itp.)
Moja logika biznesowa (2) wykonuje połączenia z warstwą dostępu do danych (3) poprzez IRepository (zdefiniowane w 4) za pomocą iniekcji zależnej od konstruktora. Jednak kiedy kończę obiekt biznesowy, muszę przekazać go do rzeczywistego repozytorium. Robię to, mając pojedynczą klasę w mojej warstwie logiki biznesowej, zwracając aktualnie wykorzystywany konkretny obiekt implementujący IRepository. Doszedłem do wniosku, że jest to złe, ponieważ moja warstwa logiki biznesowej musi teraz odwoływać się do 3, a także 4.
Myślę, że potrzebuję kontenera IoC, ale pytanie jest, gdzie utworzyć/umieścić go jako wydaje się, że gdziekolwiek to tworzę (1-UI)? będzie również musiał posiadać odniesienie do 3 (SQL Server Data Access). Czy nie tylko poruszam problem, a nie osiągam faktyczne oddzielenie?
Czy utworzyć kontener IoC w interfejsie użytkownika. Lub wystaw go przez inny nowy zespół.
(używam C#, .NET 3.5 i AutoFac)
Dzięki.
Można argumentować, że posiadanie 10 lub więcej projektów, w których kontener zostanie utworzony, jest najmniejszym z problemów. –