abp模块生命周期设计思路剖析
生活随笔
收集整理的這篇文章主要介紹了
abp模块生命周期设计思路剖析
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
abp中將生命周期事件抽象為4個(gè)接口:
//預(yù)初始化 public interface IOnPreApplicationInitialization {void OnPreApplicationInitialization([NotNull] ApplicationInitializationContext context); }//初始化 public interface IOnApplicationInitialization {void OnApplicationInitialization([NotNull] ApplicationInitializationContext context); }//初始化完成 public interface IOnPostApplicationInitialization {void OnPostApplicationInitialization([NotNull] ApplicationInitializationContext context); }//關(guān)閉 public interface IOnApplicationShutdown {void OnApplicationShutdown([NotNull] ApplicationShutdownContext context); }abp定義了一個(gè)模塊生命周期接口,該接口只有兩個(gè)方法,用于初始化和關(guān)閉。
public interface IModuleLifecycleContributor : ITransientDependency {void Initialize([NotNull] ApplicationInitializationContext context, [NotNull] IAbpModule module);void Shutdown([NotNull] ApplicationShutdownContext context, [NotNull] IAbpModule module); }這個(gè)接口的參數(shù)是IAbpModule接口的類型,也就是派生自AbpModule的模塊類型。該接口有一個(gè)默認(rèn)實(shí)現(xiàn),是一個(gè)抽象類,主要是用于復(fù)用。
public abstract class ModuleLifecycleContributorBase : IModuleLifecycleContributor {public virtual void Initialize(ApplicationInitializationContext context, IAbpModule module){}public virtual void Shutdown(ApplicationShutdownContext context, IAbpModule module){} }abp根據(jù)四個(gè)生命周期分別有四個(gè)類型,這四個(gè)類型是基于模塊生命周期基類創(chuàng)建的。
public class OnApplicationInitializationModuleLifecycleContributor : ModuleLifecycleContributorBase {public override void Initialize(ApplicationInitializationContext context, IAbpModule module){(module as IOnApplicationInitialization)?.OnApplicationInitialization(context);} }public class OnApplicationShutdownModuleLifecycleContributor : ModuleLifecycleContributorBase {public override void Shutdown(ApplicationShutdownContext context, IAbpModule module){(module as IOnApplicationShutdown)?.OnApplicationShutdown(context);} }public class OnPreApplicationInitializationModuleLifecycleContributor : ModuleLifecycleContributorBase {public override void Initialize(ApplicationInitializationContext context, IAbpModule module){(module as IOnPreApplicationInitialization)?.OnPreApplicationInitialization(context);} }public class OnPostApplicationInitializationModuleLifecycleContributor : ModuleLifecycleContributorBase {public override void Initialize(ApplicationInitializationContext context, IAbpModule module){(module as IOnPostApplicationInitialization)?.OnPostApplicationInitialization(context);} }只有"關(guān)閉應(yīng)用"這個(gè)生命周期實(shí)現(xiàn)Shutdown方法,其余的都是實(shí)現(xiàn)Initialize方法。最后是傳入的參數(shù)abp模塊去調(diào)用對應(yīng)的生命周期。
剖析圖如下:
總結(jié)
以上是生活随笔為你收集整理的abp模块生命周期设计思路剖析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TPL Dataflow组件应对高并发,
- 下一篇: 基于docker-compose的Git