컴퓨터 공부/번역

stub, marshalling, serialization

려리군 2009. 6. 4. 02:52

Stub
stub은 분산 컴퓨팅에서 RPC에서 전달되는 파라미터를 변환하는데 사용되는 코드의 조각이다.

RPC는 클라이언트(local computer)가 서버(remote computer)로 프로시저를 호출하도록 한다.
클라이언트와 서버는 다른 주소 공간을 사용하기 때문에 수행되어야 할 함수 호출에서 사용되는 변환이 필요하다.
다른 말로하면 각 컴퓨터는 다른 데이터를 가리키는 컴퓨터 메모리의 포인터들 때문에 (stub이 없으면)이러한 파라미터의 값은 사용될 수 없다.
stub은 파라미터의 변환을 수행하는 데 사용되며 remote 함수 호출은 서버에 대한 클라이언트 함수 호출처럼 보여진다.

스텁 라이브러리는 클라이언트와 서버쪽에 설치되어 있어야 한다. 클라이언트 스텁은 함수의 실행 후에 서버로부터 보내질 결과를 역변환(deconversion)하고 함수 호출에 사용되는 파라미터의 변환을 책임진다. 서버 스텁은 클라이언트에 의해 전달되는 파라미터를 역변환하고 함수의 실행후 결과를 변환한다.

marshalling
Structure -> Message 로 변경하는 작업을 Marshalling 이라 함.
Message -> Structure 로 변경하는 작업을 UnMarshalling 이라 함.
marshalling(직렬화와 비슷)은 객체의 메모리 표현을 저장이나 전송으로 변환하는 과정이다. 일반적으로 하나의 프로그램에서 다른 쪽으로 컴퓨터 프로그램들 사이에서 데이터가 이동할 때 사용된다.

marshalling의 반대, 혹은 거꾸로 하는 과정은 unmarshalling(또는 deserialization)이라 불린다.

사용 예시
marshalling은 쓰레드나 프로세스간에 데이터를 전송하는데 필요한 곳에 다른 RPC 메커니즘을 구현하는데 사용된다. .NET 프레임워크에서 P/Invoke 프로세스에서 CLR형태와 unmanaged 상태의 변환은 발생할 marshalling을 요구하는 행동의 예시이다.

추가적으로, marshalling은 Mozilla Application Framework에서 제공되는 XPCOM 기술을 이용함으로서 응용 프로그램과 스크립트에서 확장하여 사용된다. Mozilla Firefox 웹 브라우저는 Cross-Platform Connect(XPConnect)를 통한 XPCOM을 스크립트 언어를 추가적으로 이용하도록 하는 프레임워크로 만들어진 프로그램이다.

Serialization과 비교
용어 "marshal"은 파이썬 표준 라이브러리에서 "serialize"와 동의어로 간주되지만 Java관련 RFC 2713에서는 동의어가 아니다.

객체의 클래스 정의를 자동으로 load해서 원래 객체의 복사본을 얻는다는 것은 marshall된 객체를 unmarshell되었다는 뜻이다. unmarshalled 되었을 때 그 상태와 codebase(코드)를 기록하는 수단으로서 객체를 marshalling한다. serialization이 가능하고 remote접속이 가능한 객체는 marshalling할 수 있다. marshalling은 codebase를 기록을 marshalling하는 것을 제외하고 serialization과 비슷하다. marshalling은 remote접속이 가능한 객체를 특별하게 marshalling하는 점에서 serialization과 다르다.

객체의 상태를 byte stream으로 변환하고 byte stream을 객체의 복사본으로 역변환할 수 있다는 뜻은 객체를 "serialize"한다는 뜻이다.

Serialization

데이터 보관과 전송에서 serialization은 객체를 비트의 순서(스트림)으로 변환하는 과정으로 저장 매체(파일, 메모리 버퍼)에서 저장될 수 있거나 네트워크 접속 link를 통해 전송될 수 있다. 비트열 결과는 serialization 포멧에 따라서 다시 읽혀질 때 원래 객체와 똑같은 복사본을 의미적으로 생성하는데 사용될 수 있다. 많은 복잡한 객체에 대해 참조를 많이 사용하는 것 같은 과정은 올바른 선택이 아니다.

객체를 serialize하는 과정은 객체를 deflating이나 marshalling한다고도 불린다. 반대의 행위인 바이트열로부터 데이터 구조를 추출하는 것은 deserialization(inflating이나 unmarshalling이라고도 불린다.)이다. 

(중략...)

'컴퓨터 공부 > 번역' 카테고리의 다른 글

R-트리  (0) 2009.07.23
균형 이진 탐색 트리  (0) 2009.07.02
COM관련 공부  (0) 2009.06.04
INADDR_ANY  (0) 2009.05.25
7. XML 검증  (0) 2009.05.13