The use of DataContract attribute will make the XML elements to be alphabetically sorted. The clients will also have to send the XML messages with the elements alphabetically sorted.
If we add XmlSerializerFormat, then XML elements would not need to be alphabetically sorted but automatic JSON formatting for the message based on accept header will not work.
We can return Message (System.Messaging.Message) always but then we will lose the Objects from contract (and help pages). The automatic help pages will just show arbitrary xml as input and output.
If we return message always, we can format the outgoing message to XML/JSON/Atom etc.
We can have 2 different routes for XML/JSON. (Need to have 2 different contracts, Different URIs instead of Accept Headers).