I had previously read and heard in presentations by Rocky Lhotka that performance comparisons between Web Services and Remoting showed that they were basically the same, and that when talking about RPC protocols ES killed them both so badly (order of magnitude) that it wasn’t worth fretting over the small diff between WS and remoting.
Rocky kinda explains this position in this post:
However, I actually tracked down the white paper on Microsofts website:
Much to my suprise the giant performance improvement when using ES was only seen when calling empty functions. In otherwords, it was basically a test of the transport. Some “real world” tests showed ES performing faster than most other methods, but sometimes something like Remoting TCP Binary would outperform it as well.
In the tests that actually did something, the performance across the board was usually fairly comperable. I guess this makes sense. If you liken the round trip of an RPC call to a person going on a business trip, the speed of the airplane is less important that the time it takes the person to do the job at the end of the trip. So even if your plane takes 3 hours instead of 2 hours, if your going to be staying for a week then that 1 hour isn’t a big deal.
The major conclusion is to not pass datasets. Datasets are serialized as XML even if you are using the binary serializer. I have posted some stuff on this topic as well on my blog so you can search for it if you want.