Back-End/Java(자바)

Java RMI(Remote Method Invocation) 개념

FIF 2019. 7. 19. 11:10
반응형

Java RMI란?

 

RMI(Remote Method Invocation)란?

 

1. 분산되어 존재하는 객체 간의 메시지 전송(메소드를 호출하는 것 포함)을 가능하게 하는 프로토콜.

 

현대 시스템 개발은 3계층 시스템이 주류로 이루고, 이 3계층인 데이터베이스, 애플리케이션, 클라이언트 모두 객체를 통하여 구현하고 저장하는 일이 많아졌다. 그래서이렇게 분산되어 존재하는 객체간의 메시지 전송을 할 필요가 생겼고 이를 가능하게 하는것이 RMI 프로토콜이다.

 

2. RMI 자체는 분산객체 간의 통신을 구현하는 모든 프로토콜을 의미한다.(COBRA, DCOM ...)

     

RMI는 Java RMI 이전부터 쓰여지던 단어로써 분산객체 개념을 구현하는 COBRA, DCOM 등을 포함하는 의미이다.

 

 

RPC(Remote Procedure Call)란?

 

1. UNIX에서 가장 많이 사용되는 통신프로토콜 이다.

 

2. 네트워크에 연결되어 있는 다른 컴퓨터에 존재하는 함수를 실행해 분산시스템을 구현한다.

 

3. 객체지향이 아닌, 순차적인 언어로 개발된 애플리케이션의 함수만을 호출한다.

 

 

왜 Java RMI를 쓰는가?

 

1. 구현하기 쉽다.

 

보통 네트워크 프로그래밍을 하려면 보통 소켓을 많이 사용한다. 하지만 소켓으로 프로토콜을 구현하기 매우 까다롭고 힘들다. 하지만 Java RMI는 Socket 통신 자체를 하부에 숨기고, 상위 레벨에서 수행하여 분산객체 간의 데이터 전송을 메소드를 부르는 것과 같은 방법으로 구현하기 때문에 훨씬 구현하기 쉽다.

 

2. 신뢰성이 보장된다.

 

상위 레벨의 통신계층에서 수행하기 때문에 통신에 대한 신뢰성이 확보되고 또한 자바 자체에서 제공하는 라이브러리이기 때문에 그렇다.

 

3. Java 플랫폼을 사용한다.

 

자바의 RMI는 JVM에서 언제든 활용가능하다. 단, 동종의 Java가 아니면 제약이 따를 수 있다.(ex : sun의 java와 gnu java간의 RMI)

 

 

구조 및 과정

 

1. Server는 먼저 이름을 가지고 Registry에 bind해야 한다.

 

2. Client가 원격 참조를 설정하기 위해 레지스트리에서 서버 이름을 조회한다.

 

3. stub는 파라미터를 skeleton에게 직렬화하여 원격 메소드를 호출하고 결과를 다시 직렬화 하여 stub에게 돌려준다.

반응형