2009-05-10 2 views
0

지난 주 한 학생이 마샬링이 캐스팅과 동일한 지 묻습니다. 내 대답은 분명히 아니오였습니다. 마샬링은 셀 룰 라이즈 (seralization)로서, objet의 메모리 표현을 바이트로 변환하여 네트워크로 전송하는 반면 캐스팅은 유형 변환/강제 변환과 관련이 있습니다.마샬링 및 캐스팅. 그들과 관련이 있습니까?

나중에 마샬링이 특별한 주조 사례로 여겨 질 수 있다고 생각했던 질문을 다시 생각해보십시오. 예를 들어, 메모리 표현의 변환은 xml로되어 있습니다. 그러면 xml 파일의 해당 xsd 문법에 정의 된 유형으로 "변환"하고 있다고 말할 수 있습니다.

이 점에 대해 어떻게 생각하십니까?

답변

2

캐스팅은 데이터 형식을 수정하지 않습니다. 그것은 큰 차이입니다. 당신이 무언가를 마샬링 할 때, 당신은 데이터를 다른 것으로 변형시키고 있습니다.

간단한 캐스트는 개체가 내부적으로 해석되는 것이 아니라 개체를 해석하는 방식 만 변경합니다.

나는 익숙하지 않은 사람들이 혼동 될 수 있다는 점을 분명히해야한다는 데 동의한다.

+0

그러나 그렇다고하더라도 이것은 주조가 일종의 마샬링 인 것을 의미합니까, 마샬링을 수행하는 데 최소한의 노력이 필요합니까? 또는 마샬링은 형식 변환이 필요하기 때문에 마샬링하지 않는 것입니다. 이는 하나의 클래스 (예 : HTML 문서 클래스)를 다른 클래스 (예 : Tree 클래스)로 바꾸는 것이 마샬링인가요? JSON에서 XML로? XML을 JSON으로 변환 하시겠습니까? 스마트 추론 알고리즘을 사용하여 텍스트를 XML 또는 JSON으로 변환 하시겠습니까? – Dmitry

0

마샬링은 일반적으로 기술 경계에 관한 것입니다 (예 : 네트워크를 통해 또는 하나의 메모리 유형에서 관리/비 관리의 경우와 같이). 일반적으로 캐스팅은 동일한 기술 경계 내에 있기 때문에 마샬링은 분명히 다른 것 .

우리가 두 가지 접근법에 동일한 용어를 사용한 경우 다른 행동을 할 때마다 다르게 정의해야한다는 것은 매우 혼란 스럽습니다.

-1

둘 다 "유형 변환"이지만 유형 변환 유형이 다릅니다. 일반적으로 관련 객체 유형 (예 : 수퍼 클래스에서 하위 클래스로의 다운 캐스팅) 사이의 캐스팅은 마샬링이 예를 들어있을 수 있습니다 객체 그래프에서 일반 텍스트 표현으로.