another/용어2012. 9. 12. 23:24

스프링을 교육센터에서 배울때 이 용어를 접했다. 

관점지향프로그래밍  말 그대로 관점지향이다.

객체지향의 단점을 보완을 해준다? 이런 의미라고 한다.

 한빛미디어 김대곤(http://www.hanb.co.kr/network/view.html?bi_id=968) 여기에 보면 설명이 잘되어있다.

글의 한 단락이다.


자금 이체를 하는 프로그램을 작성한다고 생각해보자. 

출금계좌와 입금계좌, 그리고 이체금액을 입력받아 SQL 문장 또는 함수 한 번 돌리는 것으로 끝나는가? 

절대 아니다. 먼저 해킹을 방지하기 위해 사용자가  적절한 보안 프로그램을 설치했는지 점검하는 코드도 있어야 하고, 

사용자가 인증 되었는지 점검하는 코드도 써야 하고, 상대방 은행에서 적절하게 처리되었는지 점검해야 하고,

혹시 사용자가 이체버튼을 두번 누른 것은 아닌지 체크해야 하고 로그도 남겨야 한다.

즉, 구현하려고 하는 기능 뿐 아니라 보안, 인증, 로그, 성능와 같은 다른 기능도 들어있어야 한다.

어쩌면 이체를 위한 코드보다 잡다한 측면의 문제를 다루는 코드가 더 길어질 수 있다.

이런 코드들은 입금이나 출금 같은 다른 곳에서 들어가야 한다. 

구현하려고 하는 비즈니스 기능들을 Primary(Code) Concern, 보안, 로그, 인증과 같이 

시스템 전반적으로 산재딘 기능들을 Cross-cutting concern 이라고 부른다.

Aop는 Cross-cutting concern 을 어떻게 다룰 것인가에 대한 새로운 패러다임이라고 할수 있다. 


Aspect는   Advice + Point-cut을 함께 지칭하는 단어이다.

Point-cut은 어떤 Advice를 code 어느 위치에 둘 것인가 하는 것이다.

예를 들면 로그 기능을 구현한 Advice는 code 속에 있는 모든 public method가 수행되고 나면

그 마지막에 실행되어라 라고 지정한 것이라 할 수 있다.


'another > 용어' 카테고리의 다른 글

SSO(Single Sign-On)  (0) 2012.09.19
RPC(Remote Procedure Call) , RMI(Remote Method Invoke)  (0) 2012.09.13
REST(Representaional State Transfer)  (0) 2012.09.09
Posted by NeverTry