추천, 2024

에디터의 선택

RPC와 RMI의 차이점

RPC와 RMI는 클라이언트가 클라이언트와 서버 간의 통신을 설정함으로써 서버로부터 프로 시저 또는 메소드를 호출 할 수있게하는 메커니즘입니다. RPC와 RMI의 일반적인 차이점은 RMI가 객체 지향 프로그래밍을 지원하는 반면 RPC는 절차 적 프로그래밍 만 지원한다는 것입니다.

두 가지 주요 차이점은 원격 프로 시저 호출에 전달되는 매개 변수가 일반 데이터 구조 로 구성된다는 것입니다. 한편, 원격 메소드에 전달 된 매개 변수는 객체 로 구성 됩니다 .

비교 차트

비교 근거RPCRMI
지원절차 적 프로그래밍
객체 지향 프로그래밍
매개 변수일반 데이터 구조는 원격 프로 시저에 전달됩니다.객체는 원격 메소드에 전달됩니다.
능률RMI보다 낮다.RPC 이상이며 현대 프로그래밍 방식 (예 : 객체 지향 패러다임)으로 지원됩니다.
간접비
비교적 적게
인 아웃 (in-out) 매개 변수는 필수 항목입니다.꼭 그런 것은 아니다.
프로그래밍의 용이성 제공
높은
낮은

RPC의 정의

원격 프로 시저 호출 (RPC) 은 분산 프로 시저로컬 프로 시저 호출의 의미에 기반하여 고안된 프로그래밍 언어 기능입니다. 가장 일반적인 형태의 원격 서비스이며 네트워크를 통해 연결된 시스템간에 사용할 프로 시저 호출 메커니즘을 추상화하는 방법으로 설계되었습니다. 이는 운영 체제가 프로세스가 공유 데이터를 관리하고 서로 다른 프로세스가 별도의 시스템에서 실행되며 필연적으로 메시지 기반 통신이 필요한 환경을 처리 할 수있게하는 IPC 메커니즘과 유사합니다.

RPC가 주어진 단계를 통해 어떻게 구현되는지 이해합시다.

  • 클라이언트 프로세스는 매개 변수로 클라이언트 스텁을 호출하고 호출이 완료 될 때까지 실행을 일시 중단합니다.
  • 그런 다음 매개 변수는 클라이언트 스텁을 마샬링하여 기계 독립적 인 형식으로 변환됩니다. 그런 다음 매개 변수의 표현을 포함하는 메시지가 준비됩니다.
  • 사이트의 ID를 찾으려면 클라이언트 스텁이 원격 프로시 듀어가있는 이름 서 v와 상호 통신하십시오.
  • 블로킹 프로토콜을 사용하면 클라이언트 스텁은 원격 프로 시저 호출이있는 사이트로 메시지를 전송합니다. 이 단계는 응답을 얻을 때까지 클라이언트 스텁을 중지합니다.
  • 서버 사이트는 클라이언트 측에서 보낸 메시지를 받아서 컴퓨터 특정 형식으로 변환합니다.
  • 이제 서버 스텁은 매개 변수와 함께 서버 프로 시저에서 호출을 실행하며 프로 시저가 완료 될 때까지 서버 스텁이 중단됩니다.
  • 서버 프로시 저는 생성 된 결과를 서버 스텁에 리턴하며, 결과는 서버 스텁에서 기계 독립적 인 형식으로 변환되어 결과를 포함하는 메시지를 작성합니다.
  • 결과 메시지는 클라이언트 스텁에 보내지고 클라이언트 스텁에 적합한 기계 고유의 형식으로 다시 변환됩니다.
  • 마지막으로 클라이언트에서 스텁은 결과를 클라이언트 프로세스로 리턴합니다.

RMI의 정의

Remote Method Invocation (RMI) 는 RPC와 유사하지만 특정 언어 및 Java 기능입니다. 스레드는 원격 객체의 메소드를 호출 할 수 있습니다. 클라이언트 측과 서버 측의 투명도를 유지하기 위해서, 스텁 및 스켈레톤을 사용하여 원격 객체를 구현합니다. 그루터기는 클라이언트와 함께 존재 해, 리모트 오브젝트의 경우는 그 프록시로서 동작합니다.

클라이언트가 원격 메소드를 호출하면 원격 메소드의 스텁이 호출됩니다. 클라이언트 스텁은 메소드의 이름과 정렬 된 매개 변수를 포함하는 소포를 작성하고 보내는 데 책임이 있으며 스켈레톤은 소포를 수신해야합니다.

스켈레톤은 매개 변수를 언 마샬링하고 서버에서 원하는 메서드를 호출합니다. 스켈레톤은 소포로 지정된 값 (또는 예외)을 정렬하고 클라이언트 스텁으로 보냅니다. 스텁은 반환 소포를 재 조립하여 클라이언트에게 전송합니다.

Java에서 매개 변수는 메소드에 전달되고 참조 양식으로 리턴됩니다. RMI 서비스에서는 모든 객체가 원격 메소드 일 가능성이 없으므로 문제가 될 수 있습니다. 따라서 어느 것이 참조로 전달 될 수 있고 어떤 참조로 전달 될 수 없는지를 결정해야합니다.

Java는 객체가 값으로 전달되는 직렬화 라는 프로세스를 사용합니다. 원격 객체는 값으로 전달하여 지역화됩니다. 또한 원격 참조를 스텁 클래스의 URL과 함께 객체에 전달하여 객체를 참조로 전달할 수도 있습니다. 참조에 의한 전달은 원격 객체에 대한 스텁을 제한합니다.

RPC와 RMI의 주요 차이점

  1. RPC는 절차 적 프로그래밍 패러다임을 지원하므로 C 기반이며 RMI는 객체 지향 프로그래밍 패러다임을 지원하며 Java 기반입니다.
  2. RPC에서 원격 프로 시저로 전달되는 매개 변수는 일반적인 데이터 구조입니다. 반대로, RMI는 객체를 매개 변수로 원격 메소드에 전달합니다.
  3. RPC는 RMI의 이전 버전으로 간주 될 수 있으며 절차 적 프로그래밍을 지원하는 프로그래밍 언어에서 사용되며 값 방식으로만 전달할 수 있습니다. 이와 반대로, RMI 시설은 값 또는 참조를 통한 전달을 사용할 수있는 현대적인 프로그래밍 방식을 기반으로 고안되었습니다. RMI의 또 다른 장점은 참조로 전달 된 매개 변수를 변경할 수 있다는 것입니다.
  4. RPC 프로토콜은 RMI보다 많은 오버 헤드를 생성합니다.
  5. RPC에서 전달되는 매개 변수는 " in-out "이어야합니다. 즉, 프로 시저에 전달 된 값과 출력 값이 동일한 데이터 유형을 가져야합니다. 대조적으로, RMI에서 " in-out "매개 변수를 전달할 강요는 없습니다.
  6. RPC에서는 두 프로세스가 고유 한 주소 공간을 갖기 때문에 참조가 가능하지는 않지만 RMI의 경우 가능합니다.

결론

RPC와 RMI는 같은 목적으로 사용되지만 언어마다 다른 프로그래밍 패러다임을 지원하기 때문에 별개의 기능이 있습니다.

Top