Let me start by stating that in general, I’m fan of .Net Remoting. One of the first diversions from the basics of .Net that I started playing with in the early days of .Net was Remoting. In fact, about 2 years ago (man time flies), I wrote an article on DNJ about Working With Events Over Remoting. At the time, I read all I could get my hands on by the ultimate Remoting guru, Ingo. However, I was working on an application that required the ability to callback from a server to a number of clients on the same network, and really couldn’t find exactly what I was looking for; VB code that could RaiseEvents from Server to n-Clients. So I gathered up all the knowledge I could from Ingo, did a little additional research, and then worked out the kinks of my particular solution. Shortly afterwards, I wrote the article on DNJ in case anybody else was looking to do something similar. At the time, Remoting seemed to be all the rage for distributed computing in .Net.
Articles were being written on MSDN like this one: Performance Comparison: .NET Remoting vs. ASP.NET Web Services. Man, I was convinced that .Net Remoting via a Windows Service was the way to go. I mean it was hard to argue with pictures like these from that article:

Basically, the two colors we were looking at back then were the Yellow (Remoting via a Windows Service over TCP with Binary) versus the Pink ASMX. There were more pictures that demonstrated various payloads and the corresponding metrics. The results were similar. There were some cases where the differences were less significant, but Remoting over TCP Binary was the winner when it came to pure performance metric comparisons.
I really don’t remember too much talk at all, at the time about continuing to use ES solely for the purpose of distributed communications. There was still talk about continuing to use ES where necessary for the purpose of DTC, but not a lot of talk about it for the purpose of DCOM or COM+ stuff (partly just because of the desire to move on from some of the COM luggage.) The two players really being talked about and discussed (for distributed computing) were Remoting and Asp.Net Web Services.
The performance statistics were definitely in Remoting’s favor. Full type fidelity for true distributed object architectures was in Remoting’s favor. But what’s happened over the past few years? Most .Net projects today, which involve cross-process communications, are being specifically guided away from Remoting and towards Web Services.
I might be wrong, but I don’t think you would see this comment coming from MSDN today: “Though both the .NET Remoting infrastructure and ASP.NET Web services can implement inter-process communication, each is designed with a particular level of expertise and flexibility in mind to benefit a different target audience. If your application needs interoperability with other platforms or operating systems, you would be better off using ASP.NET Web services, as they are more flexible in that they support SOAP section 5 and Document/Literal. On the other hand, use .NET Remoting when you need the richer object-oriented programming model.” - Performance Comparison: .NET Remoting vs. ASP.NET Web Services It almost seems like we must all be writing for interoperability with other platforms and aren't looking for richer object-oriented programming models today?
Since writing the “Working With Events Over Remoting” article, I’ve gotten a number of emails thanking me for the article, and perhaps looking for some additional Remoting help. I really don’t fancy myself a Remoting expert, but have generally been able to help out with most questions. Oddly enough, I’ve noticed a strange similarity in a majority of the emails that I have gotten over the past few years; most of the email addresses end with .edu? It seems that most people that are searching for help on how to do something in regards to Remoting today (at least ones that happen to email me) come from people involved with academia, and not developers writing code for manufacturing, banking, sales, health care, state work or any of the other millions of professional business segments. Why would Remoting still be popular amongst the academic community, but not so much with the professional development community?
Maybe we got a little too aggressive with our Remoting projects? Maybe we got ourselves in trouble trying to do callbacks over various network hops and NATs that wrecked havoc with our end points? Maybe, we didn’t stick with the suggested HTTP channel over IIS, and had to implement additional custom security over TCP? Just because we could, doesn’t mean that it was the best idea. But hey, it was a shiny new car and we all wanted to take it out for a test drive. And for the most part, it’s technically been an awesome vehicle.
However, it doesn’t seem to be the vehicle of choice anymore, even for inter-process or cross-process communications that require no interoperability with other platforms. Two parts of a single .Net application are now being built with Asp.Net Web Services between them. Did we throw the baby out with the bathwater? Could we have pulled in the reins a little on our new sports car? Maybe we could have given up the super fast TCP Binary Windows Service, wide open with no security? Maybe we could have settled sooner for promoting how easy Remoting over HTTP with Binary from IIS really was to configure and use? Is it too late?
Remoting in .Net 2.0 will receive a few enhancements that should help some of the bleeding; better security, a new IPC channel for same machine communications, and some versioning tolerance (I blogged about this here) But will it ever regain the popularity it deserves? Unfortunately, I don’t think it will under the guise of “Remoting”.Maybe Indigo has something up its sleeve to help? I really don’t know enough about it yet to make any assumptions.
I know what I want; the ability to have full object type fidelity between two ends of a cross process communication with the ability to move user/security context and decent performance, all with the sex appeal of Web Services. Remoting in .Net 2.0 looks like it can bring me the technical part. Maybe Indigo can somehow bring the sex appeal? Maybe somehow we can start convincing (and proving to) the IT managers and developers of manufacturing, banking, sales, health care, state work or any of the other millions of professional business segments of the benefits of Remoting, and not let it become just an exercise in Academia.