Автоматический выбор Per-Thread или Per-Request Lifetime Scopes

Я разрабатываю библиотеку, которая распространяется внутри моей компании и потребляется различными приложениями. Эта библиотека должна быть независимой от платформы, так как она может быть развернута в веб-контексте или даже в консольном приложении. Я хотел бы зарегистрировать объекты, чтобы они были per-http-request или per-thread, в зависимости от контекста приложения, потребляющего этот фреймворк. В StructureMap я могу сделать это, используя время жизни Hybrid. По сути, если существует HttpContext, то объект будет привязан к нему, в противном случае будет использоваться ThreadLocalStorage на основе каждого потока. Никакой дополнительной конфигурации для распределенной библиотеки или потребляющего приложения не требуется. Возможно ли это с помощью Autofac? Учитывая широкую вариативность уровней квалификации разработчиков, наша цель - минимизировать/исключить любую специализированную конфигурацию для потребителей.

Я понимаю, что регистрации могут быть контекстно-независимыми, используя время жизни InstancePerLifetimeScope, но тогда потребляющие приложения должны потреблять ASP.NET/WCF/MVC интеграционные двоичные файлы, чтобы привязать регистрации InstancePerLifetimeScope к Http-запросу. Или же, в случае с потоковыми диапазонами, потребляющий код должен нести ответственность за создание lifetime scope для каждого потока.

Любые предложения?

10
задан Paras Joshi 20 May 2013 в 09:58
поделиться