분산 객체 또는 Component를 이용해 프로그래밍을 해보셨다면, 누구나 한번쯤은 Marshaling / Un-Marshaling 이라는 것을 들어보셨을 겁니다.
Marshaling은 데이터를 바이트로 쪼개서 TCP/IP 같은 통신 채널을 통해 전송될 수 있는 형태로 바꿔주는 과정입니다. 그와 반대로 UnMarshaling은 데이터를 전송받은 후에 원래의 형태로 복원하는 것을 말합니다. 물론 모든 플랫폼이 이해할수 있는 XML 이나 공통적인 포멧 (CORBA 같은 경우 CDR – Common Data Representation)을 만들어야 됩니다.
이것을 통해 Client와 Server의 플랫폼에 이질성을 극복할수 있고, 마치 Local에 있는 객체같이 사용할수 있는 위치 투명성 (Location Transparency)을 제공 받을 수 있습니다.
그리고 이러한 기능은 분산 객체들이 다 내부적으로 자동화되어 제공하기 때문에, 대부분의 개발자들이 이 내부를 알지 못하고 IDL 컴파일러를 통해 열심히 분산 객체 프로그래밍을 하셨을 거라 예상이 됩니다.
이번 포스팅을 통해 이 내부를 파헤쳐 보는 시간을 가져보도록 하겠습니다. 막연히 Marshaling/UnMarshaling을 어떻게 구현되었는지? 또는 이러한 기능을 구현할때 어떻게 설계해야 할까? 고민하시는 분들을 위해 참으로 유용한 패턴이 있습니다.
Composite Message Pattern
This pattern focuses on organizing the communication infrastructure used by the components, so that communicating components can be added or removed with minimal changes. At the same time, the communication overhead is minimized.
논문의 원문을 CiteSeer 에서 다운 받으실수 있습니다. http://citeseer.ist.psu.edu/22360.html
.NET 3.X 의 Communication을 담당하는 WCF(Windows Communication Foundation)는 설정파일 변경만으로 프로토콜과 다른 QoS (보안, Transasction) 을 쉽게 추가할 수 있는 유연함을 가지고 있는데요.
아마 이 논문은 현재 Windows Communication Foundation의 많은 Idea와 Motivation을 주었으리라 예상이됩니다.
그리고 제가 이 논문을 기반으로 직접 만든 TP 와 동영상 강좌를 공개합니다.
SlideShare에서 아직 Powerpoint 2007 포멧을 완벽하게 지원하지 않아 약간 깨져서 나오네요. ^^
직접 다운 받으시길 권해드립니다.
TP를 보시고 공부를 해야 겠다는 생각이 드시면, 강좌를 보시길 권해드립니다.
(물론 강의는 한국어입니다. ^^)

Composite Message Pattern
[…] 이것과 유사한 패턴인 Composite Message 무료 동영상 […]
[…] 부분은 Composite Message라는 논문을 공부한후 직접 제가 동영상 강의로 찍어 놓은 것이 있으니 참고해 주시길 […]