완전 및 부분적으로 바인딩된 핸들
동적 엔드포인트를 사용하는 경우 런타임 라이브러리는 필요에 따라 엔드포인트 정보를 가져옵니다. 런타임 라이브러리는 완전히 바인딩된 핸들 (엔드포인트 정보를 포함하는 핸들)과 부분적으로 바인딩된 핸들 (엔드포인트 정보를 포함하지 않는 핸들)을 구분합니다.
클라이언트 런타임 라이브러리는 부분적으로 바인딩된 핸들을 완전히 바인딩된 핸들로 변환해야 클라이언트가 서버에 바인딩할 수 있습니다. 클라이언트 런타임 라이브러리는 다음과 같이 엔드포인트 정보를 가져와 클라이언트 애플리케이션에 대해 부분적으로 바인딩된 핸들을 변환하려고 시도합니다.
- 클라이언트의 인터페이스 사양에서
- 서버에서 실행되는 엔드포인트 매핑 서비스에서
인터페이스 사양에서 엔드포인트 정보를 사용할 수 없으며 서버의 엔드포인트 매퍼에 서버 엔드포인트에 대한 정보가 없을 때 클라이언트가 부분적으로 바인딩된 핸들을 사용하려고 하면 클라이언트에 원격 프로시저 호출을 수행하는 데 충분한 정보가 없으며 해당 호출이 실패합니다. 이를 방지하려면 분산 애플리케이션에서 부분적으로 바인딩된 핸들을 사용하는 경우 엔드포인트 매퍼에 엔드포인트를 등록해야 합니다. 엔드포인트 매퍼에 대한 자세한 내용은 동적 엔드포인트 지정을 참조하세요.
원격 프로시저 호출이 실패하면 클라이언트 애플리케이션은 RpcBindingReset을 호출하여 오래된 엔드포인트 정보를 제거할 수 있습니다. 클라이언트가 원격 프로시저를 호출하려고 하면 클라이언트 런타임 라이브러리가 다시 완전히 바인딩된 핸들을 부분적으로 바인딩된 핸들로 변환하려고 시도합니다. 이는 다른 동적 엔드포인트를 사용하여 서버를 중지하고 다시 시작한 경우에 유용합니다.