
2、ASP.NET Core中服务的生命周期
发布日期:2021-05-09 01:04:20
浏览次数:16
分类:博客文章
本文共 920 字,大约阅读时间需要 3 分钟。
ASP.NET Core支持依赖注入软件设计模式,它允许在不同的组件中注入我们的服务,并且控制服务的初始化。有些服务可以在短时间内初始化,并且只能在某个特别的组件,以及请求中才能用到;而还有一些服务,仅仅只用初始化一次,就可以在整个应用程序中使用。
下面我就讲一讲ASP.NET Core中服务的生命周期。
Singleton --单例模式
只有一个服务的实例被创建,这个实例,存储在内存中,可以在整个应用程序中使用。我们可以对一些初始化代价比较大的服务,使用Singleton模式。在代码中可以这样:
services.AddSingleton();
Scoped --作用域
这种模式下,将会为每一个请求,都创建一个服务的实例。所有同一个请求中的中间件、MVC控制器,等等,都会得到一个相同的服务实例。Entity Framework Context就是一个Scoped服务最好的参考例子。我们可以通过使用AddScoped方法来使用Scoped模式:
services.AddScoped();
Transient --短暂的、瞬变的
Transient模式下,服务每次被请求的时候,都会创建一个服务实例,这种模式特别适合轻量级、无状态的服务。我们可以使用AddTransient方法,来注入服务:
services.AddTransient();
如果你想将上面我讲到的概念形象化,那么下面的图标就是你快速参考的一个例子。
对下面图标的解释说明:
- Singleton:单例模式下的服务,只有一个服务实例,所有的请求,都是共享着一个服务实例;这种模式下,我们需要并发以及多线程的问题;
- Scoped:为每个请求都创建一个服务的实例,并且在这个请求中,都是可以多次重复使用这个服务实例;每个请求,可以看做一个作用域。request1可以使用服务1的实例,request2可以使用服务2的实例互不干涉;
- Transient:这种模式下,不管是不是同一个请求,每次都会新建一个新的服务实例;这种是最常见的,并且是安全的选择,如果你担心多线程的问题的话。
发表评论
最新留言
不错!
[***.144.177.141]2025年05月07日 15时17分15秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
VTK:可视化之RandomProbe
2019-03-09
block多队列分析 - 2. block多队列的初始化
2019-03-09
Java时间
2019-03-09
不编译只打包system或者vendor image命令
2019-03-09
【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
2019-03-09
flink启动(二)
2019-03-09
pair的用法
2019-03-09
Flex 布局的自适应子项内容过长导致其被撑大问题
2019-03-09
PL/SQL 动态Sql拼接where条件
2019-03-09
【自学Flutter】4.1 Material Design字体图标的使用(icon)
2019-03-09
【换行符】什么时候用cin.get()吃掉输入流中的换行符
2019-03-09
广东外语外贸大学第三届网络安全大赛Writeup
2019-03-09
SpringBoot使用RedisTemplate简单操作Redis的五种数据类型
2019-03-10
Thymeleaf sec:authorize 标签不生效
2019-03-11
微信JS-SDK DEMO页面和示例代码
2019-03-11
Flask--简介
2019-03-11
Frame--Api框架
2019-03-11
Boostrap技能点整理之【网格系统】
2019-03-11