관점 지향 프로그래밍 이란 OOP(Object Oriented Programing)를 보완하는 개념으로 어플리케이션을 OOP적으로 모듈화 하여 작성하더라도 다른 모듈에서 공통으로 나타날 수 있는 횡단 관심을 해결 하기 위한 방법이다.

여기에서 횡단관심사란 로깅, 보안, 트랜잭션등과 같이 어플리케이션 전반에서 사용될 수 있는 부가적인 기능들을 말한다.

   

   

 위와 같은 횡단 관심은 실제 어플리케이션 개발에서 나타나며 해당 관심들도 기존의 OOP적으로 모듈화 하여 사용할 수 있다. 그러나 이 방식의 문제점은 핵심모듈에 횡단관심 모듈들을 처리하는 로직이 들어가게 되는데 있다.


//입금 클래스

public bool DepositMoney(int accountNo, int insertMoney)

{

Log logging = new Log();

logging.Start(); //로깅시작


Transaction tran = new Transaction();

tran.begin(); //트랜잭션 시작


try

{

//입금로직

tran.commit(); //트랜잭션 커밋

}

catch

{

//예외처리

tran.rollback(); //롤백

}


logging.Stop();

}


위와같이 로깅이 필요한 모든 핵심모듈에서 동일한 코드가 작성되야 하는데 이는 중복되는 코드가 많아지고 재사용성이 떨어지며 로깅관련 기능이 변경되면 모든 핵심모듈을 변경해야 하므로 유지보수에도 많은 어려움이 따른다. 게다가 횡단관심이 로깅 이외도 트랜잭션, 보안등이 추가된다면 햄심 모듈안엔 다른코드 들로 도배가 되는 상황이 발생할 것이다.


위의 코드를 AOP를 이용해서 바꿔보면


[Log, Transaction]

public bool DepositMoney(int accountNo, int insertMoney)

{

//입금로직

}


이와 같이 변하게 된다.


이렇게 AOP로 구현하면하면 핵심 모듈을 건들지 않기 때문에 재 사용성이 떨어지지 않고 코드의 중복 또한 없어지므로 유지보수도 쉽게된다.

.NET에서 AOP를 구현하는 방법은 이런 Attribute를 이용하는 방법과 Spring.NET이나 Aspect.NET등의 프레임웍을 이용하는 방법이 있다.

'Implementation' 카테고리의 다른 글

프로그래밍 언어의 타입_1.명령형 언어  (1) 2008.11.20
TDD 를 이용한 클래스 디자인  (0) 2007.08.24
|
blog comments powered by Disqus

matrim's Blog is powered by Daum & tistory