728x90

안녕하세요.  공유민입니다. 

이번에  Java RMI를 하면서 공부했던 내용을 정리해서 올려보겠습니다.







Java RMI, Java Remote Method Invocation
(
자바 원격 함수 호출)



1. Java RMI란?



1.1 개요


RMI(Remote Method Invocation)?


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

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


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

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



RPC(Remote Procedure Call)?


1. UNIX에서 가장 많이 사용되는 통신 프로토콜.
2. 네트워크에 연결되어 있는 다른 컴퓨터에 존재하는 함수를 실행해, 분산시스템을 구현.

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



Java RMI를 쓰는가?


1. 구현하기 쉽다.

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


2. 신뢰성이 보장된다.

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

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

자바 플랫폼을 사용한다는 점입니다. 자바의 RMIJVM에서 언제든 활용하고, 사용할 수 있습니다. , 동종의 Java가 아니면 제약이 따를 수 있습니다. ( ex. sun java 와 gnu java 간의 RMI )




1.2 구조 및 과정








Server는 먼저 이름을 가지고 Registrybind를 해야합니다.




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




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















다음 포스팅에서는 샘플 코드를 보며 프로그래밍에 대해 게시하겠습니다.

'개발 > Java RMI' 카테고리의 다른 글

Java RMI, #3 Java RMI 실행하기  (0) 2017.02.22
Java RMI, #2 Java RMI 프로그래밍  (0) 2017.02.22

+ Recent posts