본문 바로가기

IT 살이/04. 기술 - 아키텍처

Proxiable Types-모든 웹 서비스 호출을 가로챌 수 있다

달봉이는 얼마전에 L기업의 ERP 프로젝트에 참여하고 있었다. 이 시스템은 스마트클라이언트  애플리케이션으로 구현했는데, 서버와의 통신은 웹 서비스를 사용하고 있다.
웹 서비스 호출시는 VS.NET이 자동 생성하는 프락시 클래스를 확장해서 사용하고 있다. 이것을 이름하여 "웹 참조 차원의 프락시"라고 하고 있다. 그러나 또 하나의 프락시를 제작해서 사용하고 있는데, 모든 웹 서비스 호출이 일단 이 프락시를 거치고 난 다음 각각의 원하는 "웹 참조 차원의 프락시"를 호출한다고 해서  "시스템 차원의 프락시"라 칭하기로 했다. 이 포스트에서는 시스템 차원의 프락시 클래스에 대해서 이야기할 것이다.
이 시스템 차원의 프락시를 사용하면 모든 웹 서비스 호출을 가로채서 웹 서비스 호출을 서버로 보내기 전에 전처리 작업을 해주고 그리고 웹 서비스 호출이 끝나고 나서는 다시 후처리 작업을 할 수 있다. 그리고 후처리 작업이 끝나면 웹 서비스 호출의 결과를 호출 메소드로 반환해준다.

전처리/후처리 작업을 할 수 있는 기회를 이용하면 웹 서비스 호출동안 커서를 모래시계로 바꾸고 다시 복원하는 작업을 한다든가 또는 스톱워치를 작동시켜서 웹 서비스 호출에 얼마나 시간이 걸렸는가를 로그로 남길 수 있는 로직을 삽입하는 등 개발자들과는 상관없이 개발 프레임워크 차원에서 일괄적인 작업을 해 줄 수 있다.  

to be continued...

이것이 가능한 것은 .NET이 AOP( Aspect-Oriented Programming)를 지원하고 있기 때문이다. AOP 프로그래밍 방식중에서도 .NET 프레임워크에서는 프락시 클래스를 이용하는 방식을 지원한다. 구체적인 AOP 프로그래밍 방식에 대해서는 AOP 개념 및 AOP 구현 툴을 설명하는 지난 포스트를 참조하기 바란다.

2009/04/24 - [01. 기술 - APP] - 개발 프레임워크 만들기 대장정 20 - Spring.NET::IoC

2009/04/24 - [01. 기술 - APP] - 개발 프레임워크 만들기 대장정 21 - Aspect Oriented Programming 개념 I

2009/04/24 - [01. 기술 - APP] - 개발 프레임워크 만들기 대장정 24 - Aspect Oriented Programming 개념 II

2009/04/24 - [01. 기술 - APP] - 개발 프레임워크 만들기 대장정 25 - AOP 적용 예제 I