원격 프로시저 호출
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/DiagramaRPC.png/220px-DiagramaRPC.png)
원격 프로시저 호출(영어: remote procedure call, 리모트 프로시저 콜, RPC)은 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술이다. 다시 말해, 원격 프로시저 호출을 이용하면 프로그래머는 함수가 실행 프로그램에 로컬 위치에 있든 원격 위치에 있든 동일한 코드를 이용할 수 있다.
객체 지향의 원칙을 사용하는 소프트웨어의 경우 원격 프로시저 호출을 원격 호출(remote invocation) 또는 원격 메소드 호출(remote method invocation)이라고 일컫는다.
가끔 ONC RPC와 DCE/RPC와 같은 비호환 대상을 수행하기 위해 쓰이는 다른 수많은 기술이 있다.
인터페이스
[편집]RPC 프로그래밍 인터페이스는 다양한 계층이 있다. 그들의 범위는 라이브러리 함수들을 호출하는 것과 같은 방법으로 사용자들이 시스템이 제공하는 RPC 함수들을 호출하는 최상위 계층으로부터, RPC API들을 사용하여 사용자들이 RPC 프로그램을 생성하는 하위 계층까지 있다.
최상위 계층에는 원격 시스템의 정보를 수집하기 위하여 사용자들이 직접호출할 수 있는 시스템이 제공하는 RPC 함수들이 있다. 이 함수들은 일반적으로 라이브러리 함수처럼 사용될 수 있다. 다만 그들을 사용하기 위해서는 RPC 라이브러리 함수의 목적 코드를 포함하는 등의 특별한 설정이 필요하다.
RPC 라이브러리 함수들의 장점은 쉽게 사용할 수 있고 프로그래밍 부담이 적다는 것이다. 그러나, 시스템에서 정의된 RPC 라이브러리 함수들은 많지 않다. 그러므로, 이 함수들을 통한 응용에는 한계가 있다.
RPC 프로그래밍의 두 번째 계층에서는 RPC 클라이언트와 서버의 스터브(stub) 루틴을 자동적으로 생성하기 위하여 rpcgen 컴파일러를 사용한다. 사용자들은 단지 클라이언트와 서버 프로그램을 생성하기 위한 클라이언트의 main 함수와 서버의 RPC 함수들만 작성한다. 또한 rpcgen 컴파일러를 통해 클라이언트와 서버 사이에 데이터를 전송하기 위하여사용자가 정의한 어떠한 데이터 유형이든지 XDR 형식으로 변환하는 XDR 함수들을 생성할 수 있다. rpcgen 컴파일러를 사용하여 얻는 장점은 사용자들이 RPC 함수들과 클라이언트의 main함수를 작성하는 데 주력할 수 있다는 것이다. 즉, 하위 계층의 RPC API들에 대해 알 필요가 없다. 이는 프로그래밍 노력을 절약하고 오류 발생 가능성을 줄여준다.
그러나, 이러한 접근 방식의 결점은 rpcgen이 생성한 클라이언트 서버프로그램에 의하여 사용되는 네트워크 트랜스포트의 어떤 자세한 속성들에 대하여 제어하기 어렵다는 것이다. 또한 이러한 클라이언트 서버는 XDR 함수들에 의하여 사용되는 동적 메모리를 관리할 수 없다.
RPC 프로그래밍 인터페이스의 최하위 계층은 RPC 클라이언트와 서버 프로그램들을 생성하기 위하여 RPC API들을 생성하는 것이다. 이것의 장점은 사용자들이 프로세스에 의하여 사용되는 네트워크 트랜스포트와 XDR 함수에 있는 동적 메모리 관리를 직접 제어할 수 있다는 것이다. 그러나, 이는 사용자 부분에서의 더 많은 프로그래밍 노력이 필요하게 된다
이용
[편집]RPC 모델의 가장 보편적인 모델과 수행 방법에는 개방 소프트웨어 재단의 분산 컴퓨팅 환경(DCE; Distributed Computing Environment)이다. IEEE는 1991년 11월에 ISO Remote Procedure Call Specification, ISO/IEC CD 11578 N6561, ISO/IEC에서 RPC를 정의하였다. RPC는 OSI 참조 모델 안의 전달계층과 응용계층을 연결한다. RPC는 네트워크 내에 분산되어 있는 여러 프로그램들을 포함하는 응용 프로그램 개발을 쉽게 한다. 클라이언트/서버 통신을 위한 대체방안으로는 메시지 큐잉과 IBM의 APPC (선진 프로그램 간 통신) 등이 있다.
RPC는 동일하거나 다른 컴퓨터 프로세스의 함수를 호출하는 데 사용되는 프로토콜로서 소켓(socket)을 이용하여도 이러한 기능을 수행할 수 있지만, RPC는 다양한 기능을 제공하여 좀 더 유연하게 다른 컴퓨터와의 통신을 할 수 있다. RPC는 이를테면 다음과 같은 경우에 사용된다.
- 윈도 인증
- MSMQ
- 익스체인지 서버
- SMS 서버
- DCOM
- DTC
RPC는 원격 호출에 사용되는 프로토콜이지만 세부적인 네트워크 전송시는 하부 프로토콜 중 하나를 사용하도록 설계되었다.
- TCP/IP
- IPX
- Named Pipe
같이 보기
[편집]외부 링크
[편집]- RFC 1057 - Specifies version 1 of ONC RPC
- RFC 5531 - Specifies version 2 of ONC RPC
- Remote Procedure Calls (RPC) — A tutorial on ONC RPC by Dr Dave Marshall of Cardiff University
- Introduction to RPC Programming — A developer's introduction to RPC and XDR, from SGI IRIX documentation.