Когато започнах с Windsor, мислех, че DI ще бъде просто. Сега това ме обърква все повече и повече.
Едно хранилище ми се струва клас с единичен жизнен цикъл. Трябва да имам един екземпляр на FooRepository, за да заредя и запазя Foos в базата данни по време на живота на приложението.
Всяко хранилище обаче съдържа препратка към UnitOfWork, което прави мръсната проверка, работи с базата данни и т.н. UnitOfWork има жизнен цикъл на PerWebRequest - изобщо няма смисъл UnitOfWork да бъде сингълтън, тъй като единичен екземпляр би могъл (например) изтрийте промените, направени от няколко потребителски сесии едновременно.
Така че тогава имам единичен FooRepository, съдържащ препратка към UnitOfWork, който в края на сесията се изхвърля! Дори не съм сигурен какъв ефект би имало това върху поведението на хранилището, но не звучи добре.
Може ли някой да обясни, на прост английски (добре, може би с някакъв код), подходящия начин за управление на жизнения цикъл на Repository и UnitOfWork класове в уеб приложение?