모듈 시스템 - Module System

Module System

설명

"모듈 빌드란 프로그래밍에서 모듈을 생성하고 구성하는 과정을 가리킵니다. 모듈은 프로그램을 여러 부분으로 나누어 관리하고 유지보수하기 쉽게 만드는 데 도움이 되는 기술입니다."

Axs는 모듈을 빌드하고 응용 프로그램을 만들기 위해 구성하는 인프라를 제공합니다. 모듈은 다른 모듈에 종속될 수 있습니다. 이것에 대한 종속성을 해결할 수 있는 방법도 같이 제공하고 있습니다.

모듈 시스템

모듈 정의

가장 간단하게 아래와 같이 모듈을 정의할 수 있습니다. 이 모듈에서 해당하는 어셈블리에서 요구하는 전처리나, 객체 초기화를 진행할 수 있습니다. 모듈에서 종속성 주입을 위한 객처 등록과 애플리케이션에 새 기능을 추가하는 작업을 할 수 있습니다.

public class SampleApplicationModule : AxsModule
{
    public override void Initialize()
    {
        IocManager.RegisterAssembly(Assembly.GetExecutingAssembly());
    }
}

모듈간 종속성

아래와 같이 DependsOn 어트리뷰트를 사용하여 종속성을 명시적으로 선언 해야 합니다. SampleCoreModule가 실행 후 SampleApplicationModule가 실행이 된다.

모듈간 의존성
[DependsOn(typeof(SampleCoreModule))]
public class SampleApplicationModule : AxsModule
{
    public override void Initialize()
    {
        IocManager.RegisterAssembly(Assembly.GetExecutingAssembly());
    }
}

예제

public class MySampleModule1 : AxsModule
{
    public override void Initialize()
    {
        IocManager.RegisterAssembly(Assembly.GetExecutingAssembly());
    }

    public void MySampleModuleMethod1()
    {
        //this is a custom method of this module
    }
}

[DependsOn(typeof(MySampleModule1))]
public class MySampleModule2 : AxsModule
{
    private readonly MySampleModule1 _myModule1;

    public MyModule2(MySampleModule1 mySampleModule1)
    {
        _mySampleModule1 = mySampleModule1;
    }

    public override void PreInitialize()
    {
        _mySampleModule1.MySampleModuleMethod1(); //MySampleModule1's 메서드를 호출한다.
    }

    public override void Initialize()
    {
        IocManager.RegisterAssembly(Assembly.GetExecutingAssembly());
    }
}
샘플 어플리케이션 모듈의 의존성

확인

아래와 같이 각 모듈에서 브레이크 포인트를 걸어서 프로그램이 시작을 할 때 단계별로 실행이 되는것을 확인할 수 있습니다.

picture 1

이 부분에서 각 단계에 맞게 초기화 및 세팅을 진행하면 됩니다.

Last updated