스텁
스텁은 프록시와 마찬가지로 하나 이상의 인터페이스 조각과 관리자로 구성됩니다. 각 인터페이스 스텁은 개체의 지원되는 인터페이스 중 하나를 호출하는 매개 변수 및 코드를 숨기지 않는 코드를 제공합니다. 각 스텁은 내부 통신을 위한 인터페이스도 제공합니다. 스텁 관리자는 사용 가능한 인터페이스 스텁을 추적합니다.
그러나 스텁과 프록시 간에는 다음과 같은 차이점이 있습니다.
- 가장 중요한 차이점은 스텁이 개체의 주소 공간에서 클라이언트를 나타낸다는 것입니다.
- 스텁은 클라이언트를 단일 단위로 볼 요구 사항이 없으므로 집계 개체로 구현되지 않습니다. 스텁의 각 조각은 별도의 구성 요소입니다.
- 인터페이스 스텁은 공용이 아닌 프라이빗입니다.
- 인터페이스 스텁은 IRpcProxyBuffer가 아닌 IRpcStubBuffer를 구현합니다.
- 마샬링할 매개 변수를 패키징하는 대신 스텁은 마샬링된 후 압축을 풀고 회신을 패키지합니다.
다음 다이어그램은 스텁의 구조를 보여줍니다. 각 인터페이스 스텁은 개체의 인터페이스에 연결됩니다. 채널은 들어오는 메시지를 적절한 인터페이스 스텁으로 디스패치합니다. 모든 구성 요소는 RPC 런타임 라이브러리에 대한 액세스를 제공하는 인터페이스인 IRpcChannelBuffer를 통해 채널과 통신합니다.