Asp.Net Core中服务生命周期选项有哪些区别与具体用法详解?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1631个文字,预计阅读时间需要7分钟。
前言:最近在做一个小的Demo中,在一个界面上两次调用了视图组件,并在视图组件中都调用了数据库查询。结果发现,直接调用两个视图组件时,直接报错。分析后发现,将两个视图组件的调用分离,单独进行,却又恢复正常。
前言
最近在做一个小的Demo中,在一个界面上两次调用视图组件,并且在视图组件中都调用了数据库查询,结果发现,一直报错,将两个视图组件的调用分离,单独进行,却又是正常的,寻找一番,发现是配置依赖注入服务时,对于服务的生命周期没有配置得当导致,特此做一次实验来认识三者之间(甚至是四者之间的用法及区别)。
本文demo地址(具体见WebApi控制器中):gitee.com/530521314/koInstance.git (本地下载)
一、服务的生命周期
在Asp.Net Core中,内置容器负责管理服务的生命周期,从被依赖注入容器创建开始,等我们调用完服务时,到容器释放该服务的所有实力为止,有几种形式表现:
1、Transient:每次请求服务时,都会创建一个新实例,这种生命周期适合用于轻量级服务(如Repository和ApplicationService服务)。
2、Scoped:为每个HTTP请求创建一个实例,生命周期将横贯整次请求。
3、SingleTon:在第一次请求服务时,为该服务创建一个实例,之后每次请求将会使用第一次创建好的服务。
本文共计1631个文字,预计阅读时间需要7分钟。
前言:最近在做一个小的Demo中,在一个界面上两次调用了视图组件,并在视图组件中都调用了数据库查询。结果发现,直接调用两个视图组件时,直接报错。分析后发现,将两个视图组件的调用分离,单独进行,却又恢复正常。
前言
最近在做一个小的Demo中,在一个界面上两次调用视图组件,并且在视图组件中都调用了数据库查询,结果发现,一直报错,将两个视图组件的调用分离,单独进行,却又是正常的,寻找一番,发现是配置依赖注入服务时,对于服务的生命周期没有配置得当导致,特此做一次实验来认识三者之间(甚至是四者之间的用法及区别)。
本文demo地址(具体见WebApi控制器中):gitee.com/530521314/koInstance.git (本地下载)
一、服务的生命周期
在Asp.Net Core中,内置容器负责管理服务的生命周期,从被依赖注入容器创建开始,等我们调用完服务时,到容器释放该服务的所有实力为止,有几种形式表现:
1、Transient:每次请求服务时,都会创建一个新实例,这种生命周期适合用于轻量级服务(如Repository和ApplicationService服务)。
2、Scoped:为每个HTTP请求创建一个实例,生命周期将横贯整次请求。
3、SingleTon:在第一次请求服务时,为该服务创建一个实例,之后每次请求将会使用第一次创建好的服务。

