选择无状态服务的生命周期

时间:2017-03-28 14:04:13

标签: dependency-injection lifetime

某些服务类型具有非常明确的生命周期要求。例如,如果在ASP.NET应用程序中使用EntityFramework,则很明显DbContext生命周期应该与请求相关联。但是,有些服务是“无状态的”:它们不存储任何状态,而只是将指令转发给它们的依赖项。一个简单的例子是Query对象:

public class MyQuery : IQuery<SomeQuery, SomeResponse> {
    private readonly IRepository<MyTable> Repository; // Injected via constructor
    public SomeResponse Query(SomeQuery query) {
        return Repository.All().Where(r => r.Field == query.Field)
               .Select(r => new SomeResponse { Field = r.Field }).Single();
    }
}

除了依赖项强加的类之外,这个特殊类本身没有任何要求。应该使用什么准则来确定为这种类型的对象选择的生命周期?应该尽可能使用瞬态寿命吗?或者应该有一个最长的寿命?为什么?

0 个答案:

没有答案