在 .NET 远程处理系统中,在客户端对远程对象调用一个方法时信道对象提供数据传输。远程服务可以支持不止一个信道,并且客户端应用程序负责选取最符合其要求的信道。如果您不在客户端配置文件中指定信道并且客户端对远程对象调用方法,则默认信道实现(HttpChannel 或 TcpChannel)中的一个将被 .NET 远程处理系统加载(如果它们中的一个支持客户端的网络协议)。但是,如果客户端预期任何回调函数或事件,则必须指定要侦听该回调函数的客户端信道。
可以两种方式注册一个信道。或者声明一个信道模板,然后在应用程序中引用该信道;或者直接在应用程序中指定所有信道信息。Machine.config 文件中的默认信道模板对于大多数应用程序而言应是足够了,并且可以通过使用 <channel> 标记的 ref 属性并指定“tcp”或“http”,从 <channels> 标记(在 <application> 标记内)引用这些模板。在使用 HttpChannel 时不需要指定 port 属性,但在使用 TcpChannel 时必须指定一个 port 属性。
如果应用程序公开服务器对象,则必须注册信道以便客户端应用程序能够与对象通信。您或者可以编程方式通过使用 ChannelServices.RegisterChannel 方法做到这一点,或者可以通过在配置文件中注册该信道来做到这一点。
如果应用程序使用对象,则您必须注册知道如何到达这些对象的信道(如果您应该侦听回调函数或事件,则该注册在所有情况中是强制执行的),除非服务对象使用在计算机配置文件中列出的默认客户端信道之一。