星空网 > 软件开发 > ASP.net

[Architect] ABP(现代ASP.NET样板开发框架) 模块系统

 

本节目录

  • 介绍模块
  • 生命周期事件
    • PreInitialize
    • Initialize
    • PostInitialize
    • Shutdown
  • 模块依赖
  • 自定义模块方法

 

介绍模块

ABP提供基础设施让我们创建application,就是创建和组合使用modules.

1个module可以依赖其他的module,通常1个程序集可以做为1个module.

1个module由1个继承AbpModule来定义.

我们可以开发1个博客module,用在不同的applications.

最简单的定义如下:

public class MyBlogApplicationModule : AbpModule{  public override void Initialize()  {    IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());  }}

ABP扫描所有的程序集,找到继承AbpModule 所有类,建议每个程序集定义1个Module.

 

生命周期事件

ABP在application启动和结束的时候会调用modules的特定方法.你可以重写这些方法,以执行一些特定的任务.

ABP会根据依赖顺序调用这些方法,如果module A 依赖module B,则方法执行顺序为:

PreInitialize-B, PreInitialize-A, Initialize-B, Initialize-A, PostInitialize-B and PostInitialize-A

Shutdown方法则相反顺序.

 

PreInitialize

该方法在程序启动的时候被调用,会在依赖注入注册之前执行.可以在此处注册一些类和事件到IoC 容器中.

 

Initialize

该方法是在dependency injection注册的位置.通常,会调用IocManager.RegisterAssemblyByConvention方法.如果你想自定义依赖注册,可以查看相关文档.

 

PostInitialize

该方**在启动时的最后调用,这里可以安全的使用容器解析对象.

 

Shutdown

该方**在应用关闭的时候调

 

模块依赖

1个module可以依赖其他的module,ABP会自动解析这些依赖.

[DependsOn(typeof(MyBlogCoreModule))]public class MyBlogApplicationModule : AbpModule{  public override void Initialize()  {    IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());  }}

由于我们的定义,core module会在application module之前先初始化.

 

自定义模块方法

模块也可以为其他模块提供自定义方法,假设MyModule2 依赖MyModule1,MyModule2希望在PreInit方法中调用MyModule1的方法.

public class MyModule1 : AbpModule{  public override void Initialize()  {    IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());  }  public void MyModuleMethod1()  {    //this is a custom method of this module  }}[DependsOn(typeof(MyModule1))]public class MyModule2 : AbpModule{  private readonly MyModule1 _myModule1;  public MyModule2(MyModule1 myModule1)  {    _myModule1 = myModule1;  }  public override void PreInitialize()  {    _myModule1.MyModuleMethod1(); //Call MyModule1's method  }  public override void Initialize()  {    IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());  }}

这里,我们通过构造函数注入的方式将MyModule1注入进来,所以MyModule2 可以调用其方法.




原标题:[Architect] ABP(现代ASP.NET样板开发框架) 模块系统

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

海外批发商论坛:https://www.goluckyvip.com/tag/33373.html
欧洲:https://www.goluckyvip.com/tag/3339.html
海外商机:https://www.goluckyvip.com/tag/33399.html
出海越南:https://www.goluckyvip.com/tag/334.html
海外社交电商技术John:https://www.goluckyvip.com/tag/33400.html
海外社交媒体营销:https://www.goluckyvip.com/tag/33401.html
在古巴做游轮 古巴旅游项目:https://www.vstour.cn/a/363194.html
西藏旅游攻略自驾游需要多少天 去西藏旅游自驾游要多久时间:https://www.vstour.cn/a/363195.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流