* 원격 프로시저 호출(RPC:Remote Procedure Call)

원 격 프로시저 호출(RPC:Remote Procedure Call)은 이종 플랫폼에 상의 분산 어플리케이션의 상호처리작용, 이동 성, 유연성을 증가시키고 클라이언트/서버 인프라스트럭처의 하나이다. RPC는 어플리케이션 개발자를 다양한 운영체제와 네트워크 인터 페이스로부터 고립시킴으로써(RPC를 사용할 때는 함수 호출이 프로그래머의 인터페이스이다) 다중 운영체제와 네트워크 프로토콜 사이 의 어플리케이션 개발의 복잡도를 감소시킨다.

원격 프로시저 호출은 흐름제어를 caller와 callee로 대체하는 클 라이언트/서버(예를 들어 쿼리-응답) 상호작용에 잘 맞는다. 개념적으로, 클라이언트와 서버는 양쪽 모두 동시에 실행되지 않는 다. 대신에, 실행 쓰레드는 caller에서 callee로 옮겨 지고 나중에 다시 본래대로 돌아간다.

원격 프로시저를 호출하는 동안 다음의 절차를 거친다.

1. 클라이언트는 client stub 프로시저를 호출하고, 보통 방법처럼 파라미터를 전달한다. client stub은 클라이언트 자신의 주소공간에 들어있다.

2. client stub은 파라미터를 메시지로 마샬링(marshalling)한다. 마샬링(marshalling)은 파라미터의 표현을 표준 포맷으로 변환하는 것을 포함하며, 각 파라미터를 메시지로 복사한다.

3. client stub은 메시지를 전송 계층으로 전달하며, 전송계층은 그것을 원격 서버에 보낸다.

4. 서버상에서, 전송 계층은 메시지를 server stub으로 넘겨주고, server stub은 파라미터를 언마샬링(unmarshalling)하고 원하는 서버 루틴을 일반적인 프로시저 호출 메커니즘을 통해 호출한다.

5. 서버 프로시저가 끝나면 server stub(일반 프로시저 호출 복귀를 통해)으로 복귀하고 server stub은 리턴 값을 메시지로 마샬링(marshalling)한다. server stub은 메시지를 전송계층으로 넘긴다.

6. 전송 계층은 결과 메시지를 클라이언트의 전송 계층으로 전송하고 클라이언트의 전송 계층은 다시 client stub으로 보낸다.

7. client stub은 결과 파라미터를 언마샬링(unmarshalling)하고 실행결과를 caller에게 넘겨준다.

** 참조 사이트

1. RPC에 관한 소개
   http://www.sei.cmu.edu/str/descriptions/rpc_body.html

2. RFC1050-RPC:Remote Procedure Call Protocol Specification Version 2 
   http://www.cse.ohio-state.edu/cgi-bin/rfc/rfc1057.html 

'UP! > Web Service' 카테고리의 다른 글

Internet Core Protocols  (0) 2008.08.21
[토론4] 웹서비스와 시맨틱 웹  (0) 2008.08.21
RMI  (0) 2008.08.21
UDP(User Datagram Protocol)  (0) 2008.08.21
SCTP  (0) 2008.08.21
Posted by 으랏차
,