Performance: Remoting vs. Web Services

This question comes up periodically, and Microsoft has a fairly definitive whitepaper on the topic, Performance Comparison: .NET Remoting vs. ASP.NET Web Services. The article has a number of charts with crazy legends, so let me provide a better one:


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2004/08/performance-remoting-vs-web-services.html

Remember that since Remoting uses RPC Encoding it’s not wire-compatable with anything other than another .NET Remoting client. For this reason alone, we recommend not exposing your Remoting components outside of your service, even for pure Microsoft environments. In addition to this, Remoting offers no security, little deployment and management support and as such is often challenged in an enterprise environment.

Further, if you’re looking for the fastest way to invoke methods on objects in remote processes or machines, then ES/COM+ is by far the fastest technology available today.

You’ll soon see a new whitepaper on MSDN with more up-to-date information and test suite and more relavent results and conclusions! Keep your eyes peeled. For more information, visit my blog at http://blogs.msdn.com/richturner666

I think you want to treat a data block of that size as an explicit download-- eg, write it to a file and use HTTP GET rather than a Remoting or SOAP call.

That’s what we do, anyway. And HTTP PUT as well.

I know this is now an old comment BUT I would recommend adding a compression sink to the .NET Remoting layer so that the DataSet can be zipped (or other deflaters) on the server and unzipped on the client WITHOUT either of the caller / callee doing anything with compression (let a configured sink handle is transparently).

Fine, but is there a remoting compression layer available that I don’t have to write?

Most people (us included) developed custom dataset serialization routines to get around this problem.

hello sir,

Am illayaraja studing ME CSE because please send web tech (tcp /ip ) , script language codings

regards
illayaraja.A

Ummm…
Am I the first person here to realize that HTTP uses TCP?

Not to defend deficit network bandwidth spending, but perhaps there is a good reason to send 85K row DataSets to a client, in which case small performance gains will be multiplied by the volume. It’s times like that when I most want to know which method provides the best performance.

That said, the person developing that code should definately consider other alternatives before throwing up hands and switching between web services and remoting - which is probably more work in the end, with questionable benefit.

Be careful when implementing a custom remoting compression sink. We have found that it can cause memory problems on the client.