프록시

프록시는 호출 프로세스의 주소 공간에 있으며 원격 개체의 서로게이트 역할을 합니다. 호출 개체의 관점에서 프록시는 개체입니다. 일반적으로 프록시의 역할은 개체 인터페이스의 메서드 호출에 대한 인터페이스 매개 변수를 패키지하는 것입니다. 프록시는 매개 변수를 메시지 버퍼에 패키지하고 프로세스 간의 전송을 처리하는 채널에 버퍼를 전달합니다. 프록시는 집계 또는 복합 개체로 구현됩니다. 여기에는 프록시 관리자라는 시스템 제공 관리자 조각과 인터페이스 프록시라는 하나 이상의 인터페이스 관련 구성 요소가 포함되어 있습니다. 인터페이스 프록시 수는 해당 특정 클라이언트에 노출된 개체 인터페이스의 수와 같습니다. 구성 요소 개체 모델을 준수하는 클라이언트의 경우 프록시가 실제 개체인 것처럼 보입니다.

참고

사용자 지정 마샬링을 사용하면 프록시를 유사하게 구현하거나 스텁을 사용하지 않고 개체와 직접 통신할 수 있습니다.

 

각 인터페이스 프록시는 개체의 인터페이스 중 하나에 대한 마샬링 코드를 구현하는 구성 요소 개체입니다. 프록시는 마샬링 코드를 제공하는 개체를 나타냅니다. 각 프록시는 IRpcProxyBuffer 인터페이스도 구현합니다. 프록시가 나타내는 개체 인터페이스는 public이지만 IRpcProxyBuffer 구현은 프라이빗이며 프록시 내에서 내부적으로 사용됩니다. 프록시 관리자는 인터페이스 프록시를 추적하고 집계에 대한 제어 IUnknown 인터페이스의 공용 구현도 포함합니다. 각 인터페이스 프록시는 지원하는 인터페이스가 클라이언트에 구체화될 때 로드되는 별도의 DLL에 존재할 수 있습니다.

프록시의 구조

다음 다이어그램은 두 인터페이스인 IA1 및 IA2에 속하는 매개 변수의 표준 마샬링을 지원하는 프록시의 구조를 보여 줍니다. 각 인터페이스 프록시는 집계 조각 간의 내부 통신을 위해 IRpcProxyBuffer 를 구현합니다. 프록시가 프로세스 경계를 넘어 마샬링된 매개 변수를 전달할 준비가 되면 채널에서 구현되는 IRpcChannelBuffer 인터페이스에서 메서드를 호출합니다. 채널은 개체의 대상에 도달할 수 있도록 RPC 런타임 라이브러리에 대한 호출을 전달합니다.

프록시의 구조를 보여 주는 다이어그램

채널

개체 간 통신

마샬링 세부 정보

Microsoft RPC

Stub