title: What method is most efficient at moving objects across the wire in .NET?
body: <p>I've been using WebServices at moving data across the wire and that has served me pretty well. It excels at sending small pieces of data.  As soon as you have to move deep object trees with lots of properties, the resulting XML soup takes 100k of data and turns it into a 1MB.  </p>
  
  <p>So I've tried <a href="http://angryhacker.com/blog/archive/2007/09/08/iis-compression-and-.net-web-services.aspx">IIS Compression</a>, but it left me underwhelmed.  It compressed data well, but the trade off was in compression/decompression.  Then I've serialized the objects via BinaryFormatter and sent that across.  This was better, however, speed of encode/decode still remains.</p>
  
  <p>Anyway, I am hearing that I am stuck in the 00s and now there are better ways to send data across the wire such as ProtocolBuffers, MessagePack, etc...</p>
  
  <p>Can someone tell me whether these new protocols will be better suited for sending large pieces of data and whether I am missing some other efficient ways to do this?</p>
  
  <p>By efficient, I mean amount of bandwidth, speed of encode/decode, speed of implementation, etc...</p>