반응형

http://www.javastudy.co.kr/docs/getjava/rmi/1-rmi_con.htm

1. RMI 개념

1> 분산 시스템이란
RMI(Remote Method Invocation)을 이해하기 위해서는 분산시스템에 대한 기본적인 이해가 있어야 한다. 분산시스템이란 네트위크로 연결된 여러 대의 컴퓨터에 하나의 프로그램이 분산되어 실행되면서 마치 하나의 프로그램처럼 움직이는 시스템을 의미한다. 이는 실행하고자하는 프로그램 소스는 다른 컴퓨터에 있으나 이 소스를 마치 내 컴퓨터에 있는 것처럼 자유롭게 메서드를 호출 실행한다는 의미이다.
분산시스템이 가능하려면 여러 컴퓨터가 네트워크에 연결되어 있어야 한다. 이런 분산 시스템에서 널리 사용된 방식으로는 RPC (Remote Procedure Call)라는 기술이다. RPC는 네트워크에 연결되어 있는 다른 컴퓨터에 존재하는 함수를 사용자가 눈치채지 못하도록 실행해 줌으로써 분산시스템의 구현을 가능하게 했다. 그러나, RPC는 객체지향 개발개념을 구현하지는 않으며 단지 다른 컴퓨터에 저장되어 있는 순처적인 언어로 개발된 애플리케이션의 함수를 부를 수 있도록 해주는 역할을 할 따름이다. 대표적인 분산시스템으로 UNIX의 NFS (Network File System), AFS (Andrew File System), CODA 등이 있다.
자, 정리를 하자면,
  • 분산시스템이란 ?
    네트워크로 연결된 여러대의 컴퓨터에서 하나의 응용 프로그램이 여러곳에서 분산되어 실행되어 마치 하나의 프로그램이 실행되는 것처럼 보이도록하는 시스템
2> RMI(Remote Method Invocation) 란
살펴본 분산 시스템을 자바에서 지원해 주는 패키지가 rmi이다. 즉 RMI란 원격 메서드 호출로 네트워크상에서 떨어져 있는 객체의 메서드를 투명하게 호출하는 것을 말한다. 즉 네트워크로 연결된 다른 컴퓨터에 존재하는 메서드를 다른 컴퓨터에서 마치 내 컴퓨터에 있는 듯이 호출해서 사용하게끔 해주는 것이 바로 java.rmi 패키지이다.
여기서 네트워크상에 떨어져 있는 객체를 Remote객체(또는 원격객체)라 하고 이를 호출하는 것을 local 객체(또는 로컬 객체)라 한다.
RMI도 PRC와 마찬가지로 프로그래머가 소켓 통신에 대한 고려 없이 RMI관련 클래스만으로 프로그램을 작성하면 그외 모든 네트워크 관련 처리라든지 하는 여러 처리를 담당해 준다. 따라서 RMI를 이용하면 복잡한 소켓 프로그래밍 없이 네트워크 응용을 만들 수있다.
아직은 이해가 잘 안될 것이다. 당연한 것이므로 자학(?)하지 말고 다음으로 넘어가자.
3> RMI를 이용한 프로그램의 동작
그림을 보면 원격 컴퓨터에서 컴파일된 자바 소스 A가 존재한다면 로컬에서 자바 소스 B가 네트워크를 통해 A의 메서드를 호출한다. 이때 원격과 로컬 컴퓨터에는 둘다 자바가상머신이 존재해야 하며, 네트워크로 연결되어 있어야 한다.

반응형

+ Recent posts