Я ищу несколько советов о том, как лучше всего настроить эту ситуацию. У меня есть следующие компоненты в приложении ASP MVC.
- Контроллеры - переходные по требованию MVC
- Сервисы - контроллеры вызывают их, чтобы попасть на бизнес-уровень
- Валидаторы - Сервисы используют их для проверки компонентов. Их дорого создавать, поэтому мне нужно, чтобы они были Singleton
- Хранилища - службы и валидаторы используют их для доступа к данным
- ISession - NHibernate Session, настроенный как PerWebRequest
Я смотрю, как лучше настроить службы и репозитории. На первый взгляд кажется, что они могут быть настроены одинаково. Единственная зависимость репозитория (переданная конструктору) - это ISession. Только сервисные зависимости (переданные в конструкторе) являются репозиториями. Когда сервису требуется валидатор, он получает его от ServiceLocator. Валидаторы получают репозитории в конструкторе. Я думаю, что из-за того, что валидаторы являются синглтон-транзитными транзитными репозиториями, проблематично, потому что валидатор будет удерживать репозиторий с удаленной ISession.
Любая помощь здесь будет принята с благодарностью.