See Also: IChannel Members
Remoting boundaries can be System.Runtime.Remoting.Contexts.Contexts, AppDomains, processes, or computers. An application can cross these boundaries only by using channels. These crossings can be inbound and outbound. A channel can listen on an endpoint for inbound messages, send to an endpoint for outbound messages, or both. This provides an extensibility point in the runtime to plug in a wide range protocols, even though the runtime might not be at the other end of the channel.
Run-time objects can be used to represent a wide and rich set of semantics and entities. The channel provides the extensibility point to convert the messages to and from the specific protocols. If there are runtimes at both ends of the channel, a virtual channel is created between the two ends, in order to connect the client and server sink chains on either side of the boundary.
The client part of the channel is located at the end of a client context sink chain. The server part of the channel is located at the start of the server context sink chain. Messages are delivered to the client channel using the System.Runtime.Remoting.Messaging.IMessageSink interface, travel through the channel, and are then received by the server channel. The server channel delivers the message to the first server context sink.
Channels must expose the System.Runtime.Remoting.Channels.IChannel interface, which provides informational properties such as the IChannel.ChannelName and IChannel.ChannelPriority properties. Channels can be registered using the ChannelServices.RegisterChannel(IChannel) method.