介绍
这篇文章将为大家详细讲解有关如何在Asp。网络核心中使用生命周期选项,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
<强>,一,服务的生命周期强>
在Asp。净核心中,内置容器负责管理服务的生命周期,从被依赖注入容器创建开始,等我们调用完服务时,到容器释放该服务的所有实力为止,有几种形式表现:
1,瞬态:每次请求服务时,都会创建一个新实例,这种生命周期适合用于轻量级服务(如存储库和ApplicationService服务)。
2,范围:为每个HTTP请求创建一个实例,生命周期将横贯整次请求。
3,单例:在第一次请求服务时,为该服务创建一个实例,之后每次请求将会使用第一次创建好的服务。
4,实例:与单例类似,但在应用程序启动时会将该实例注册到容器中,可以理解为比单身还早存在。
应用程序中相关服务的控制生命周期的方法时通过相应的添加*指定,如下三种,当然还可以通过扩展方法来简化ConfigurationServices方法中所见的代码数量。
services.AddTransient(); services.AddScoped (); services.AddSingleton ();
<强>二、代码设计服务生命周期强>
首先设计一些服务相关的操作接口
public interface IOperation ,{ ,Guid GetGuid (); ,} ,public interface  IOperationTransient: IOperation ,{ ,} ,public interface IOperationScoped : IOperation ,{ ,} ,public interface IOperationSingleton : IOperation ,{ , ,} ,public interface IOperationInstance : IOperation ,{ , ,} 基础服务接口
其次对这些操作类予以实现并生成相关服务
///, & lt; summary> ,///常规服务 ,///& lt;/summary> ,public class Operation : IOperation ,{ ,private readonly  Guid _guid; ,public 操作() ,{=,,_guid  Guid.NewGuid (); ,} ,public 操作(Guid guid) ,{=,,_guid  guid ==, Guid.Empty ?, Guid.NewGuid (),:, guid; ,} ,public Guid  GetGuid () ,{ ,return _guid; ,} ,} ,///& lt; summary> ,///瞬时服务 ,///& lt;/summary> ,public class OperationTransient : IOperationTransient ,{ ,private readonly  Guid _guid; ,public OperationTransient () ,{=,,_guid  Guid.NewGuid (); ,} ,public OperationTransient (Guid guid) ,{=,,_guid  guid ==, Guid.Empty ?, Guid.NewGuid (),:, guid; ,} ,public Guid  GetGuid () ,{ ,return _guid; ,} ,} ,///& lt; summary> ,///单次请求内服务固定 ,///& lt;/summary> ,public class OperationScoped : IOperationScoped ,{ ,private readonly  Guid _guid; ,public OperationScoped () ,{=,,_guid  Guid.NewGuid (); ,} ,public OperationScoped (Guid guid) ,{=,,_guid  guid ==, Guid.Empty ?, Guid.NewGuid (),:, guid; ,} ,public Guid  GetGuid () ,{ ,return _guid; ,} ,} ,///& lt; summary> ,///所有请求内固定服务 ,///& lt;/summary> ,public class OperationSingleton : IOperationSingleton ,{ ,private readonly  Guid _guid; ,public OperationSingleton () ,{=,,_guid  Guid.NewGuid (); ,} ,public OperationSingleton (Guid guid) ,{=,,_guid  guid ==, Guid.Empty ?, Guid.NewGuid (),:, guid; ,} ,public Guid  GetGuid () ,{ ,return _guid; ,} ,} ,///& lt; summary> ,///应用程序内固定服务 ,///& lt;/summary> ,public class OperationInstance : IOperationInstance ,{ ,private readonly  Guid _guid; ,public OperationInstance () ,{=,,_guid  Guid.NewGuid (); ,} ,public OperationInstance (Guid guid) ,{=,,_guid  guid ==, Guid.Empty ?, Guid.NewGuid (),:, guid; ,} ,public Guid  GetGuid () ,{ ,return _guid; ,} ,} 基础服务具体实现如何在Asp。网络核心中使用生命周期选项