net core 依懒注入 中间件

依懒注入

  依懒

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

 

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

 

注入

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

控制反转

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

 

 

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;
        }

 

转载于:https://www.cnblogs.com/zhaops/p/10718838.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C# 中,可以使用 ASP.NET Core 的 Startup 类来配置依赖注入。Startup 类是一个特殊的类,它会在应用程序启动时被调用,用于配置应用程序的服务和中间件。 下面是一个简单的示例,演示如何在 Startup 类中配置依赖注入: ``` using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; public class Startup { public void ConfigureServices(IServiceCollection services) { // 注册服务 services.AddTransient<IMyService, MyService>(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // 配置中间件 app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { // 使用服务 var myService = context.RequestServices.GetService<IMyService>(); var message = myService.GetMessage(); await context.Response.WriteAsync(message); }); }); } } ``` 在 ConfigureServices 方法中,我们可以使用 services 参数来注册我们需要使用的服务。这里使用了 Transient 生命周期,表示每次请求都会创建一个新的实例。 在 Configure 方法中,我们可以使用 app 参数来配置中间件。这里使用了 UseRouting 和 UseEndpoints 中间件来处理 HTTP 请求,并且在处理请求时,使用 context.RequestServices.GetService 方法来获取我们注册的服务的实例,并使用它来处理请求。 需要注意的是,为了使用依赖注入,我们需要在项目中添加 Microsoft.Extensions.DependencyInjection 包。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值