Где сохранить Ninject IKernel в веб-приложении?

Я плохо знаком с МОК в целом, и я изо всех сил пытаюсь немного понять, имеет ли то, что я пытаюсь сделать, какой-либо смысл. У меня есть приложение веб-форм, в котором я хочу создать один модуль для определения некоторой привязки для меня. Привязка будет использоваться для введения репозиториев в мои классы управляющего делами, разрешая мне модульному тесту управляющих делами. Также я хотел бы использовать контейнер для введения контекста Платформы Объекта в мои репозитории таким образом, они все совместно используют тот же контекст на запрос HTTP. Таким образом, вот то, что я задаюсь вопросом:

  1. Я понимаю, что у меня должен быть тот же экземпляр ядра, справляются с моим созданием объекта и их время жизни. Например, если я хочу сценарий типа one-per-httprequest, мне нужен экземпляр ядра, чтобы быть доступным в течение того промежутка времени. Что, если мне нужен одиночный элемент? Затем это должно быть приложение, ограниченное по объему так или иначе. Таким образом, где точно я храню экземпляр IKernel? Кажется, что я мог бы хотеть сделать это помехами в моем Global.asax, который является правильным подходом, и действительно ли потокобезопасность является беспокойством?

  2. Так как я использую, Связывают <> для определения моей привязки, как я иду о создании того определения в уровне Web/UI, когда я не должен ссылаться на свой уровень доступа к данным от UI? Мои ссылки похожи на.Web->.Business-> DataAccess. Кажется, что я хочу сказать, что ядро "эй управляет моими экземплярами доступа к данным, но не имеет ссылки на них во время компиляции". Привязка, такая как это:


    //Any object requesting an instance of AdventureWorksEntities will get an instance per request
    Bind<AdventureWorksEntities>().ToSelf().InRequestScope();

Я чувствую, что мог бы приближаться к этому неправильно, спасибо.

6
задан e36M3 6 August 2010 в 13:55
поделиться