Editor's Note: This article's code has been updated to work with the final release of the .Net framework.
The remoting infrastructure provided by the .NET runtime is a very powerful model that allows you to leverage the services of objects residing in different App Domains and host machines. The remoting model in .NET is extremely simple yet brings with it a whole myriad of rich features that allows you to fine tune the scalability and performance of your web service. It allows for communication between multiple App Domains either in the:
or different machines.
It's also the key enabler of Web Services in the .NET framework. We've seen how web services provide loosely coupled information processing islands in the Internet cloud that serve up consumers using standards like SOAP. What is important to understand is that the .NET remoting framework allows us to easily expose a .NET object to clients as a Web Service. (We will see exactly where SOAP fits into the .NET remoting stack when we talk about the message serialization formatters).
It's also worth noting that two of the three transport channels provided out-of-the box by the remoting framework carry SOAP payloads by default. It also facilitates CLR object remoting that marshals entire object references across the transport channel wire that can be unmarshalled and used at the other end by the client. What we will be examining in this article are the individual pieces that constitute the .NET remoting framework. We will take a look at the hosting options, the transport channels, the serialization formatters and the activation & lifetime management options that constitute the remoting infrastructure. Let's take a look at each of these pieces so that you can use them to your advantage to assemble web services that suit your business processing needs coupled with the best possible scalability and performance.