2010-12-16 3 views
0

내가 서버에 RemoteRamdom 클래스가 :.NET Remoting을 - 프록시 문제

SERVER :

public class RemoteRandom : MarshalByRefObject 
{ 
    Random r = new Random(); 

    public Random GetRandomObject() 
    { 
     return r; 
    } 
} 

CLIENT :

 RemoteRandom remoteRandom = (RemoteRandom)Activator.GetObject(typeof(RemoteRandom), "tcp://localhost:1000/UzakNesne"); 
     Random r = remoteRandom.GetRandomObject(); 

     while (true) 
     { 
      Console.WriteLine(r.Next()); 
     } 

문제점 : 클라이언트는 GetRandomObject 방법을 호출 할 수 있습니다 성공적으로 . 그러나 r 인스턴스의 메서드를 호출하면 로컬로 실행됩니다. 내 말은, r.Next()가 서버 응용 프로그램을 닫더라도 계속 작동한다는 것입니다.

r 서버에서 어떻게 작동합니까?

답변

0

원격 객체입니까?

코드는 기본적으로 서버에서 클래스를 실제로 참조하도록 Activator를 리디렉션하는 구성을 표시하지 않습니다. 활성화 기는 행복하게 로컬 클래스를 생성합니다.

+0

구성은 솔루션의 .config 파일을 통해 수행됩니다. 방금 세부 사항을 건너 뛰었습니다. –

0

Random 클래스가 serializable로 표시되고 MarshalByRefObject에서 상속되지 않으므로 반환 된 개체 r이 직렬화되고 다시 만들어집니다.

remoteRandom을 만드는 것과 같은 방법으로 서버에 r을 만들 수 있지만 클라이언트에서만 액세스 할 수 있습니다.