Axs Document
  • AXS Framework
  • 1. Common structures
    • 의존성 관계 설정 - Dependency Injection
    • 캐싱 - Caching
    • 로깅 - Logging
    • 세션 - Session
    • 다중 테넌트 - Multi Tenancy
    • 모듈 시스템 - Module System
    • 객체 매핑 - Object To Object Mapping
    • 메일 연동 - Mail System
  • 2. Domain Layer
    • 엔티티 - Entities
    • 저장소 - Repositories
    • 도메인 서비스 - Domain Services
    • 작업 단위 - Unit Of Work
  • 3. Application Layer
    • 애플리케이션 컨트롤러 - Application Controller
    • DTO - Data Transfer Objects
    • DTO 객체의 유효성 체크 - Validating Data Transfer Objects
    • 인증 - Authorization
    • 감사 로그 - Audit Logging
    • 엔티티 기록 - Entity History
  • 4. Object Relational Mapping
    • EntityFramework 통합
    • Dapper 통합
  • 5. Background Services
    • 백그라운드 작업과 워커
  • 6. Presentation Layer
    • 에러 핸들링
Powered by GitBook
On this page
  1. 1. Common structures

모듈 시스템 - Module System

Previous다중 테넌트 - Multi TenancyNext객체 매핑 - Object To Object Mapping

Last updated 1 year ago

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