Stub
RPC Stub
Stub는 클라이언트 측면에서 게이트웨이처럼 동작하는 객체이며, 외부로 향하는 모든 요청은 Stub를 거쳐 요청된다. Stub는 프로그래머가 작성한 코드에 투명성을 제시한다. 이는 클라이언트와 서버 간의 통신 과정을 프로그래머에게 감추고, 마치 로컬에서 실행되는 것처럼 보이게 한다.
Stub이 필요한 이유
로컬 컴퓨터와 원격 컴퓨터는 다른 메모리 공간을 사용하기 때문에, 함수를 호출하기 위한 파라미터가 변환되어 전달되어야 한다. (가령, 0x0000aaaa
라는 로컬컴퓨터의 메모리 주소와 원격 컴퓨터의 0x0000aaaa
라는 메모리 주소에 저장된 데이터는 같다는 보장이 없다.) 또한, 데이터 타입의 표현도 두 컴퓨터 간 다를 수 있다. Stub은 이를 위해 파라미터를 변환하는 역할을 수행한다.
특히 Stub은 분산 컴퓨팅(Distributed Computing) 환경에서 중요한 역할을 수행한다.
Stub 생성 방법
Manually
Stub를 직접 생성하는 것은 복잡하고 시간이 많이 소요되고, 프로토콜 및 인터페이스 변경에 민감하다. 따라서 이 방법은 권장되지는 않는다.
Automatically
Stub를 자동으로 생성하려는 경우, IDL이라는 인터페이스 정의 언어를 통해 Stub 코드를 생성할 수 있다.
Test Double Stub
테스트 하려는 외부의 컴포넌트의 실제 구현 대신, 격리된 환경에서 고정된 응답을 반환하도록 해, 테스트의 일관성을 유지할 수 있게 하는 객체이다. 테스트 시, 실제 의존하고 있는 의존성 외부 컴포넌트 대신, Stub를 사용하게 되면 보다 빠르게 코드를 실행할 수 있다는 장점이 있다.