Я очень новичок в инъекции зависимостей Autofac, и у меня есть эти вопросы, связанные с моим проектом. Я прочитал много статей, но я не вижу четкой картины по некоторым из моих вопросов. Mine - это сервисное приложение на .Net REST API. Я делаю регистрацию экземпляра в модуле App_Start
, как показано ниже.InstancePerLifeTimeScope и время жизни объектов
private static IContainer RegisterServices(ContainerBuilder builder)
{
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<DCLMessengerContext>()
.As<DbContext>()
.ExternallyOwned()
.InstancePerLifetimeScope();
builder.RegisterType<DbFactory>()
.As<IDbFactory>()
.ExternallyOwned()
.InstancePerLifetimeScope();
builder.RegisterType<UnitOfWork>()
.As<IUnitOfWork>()
.InstancePerLifetimeScope();
builder.RegisterGeneric(typeof(EntityBaseRepository<>))
.As(typeof(IEntityBaseRepository<>))
.InstancePerLifetimeScope();
builder.RegisterType<PersonServiceClient>()
.As<IPerfService>()
.InstancePerLifetimeScope();
builder.RegisterType<PagingServiceContractClient>()
.As<PagingServiceContract>()
.InstancePerLifetimeScope();
builder.RegisterType<MessageService>()
.As<IMessageService>()
.InstancePerLifetimeScope();
Container = builder.Build();
return Container;
}
Моего слой сервис «MessageService» и там я выполнять все операции по интеграции БД и другой и получать экземпляры через инъекцию конструктора. Это те вопросы, которые у меня есть вокруг этой реализации.
- Я использую
InstancePerLifeTimeScope
для всех моих регистраций. Правильно ли это? После жизненного цикла каждого запроса контроллера (http-запрос) будут ли эти экземпляры автоматически удалены? - Нужно ли вручную выполнить любую операцию
Dispose
в любом из этих экземпляров? (У меня нет каких-либо неуправляемых объектов в моем коде) - Из метода обслуживания мне нужно создать огонь & забыть нить, используя
Task.Run()
. Каков наилучший подход к подаче экземпляров этого огня & забыть тему? Если я используюInstancePerLifeTimeScope
, я вижу, что новый поток также получает те же экземпляры, которые доступны через класс службы, поэтому я просто запутался, когда эти экземпляры будут удалены?
См. [«Если вопросы включают« теги »в их названиях?»] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles) , где консенсус «нет, они не должны»! –
Спасибо за обновление этого. Надеюсь, я смогу обновить tilte как «InstancePerLifeTimeScope в Autofac и время жизни объектов». Также я надеюсь, что не будет никаких проблем при добавлении дополнительных тегов (не с заголовком), в данном случае «ASP.Net Web API»? –
, что сделало бы одно идеальное редактирование! –