一图看懂 ASP.NET Core 中的服务生命周期

翻译自 Waqas Anwar 2020年11月8日的文章 《ASP.NET Core Service Lifetimes (Infographic)》 [1]

ASP.NET Core 支持依赖关系注入(DI)软件设计模式,该模式允许我们注册服务、控制如何实例化这些服务并将其注入到不同的组件中。一些服务可以在短周期内实例化,并且仅在特定的组件和请求中可用;一些实例仅被实例化一次,并在整个应用程序生命周期中可用。这就是 ASP.NET Core 中可用的服务生命周期,共三种,下面我们来分别介绍一下。

Singleton(单例)

创建服务类的单个实例,将其存储在内存中,并在整个应用程序中重复使用。我们可以将 Singleton 用于实例化成本昂贵的服务。可以使用 AddSingleton 方法注册 Singleton 服务,如下所示:

services.AddSingleton<IProductService, ProductService>();

Scoped(范围内)

每个请求会创建一次服务实例。参与处理单个请求的所有中间件、MVC 控制器等等,都将获得相同的实例。实体框架上下文(Entity Framework context)是使用 Scoped 服务的一个很好的场景。我们可以使用 AddScoped 方法注册 Scoped 服务,如下所示:

services.AddScoped<IProductService, ProductService>();

Transient(临时)

每次请求 Transient 生命周期服务时都会创建它们。此生命周期最适合轻量级、无状态的服务。我们可以使用 AddTransient 方法注册 Transient 服务,如下所示:

services.AddTransient<IProductService, ProductService>();

如果您想将上述概念形象化,那么这里有一张图表,供您快速参考。

译者注:
图中背景颜色(深浅)不同的 Instance 代表不同的服务实例。
这算得上描述 服务生命周期 最简单易懂的图解吗?


相关链接:

  1. https://www.ezzylearning.net/tutorial/asp-net-core-service-lifetimes-infographic ASP.NET Core Service Lifetimes (Infographic) ↩︎

作者 :Waqas Anwar
译者 :技术译民
出品 :技术译站(https://ITTranslator.cn/)

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看见到洞见之引子(一)机器学习算法

《看见到洞见》系列文章汇聚、分享的是绿盟科技创新中心对于数据分析在安全领域应用的技战术思考与经验&#xff0c;力求由浅入深层次递进&#xff0c;实战到方法论双线剖析。此文为系列文章之引子第一篇&#xff0c;深入浅出的对常用的数据分析和机器学习的算法进行介绍。文章…

支持向量回归代码_RDKit:基于支持向量回归(SVR)预测logP

RDKit一个用于化学信息学的python库。使用支持向量回归(SVR)来预测logP。 分子的输入结构特征是摩根指纹&#xff0c;输出是logP。代码示例&#xff1a;#导入依赖库import numpy as npfrom rdkit import Chemfrom rdkit.Chem.Crippen import MolLogPfrom rdkit import Chem, Da…

移除 ZooKeeper 的 kafka 2.8 ,更快了

这段时间招聘季&#xff0c;后台收到不少关于 Kafka 的问题&#xff0c;确实 Kafka 近两年的行情&#xff0c;可谓是水涨船高了。根本原因是&#xff0c;是 Apache Kafka 作为一款开源的消息引擎系统。凭借高可靠、高吞吐、高可用、可伸缩等优越特性&#xff0c;在数据采集、传…

浅议SSH协议

什么是SSH&#xff1f; SSH 为 Secure Shell 的缩写&#xff0c;由 IETF 的网络工作小组&#xff08;Network Working Group&#xff09;所制定&#xff1b;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性…

机器学习 vs 深度学习到底有啥区别,为什么更多人选择机器学习

机器学习和深度学习有什么区别&#xff1f;让我们从本文中寻找答案。目标本文中&#xff0c;我们将深度学习与机器学习作比较。我们将逐一了解他们。我们还会讨论他们在各个方面的不同点。除了深度学习和机器学习的比较&#xff0c;我们还将研究它们未来的趋势。对比介绍深度学…

dreamweaver连接mysql数据库 发生一个不知名错误_用DREAMWEAVER连接数据库测试时总是弹出发生一个不知名的错误 你好! 请问一下这个问题你是怎么解的?...

展开全部2018年05月05日 19:11:13阅读数&#xff1a;1 编辑如图&#xff0c;PHPMySQLDreamweaverCS6连接MySQL就出现不知名错误&#xff0c;查遍全网也没有解决办法。32313133353236313431303231363533e58685e5aeb931333365653139笔者是机械学的专业&#xff0c;电脑是小白&…

ASP.Net 管道模型 VS Asp.Net Core 管道 总结

1 管道模型 1 Asp.Net Web Form管道请求进入Asp.Net工作进程后&#xff0c;由进程创建HttpWorkRequest对象&#xff0c;封装此次请求有关的所有信息&#xff0c;然后进入HttpRuntime类进行进一步处理。HttpRuntime通过请求信息创建HttpContext上下文对象&#xff0c;此对象将贯…

window server2008 r2

http://www.oyksoft.com/soft/10085.html 破解http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylangzh-cn&FamilyIDba571339-5436-4cf5-9c37-6ed7dab6f781转载于:https://www.cnblogs.com/blosaa/archive/2012/02/09/2343988.html

py2exe for python3_使用Py2Exe for Python3创建自己的exe程序

最近使用Python 3.5写了一个GUI小程序&#xff0c;于是想将该写好的程序发布成一个exe文件&#xff0c;供自己单独使用。至于通过安装的方式使用该程序&#xff0c;我没有探索&#xff0c;感兴趣的读者可以自己摸索。1 介绍我使用的开发环境是python3.4(实际上我是在另一个64位…

实际体验SpanT 的惊人表现

前言最近做了一个过滤代码块功能的接口。就是获取一些博客文章做文本处理&#xff0c;然后这些博客文章的代码块太多了&#xff0c;很多重复的代码关键词如果被拿过来处理&#xff0c;那么会对文本的特征表示已经特征选择会有很大的影响。所以需要将这些代码块的部分给过滤掉。…

北京点击科技有限公司董事长兼总裁——王志东经典语录2

11、三次去美国参加IBM大会&#xff0c;连上七天网的时候&#xff0c;我上了IBM的网站&#xff0c;居然找到我笔记本驱动程序有更新&#xff0c;这个对于我来说震动极大。 12、连了网之后我发现互联网就是窗口&#xff0c;我能够通过互联网能够第一时间了解到各方面的信息&…

AI人工智能资料分享来袭,还不快来!

小天从大学开始&#xff0c;便开启资料收集功能。近几年以AlphaGo为契机&#xff0c;人工智能进入新的发展阶段&#xff0c;再加上日常的深入研究&#xff0c;小天收集整理了丰富的AI学习资料&#xff0c;内容涵盖“深度学习资料包”&#xff0c;“数据挖掘资料包”&#xff0c…

qt 安装mysql_qt 安装mysql数据库

为了提升用户在云服务器上的软件安装效率&#xff0c;减少下载和安装软件的成本&#xff0c;操作系统为SUSE的用户可通过 YaST 快速安装软件。本文对此进行简要说明。SUSE 默认使用 zypper 安装软件时提示 denied 的解决办法SUSE 因为是企业级发行版&#xff0c;对于安全和隐私…

聊一聊Jmeter的简单使用

背景 近段时间&#xff0c;团队想补强测试这一块&#xff0c;减少重复性的一些工作&#xff0c;让一些内容可以自动化起来&#xff0c;同时对开发同学写的接口的性能也开始有所要求了。考虑到团队内没有人有测试开发的经验&#xff0c;所以前期的选择还是以工具为主&#xff0c…

win7录制系统声音 加入立体声混音 camtasia recorder录屏

很多时候&#xff0c;我们录屏的时候都并不是非得通过麦克风来说话&#xff0c;比如&#xff0c;你想跟好友分享一首歌曲的时候&#xff0c;那么你总不能把麦拿到喇叭那儿录制噻&#xff0c;那样录出来的不仅很麻烦&#xff0c;而且歌曲质量很差&#xff01;那么怎么录制系统正…

百万大奖参赛攻略 | 让程序员走向财富自由

还在担忧你的区块链项目曝光量小、品牌商业化进程慢、得不到投资人关注吗&#xff1f;这里有站上巨人肩膀的最全攻略&#xff01;2018年金链盟中国区块链应用大赛&#xff0c;开始向全国企事业单位、科研机构、项目团队、开发者队伍征集应用案例啦&#xff01;想参加的你们&…

Web通用令牌JwtBuilder

JSON Web Token (JWT)是一个开放标准(RFC 7519)&#xff0c;它定义了一种紧凑的、自包含的方式&#xff0c;用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任&#xff0c;因为它是数字签名的。Nuget包&#xff1a;NewLife.Core、NewLife.Secrurity源码地址&a…

mysql中如何计算党龄_党员的党龄如何计算?

党员的党龄应从预备期满转为正式党员之日算起。只有正式党员才计算党龄&#xff0c;预备党员虽有党籍&#xff0c;但不计算党龄。在我们党的历史上&#xff0c;有些时期有预备期&#xff0c;有些时期则没有预备期&#xff1b;有些时期入党时间从党员大会通过之日算起&#xff0…

mysql---复杂的sql语句join的使用(left join,right join)

2019独角兽企业重金招聘Python工程师标准>>> SELECT u.*,count(u.id) AS sum FROM user AS uLEFT JOIN post AS pON p.user_id u.id RIGHT JOIN user_has_group as upON up.user_id u.id RIGHT JOIN user_has_email as ueON ue.user_id u.idWHERE u.username ! A…

NET问答: 如果动态构建 Query 查询 EntityFramework

咨询区 Eduard&#xff1a;我想知道如何在 EntityFramework 或者 Linq 上构建动态查询。我现在要做这么一个功能&#xff0c;UI上大概有 50 的查询条件&#xff0c;用户可以根据自己的需求勾选所需的条件传到我的后端服务方法中。我知道可以通过 ExpresstionTree 去动态拼接这样…