This completes our discussion of messages and proxies. After examining messages, we used a variety of message types in our custom proxy examples and message sinks. Because messages are the fundamental unit of data transfer in .NET Remoting applications, we ll use them extensively in Chapters 6, 7, and 8 of this book. Next we discussed custom proxies and their uses as a client-centric part of the .NET Remoting infrastructure. Understanding proxies is important because they generate messages and are the first layer exposed to the client code. We discussed three classes that comprise the .NET Remoting proxy layer and showed how you can create your own proxy to intercept activation and general method calls. Because proxies are the first customizable object in the .NET Remoting infrastructure, they re ideal for intercepting the activation process and controlling the dispatching of remote method calls. In Chapter 6, we ll discuss contexts in depth, after we cover message sinks.