Я новичок в МОК в целом, и я немного пытаюсь понять, имеет ли смысл то, что я пытаюсь сделать.У меня есть приложение веб-форм, в котором я хочу создать один модуль, чтобы определить некоторые привязки для меня.Привязки будут использоваться для внедрения репозиториев в классы моего бизнес-менеджера, что позволит мне провести модульное тестирование бизнес-менеджеров.Также я хотел бы использовать контейнер для добавления контекста Entity Framework в мои репозитории таким образом, чтобы все они использовали один и тот же контекст для каждого http-запроса.Вот что мне интересно:
Я понимаю, что мне нужно, чтобы один и тот же экземпляр ядра управлял созданием моих объектов и их временем жизни.Например, если я хочу сценарий типа «один на httprequest», мне нужно, чтобы экземпляр ядра был доступен в течение этого периода времени.Что если мне нужен синглтон?Тогда это должно быть как-то ограничено приложением.Итак, где именно я храню экземпляр IKernel?Кажется, что я мог бы сделать это статическим в моем Global.asax, это правильный подход и является ли безопасность потоков проблемой?
Поскольку я использую Bind <> для определениямои привязки, как мне сделать определение в слое Web / UI, когда я не должен ссылаться на свой уровень доступа к данным из UI?Мои ссылки выглядят как .Web -> .Business -> DataAccess.Похоже, я хочу сказать ядру: «Эй, управляй моими экземплярами доступа к данным, но не имей ссылки на них во время компиляции».Такая привязка:
//Any object requesting an instance of AdventureWorksEntities will get an instance per request
Bind<AdventureWorksEntities>().ToSelf().InRequestScope();
Я чувствую, что могу подойти к этому неправильно, спасибо.