마샬링 (컴퓨터 과학): 두 판 사이의 차이

내용 삭제됨 내용 추가됨
맞춤법 수정
Feelyou (토론 | 기여)
외래어표기법에 맞춰 마샬링 -> 마셜링
1번째 줄:
{{번역 중|en:Marshalling (computer science)}}
[[컴퓨터 과학]]에서 '''마샬링마셜링'''(marshalling, l을 하나만 사용하여 marshaling이라고도 표기)이란 한 [[객체 (컴퓨터 과학)|객체]]의 메모리에서 표현방식을 저장 또는 전송에 적합한 다른 데이터 형식으로 변환하는 과정이다. 또한 이는 데이터를 컴퓨터 프로그램의 서로 다른 부분 간에 혹은 한 프로그램에서 다른 프로그램으로 이동해야 할 때도 사용된다. 마샬링은마셜링은 직렬화(serialization)와 유사하며 한 오브젝트, 여기서는 직렬화 된 오브젝트로 멀리 떨어진 오브젝트와 통신하기 위해 사용된다. 이는 복잡한 통신을 단순화 하기 위해, 기본 요소(primitives) 대신 통신을 위한 맞춤형 오브젝트를 사용한다. 마샬링의마셜링의 반대 개념으로 언마샬링언마셜링(unmarshalling)이 있다 (디마샬링디마셜링-demarshalling-이라고도 불리며, 역직렬화-deserialization-와 유사하다).
 
==용도==
마샬링은마셜링은 [[프로세스]] 간 또는 [[스레드]] 간 데이터 전송에 필요한 [[원격 프로시저 호출]](remote procedure call, RPC) 매커니즘의 구현에 사용된다. 마이크로소프트 COM([[컴포넌트 오브젝트 모델]], Component Object Model)에서 인터페이스 포인터(interface pointer)는 COM 아파트먼트 바운더리(COM apartment boundaries)를 지날 때<ref>[http://www.ecs.syr.edu/faculty/fawcett/handouts/CSE775/presentations/apartments.ppt Apartments and COM Threading Models]</ref> (즉, COM 라이브러리 인스턴스들의 경계를 지날 때)<ref>{{웹 인용|url=http://msdn.microsoft.com/en-us/library/windows/desktop/ms695279(v=vs.85).aspx|accessdate=2013-02-22|title=CoInitializeEx function (COM)|work=Windows Desktop App Development}}</ref> 마샬링마셜링 되어야만 한다. [[닷넷 프레임워크]](.NET)에서, P/Invoke 프로세스 하의 관리되지 않은 타입과 [[공통 언어 런타임|CLR]] 타입 간의 변환은 마샬링을마셜링을 요구하는 또 하나의 예이다.<ref>[http://msdn.microsoft.com/en-us/library/eaw10et3(VS.71).aspx Interop Marshaling Overview]</ref>
 
나아가 마샬링은마셜링은 [[모질라 애플리케이션 프레임워크]] 내에서 제공되는 [[:en:XPCOM|XPCOM]] 기술을 이용하는 스크립트와 응용 프로그램 내에서도 광범위하게 이용된다. 모질라 [[파이어폭스]] 브라우저는 이 프레임워크를 이용해 만들어진 인기있는 응용 프로그램이다. 이 프레임워크는 추가적으로 [[스크립트 언어]]가 교차 플랫폼 연결(XP연결)을 통해 XPCOM을 이용할 수 있게 한다.
 
==직렬화와의 비교==
"마샬링하다마셜링하다"라는 용어는 파이썬 표준 라이브러리(Python standard library)에서 "직렬화하다"는 용어와 동일하게 간주되지만,<ref>[http://docs.python.org/library/marshal.html Marshal Python module]</ref> 자바 계열 RFC 2713에서는 동일하게 간주되지 않는다.
 
오브젝트를 "마샬링한다마셜링한다"는 것은 그것의 상태와 코드베이스를 기록하는 것을 의미한다. 이것은 마샬링된마셜링된 오브젝트가 "언마샬링언마셜링" 될 때, 오브젝트의 클래스 정의를 아마도 자동적으로 로딩함으로써 원본 오브젝트의 사본을 얻는 방식으로 기록되는 방식이다. 직렬화 될 수 있거나 원격의 어떤 오브젝트라도 마샬링할마셜링할 수 있다. 마샬링은마셜링은 코드베이스를 기록한다는 점을 제외하면 직렬화와 유사하다. 마샬링이마셜링이 직렬화와 다른 점은 원격 오브젝트(remote object)를 특별하게 다룬다는 점이다. (RFC 2713)
 
여기에서 사용되는 '코드베이스'의 의미는 소스 코드를 일컫는 더 일반적인 의미의 코드베이스가 아니라, 자바에 국한되어 오브젝트 코드가 로드되는 URL의 목록을 참조하기 위한 것이라는 의미로 사용된다.