Brief Introduction Of Marshalling and Unmarshalling

Everything here is based on Dr. Clark Elliott's lecture and his hand outs. The full credit has to be given to Dr. Elliott. I am merely summarizing his lecture and his hands out here because my part on VRML Project ties with subject of marshalling in distribute computing. Once again full credit has to be give to Dr. Elliott, and I am just summarizing briefly about his lecture on marshalling.

The marshalling process of our project (VRML Meta Search Agent) is the whole process of serializing the parsed data from altavista to transfer the data and deserializing the data back to its components. Since we used marshalling process, we want to introduce briefly about the marshalling in general, such as what is it, and why we need it because we did not mention about marshalling in previous page. The detailed implementation of marshalling in our project is published separately.

According to Dr. Elliott, "Marshalling and unmarshalling is the translation of the symbolic data types of one system into the symbolic data types of another system, along with the algorithms for serializing data types for transport between two systems." (Reference 1) That is, we need to some mechanism to transfer the correct data into one system to another because the 1's and 0's in one system may not represent 1's and 0's of another system. For example, according to Dr. Elliott, "an integer represented as 32-bits in one machine does not guarantee that it will be 32-bit number on another machine." (Reference 1) Therefore, we need some way to correctly transfer the data we want because two machines do not necessary represent the data in same way.

In our case (VRML Meta Search Agent), we had to marshall the parsed data from altavista to our asp page to generate the vrml world. In our case, it was not very difficult to accomplish this because we are only transferring few strings, and some of necessary Java class were already made in the internet (at sun.java.com). Even though in our case it was not too difficult to marshall few strings, the idea of marshalling was same. We had to have the algorithm for serializing the data before transport and also deserializing the data back after transport. The serialization was done through Deric's html parser and Nong's ToString method, and the deserialization of done by SearchResult's constructor by me. The detail of our implementation is on previous page and at Deric's source code and Nong's source code.

Once again this short introduction in marshalling was based on Dr. Eliott's lecture and his hand out during DS420 on Fall of 1999, and the full credit has to be given to him.

Reference: 1)Elliott, "Problems that must be addressed by distributed systems architectures.", DS420 Hand out, Fall of 1999.

by Seunghyun