2010-04-15 2 views
0

덤프에 상태와 메서드가 모두 포함되도록 메모리 개체를 덤프/저장하고 와이어를 통해 전송할 수 있습니까? 나는 주로 C#을 사용하고 있지만 이것이 다른 어떤 기술에서 할 수 있다면 좋을 것입니다.메모리 개체를 덤프하고이를 가로 채 전송하는 방법은 무엇입니까?

+0

"Serialization"을 검색하면 개체의 상태를 전송할 수 있지만 정의는 호스트에 이미 있어야합니다. – fabrizioM

+0

직렬화는 상태 만 저장하고 메서드는 저장하지 않습니다. 제 의도는 수신자가 알고있는 방법을 호출 할 수 있도록 완전한 onject를 전송하는 것입니다. 받는 사람은 그 대상에 대해 아무 것도하지 않습니다. 이 경우 직렬화가 도움이되지는 않습니다. – Kapil

+0

데이터를 직렬화 한 다음 기능이 포함 된 어셈블리로 완성 된 와이어를 통해 전송하는 방법 ;-) 이것이 실제로 요구되는 사항입니다. – dnolan

답변

1

"덤프에 메서드가 들어 있습니다"라는 말은 언어와 런타임에 많이 의존합니다.

정적으로 형식이 지정된 OO 언어에서 개체의 메서드는 해당 형식에 따라 결정되므로받는 사람에게 동일한 코드가 설치되었다고 가정하면 형식에 대한 식별자 만 보내면됩니다. 수신자는 그 유형의 빈 오브젝트를 인스턴스화하고 수신 된 데이터로 채 웁니다.

"방법 보내기"는받는 사람과 특정 어셈블리 (컴파일 된 코드)가 있는지 확인하고, 그렇지 않으면 보내기 (또는 어딘가에서 다운로드하라는 메시지를 전하는) 등의 모든 종류의 작업을 의미 할 수 있습니다. 오브젝트를 인스턴스화하기위한 데이터. 이 작업을 수행하면 대개 보안 위험이 커집니다! 따라서 거의 자동으로 발생하지 않습니다.

이것은 본질적으로 웹 서버가 비디오를 보내는 방법입니다. 필요한 플러그인이 없다면 플러그인을 다운로드 한 다음 데이터를 보내 플러그인의 인스턴스를 인스턴스화합니다.

JavaScript와 같이 매우 동적 인 언어를 사용하면 코드와 데이터 간의 구분이보다 원활 해집니다. 다음 선언은 방법으로 객체와 거의 비슷하다 :

{ 
    counter: 5, 
    increment: function() { this.counter++; } 
} 

텍스트의이 조각은 네트워크를 통해 전송 될 수 있으며, 다음 수신자가 실제 객체로를 설정하는 eval을 사용할 수

c.increment(); 
c.increment(); 

alert(c.counter); // displays 7 

다시 말하지만 근본적으로 현대 웹 페이지는 선언 된 구조 (HTML)와 실행 가능한 스크립트의 조합으로 인터넷을 통해 전송됩니다.

관련 문제