Когда я начинал с Windsor, я думал, что DI будет простым. Теперь это вызывает у меня все большее замешательство.
Репозиторий кажется мне классом с одноэлементным жизненным циклом. У меня должен быть один экземпляр FooRepository для загрузки и сохранения Foos в базе данных в течение всего времени существования приложения.
Тем не менее, каждый репозиторий содержит ссылку на UnitOfWork, который выполняет грязную проверку, работает с базой данных и т. д. UnitOfWork имеет жизненный цикл PerWebRequest — для UnitOfWork нет никакого смысла быть синглтоном, поскольку экземпляр синглтона может (например) сбросить изменения, сделанные несколькими сеансами пользователя одновременно.
Итак, у меня есть синглтон FooRepository, содержащий ссылку на UnitOfWork, который в конце сеанса удаляется! Я даже не уверен, как это повлияет на поведение репозитория, но звучит не очень хорошо.
Может ли кто-нибудь объяснить на простом английском языке (хорошо, может быть, с некоторым кодом), подходящий способ управления жизненным циклом классов Repository и UnitOfWork в веб-приложении?