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