Использование Unity и пользовательского LifetimemManger для Unit Of Work / Repositories / Services в приложении MVC3? - PullRequest
1 голос
/ 06 января 2012

Я использую Unity 2.0 с MVC3 и мне нужна помощь в понимании LifeTimeManager.Я читал много людей, использующих пользовательский LifeTimeManager, который помещает элементы в HTTPContext.Это имеет смысл, потому что вы хотите, чтобы UoW использовался только в течение срока действия запроса в MVC.Однако нужен ли мне тот же менеджер времени жизни для моих репозиториев и сервисов?Я просматривал этот пост и заметил тот же менеджер времени жизни UoW, репозиториев и сервисов.

Мои репозитории зависят от UoW, а мои сервисы зависят от репозиториев.Я не уверен, что Unity делает по умолчанию в отношении менеджера времени жизни, но я создал собственный менеджер HttpContext и у меня были проблемы с ним, просто находясь в UoW.Я еще не помещал это ни в один из моих сервисов или репозиториев.Мне интересно, если мне это нужно или это лучшая практика.

1 Ответ

1 голос
/ 06 января 2012

Просто используйте пакет Nuget для unity.mvc3, и он содержит иерархический менеджер времени жизни.Когда вы регистрируете типы, которые должны быть расположены в ваших сопоставлениях, он удалит их.Не беспокойтесь о том, чтобы делать что-либо напрямую с httpcontext, это гораздо проще.

См. Раздел об IDisposable зависимостях

http://www.devtrends.co.uk/blog/integrating-the-unity.mvc3-1.1-nuget-package-from-scratch

Для всего, что вы хотите, явно (который реализует IDisposable) используйте этот менеджер времени жизни:


container.RegisterType(new HierarchicalLifetimeManager());
...