依懒注入

  依懒

 当一个类需要另一个类协作来完成工作的时候就产生了依。比如我们在AccountController这个控制器需要完成和用户相关的注册、登录 等事情。其中的登录我们由EF结合Idnetity来完成,所以我们封装了一个EFLoginService。这里AccountController就有一个ILoginService的依

net core 依懒注入 中间件 随笔 第1张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

这里有一个设计原则:依于抽象,而不是具体的实现。所以我们给EFLoginService定义了一个接口,抽象了LoginService的行为。

 

注入

注入体现的是一个IOC(控制反转的的思想)

控制反转

为了在业务变化的时候尽少改动代码可能造成的问题。 比如我们现在要把从EF中去验证登录改为从Redis去读,于是我们加了一个 RedisLoginService。这个时候我们只需要在原来注入的地方改一下就可以了。 net core 依懒注入 中间件 随笔 第2张

 

 

NetCore依懒注入

  • Transient: 每一次GetService都会创建一个新的实例
  • Scoped:  在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request级别只创建一个实例,同一个http request会在一个 scope内)
  • Singleton :整个应用程序生命周期以内只创建一个实例 

public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<ILogsBLL, LogsBLL>();
services.AddServices();
ServiceCommon.ServiceProvider = services.BuildServiceProvider();
services.AddMvc();

}

  [Route("api/[controller]")]
    public class ValuesController : Controller
    {
        private ILogsBLL _log;
        public ValuesController(ILogsBLL log)
        {
            _log = log;
        }

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄