[Architect]ABP(現代ASP.NETテンプレート開発フレームワーク)(3)モジュールシステム

3245 ワード


このセクションのディレクトリ
  • 紹介モジュール
  • ライフサイクルイベント
  • PreInitialize
  • Initialize
  • PostInitialize
  • Shutdown

  • モジュール依存
  • カスタムモジュールメソッド
  •  

    モジュールの紹介


    ABPはインフラストラクチャを提供してアプリケーションを作成させます.modulesを作成し、組み合わせて使用します.
    1つのmoduleは他のmoduleに依存することができ、通常1つのプログラムセットは1つのmoduleとすることができる.
    1つのmoduleは、1つの継承AppModuleによって定義.
    異なるアプリケーションで使用するブログmoduleを開発することができます.
    最も簡単な定義は次のとおりです.
    public class MyBlogApplicationModule : AbpModule
    {
        public override void Initialize()
        {
            IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
        }
    }

    ABPはすべてのプログラムセットをスキャンし、AppModuleを継承するすべてのクラスを見つけ、各プログラムセットに1つのModuleを定義することを提案する.
     

    ライフサイクルイベント


    ABPはアプリケーションの起動と終了時に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はアプリケーションmoduleの前に初期化されます.

     


    カスタムモジュールメソッド


    モジュールは、MyModule 2がMyModule 1に依存する場合、MyModule 2がPreInitメソッドでMyModule 1を呼び出すメソッドを希望する他のモジュールに対してカスタムメソッドを提供することもできる.
    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());
        }
    }
    

    ここでは、コンストラクション関数の注入によりMyModule 1を注入するので、MyModule 2はその方法を呼び出すことができる.