2010-06-21 5 views
3

이 질문에 대한 명확한 대답을 찾기가 어려워서 제 자신의 구체적인 예를 들어 질문하겠습니다.RMI : 값 또는 참조로 전달 하시겠습니까?

나는 다중 플레이어 독점 게임을 만들고 있습니다. 실제 독점 코드는 서버에서 실행되며 클라이언트는 본질적으로이 코드를 액세스하고 제어하는 ​​GUI입니다. 독점 게임은 '은행'이라는 클래스에 의해 제어됩니다.

내가 내 고객의() 주에서 이런 짓을 말 :

Bank banker = server.getBank(); //gets the bank object from server 
bank.turn(); //moves the current player 

겠습니까 서버 또는 내 로컬 컴퓨터에 사본에 은행 객체에이 호출 회전()?

업데이트 : 은행은 리모컨을 구현하지 않습니다. 직렬화 가능 오브젝트입니다.

답변

7

BankRemote의 인스턴스인지 여부에 따라 달라집니다. 그렇다면 참조에 의해 전달됩니다 (모두 올바르게 설정된 경우). 그렇지 않으면 직렬화되어 값으로 전달됩니다.

편집 : 당신의 Bank 클래스 Remote 아니라, Serializable 때문에, 다음 복사하여 값에 의해 전달됩니다.

+1

또한 내 보내야합니다. –

+0

@PartlyCloudy : 예 실제로 – skaffman

+1

맞아요. 은행에서 원격으로 메소드를 호출 할 수 있도록 원격을 구현해야합니까? – seadowg

0

코딩 방법에 따라 다릅니다.

일반적으로 서버 측 객체를 나타내는 모든 클라이언트 측 객체는 단순히 서버 측 객체를 업데이트하는 원격 호출을 수행합니다. 클라이언트 측 객체는 서버 호출을 위해 사용되는 전송 프로토콜에 대한 외관 일뿐입니다.

RMI를 사용한 경우이 원칙을 따릅니다.

관련 문제