비동기 RPC
RPC(비동기 원격 프로시저 호출)는 Open Software Foundation 분산 컴퓨팅 환경(OSF-DCE)에 정의된 기존 RPC 모델의 몇 가지 제한 사항을 해결하는 Microsoft 확장입니다. 비동기 RPC는 원격 프로시저 호출을 반환 값과 구분하여 기존의 동기 RPC의 다음과 같은 제한 사항을 해결합니다.
- 단일 스레드 클라이언트에서 여러 미해결 호출 기존 RPC 모델에서는 호출이 반환될 때까지 원격 프로시저 호출에서 클라이언트가 차단됩니다. 이렇게 하면 다른 작업을 수행할 수 있는 스레드가 있는 동안 클라이언트에서 여러 개의 미해결 호출을 수행할 수 없습니다.
- 느리거나 지연된 클라이언트. 데이터를 생성하는 속도가 느린 클라이언트는 초기 데이터를 사용하여 원격 프로시저를 호출한 다음 생성되는 추가 데이터를 제공할 수 있습니다. 기존(동기) RPC에서는 불가능합니다.
- 느리거나 지연된 서버. 완료하는 데 시간이 오래 걸리는 원격 프로시저 호출은 작업 기간 동안 디스패치 스레드를 연결합니다. 비동기 RPC를 사용하면 서버에서 별도의(비동기) 작업을 시작하여 요청을 처리하고 회신을 사용할 수 있게 되면 회신을 다시 보낼 수 있습니다. 원격 호출 기간 동안 디스패치 스레드를 연결하지 않고도 결과를 사용할 수 있게 되면 서버에서 회신을 증분 방식으로 보낼 수도 있습니다. 클라이언트 애플리케이션을 비동기화하면 느린 서버가 클라이언트 애플리케이션을 불필요하게 연결하지 못하도록 방지할 수 있습니다.
- 대량의 데이터 전송 특히 느린 링크를 통해 클라이언트와 서버 간에 대량의 데이터를 전송하면 전송 기간 동안 클라이언트 스레드와 서버 관리자 스레드가 모두 연결됩니다. 비동기 RPC 및 파이프를 사용하면 클라이언트 또는 서버가 다른 작업을 수행하는 것을 차단하지 않고 증분 방식으로 데이터 전송이 수행됩니다.
[비동기] 특성을 사용하여 함수를 선언하여 비동기 RPC 메커니즘을 활용합니다. ACF(특성 구성 파일)에서 이 선언을 수행하므로 IDL(인터페이스 정의 언어) 파일을 변경할 필요가 없습니다. 비동기 RPC는 유선 프로토콜(클라이언트와 서버 간에 데이터가 전송되는 방식)에 영향을 주지 않습니다. 즉, 동기 및 비동기 클라이언트는 모두 비동기 서버 애플리케이션과 통신할 수 있습니다.
이 섹션에서는 비동기 RPC를 사용하여 분산 애플리케이션을 개발하는 방법에 대한 개요를 제공합니다. 개요는 다음 섹션에 제공됩니다.
- 비동기 함수 선언
- 클라이언트 쪽 비동기 RPC
- 서버 쪽 비동기 RPC
- 비동기 호출 인과 관계 순서 지정
- 오류 처리
- 명명된 파이프 프로토콜 통해 비동기 RPC
- DCE 파이프와 함께 비동기 RPC 사용
- 비동기 DCOM