Question: what is the difference between message contract and datacontract?
Answer: A DataContract is a description of a type that is exposed and supported by your service. A MessageContract is an abstraction over a SOAP message that allows you to explicitly dictate the structure of the underlying message. They are meant to compliment each other and serve different purposes.