信道注册
在 .NET 远程处理系统中,在客户端对远程对象调用一个方法时信道对象提供数据传输。 远程服务可以支持不止一个信道,由客户端应用程序负责选取最符合其要求的信道。 如果未在客户端配置文件中指定信道,并且客户端对远程对象调用了一个方法,则 .NET 远程处理系统将加载默认信道实现(HttpChannel 或 TcpChannel)中支持客户端的网络协议的信道实现。 但是,如果客户端预期有任何回调函数或事件,则必须指定一个客户端信道来侦听该回调函数。
可以两种方式注册一个信道。 声明一个信道模板,然后在应用程序中引用此信道;或者直接在应用程序中指定所有信道信息。 Machine.config 文件中的默认信道模板对于大多数应用程序而言应该足够了,您可以通过使用 <channel> 标记的 ref 属性并指定“tcp”或“http”,从 <channels> 标记(在 <application> 标记内)引用这些模板。 在使用 HttpChannel 时不需要指定 port 属性,但在使用 TcpChannel 时必须指定一个端口。
如果应用程序公开服务器对象,则必须注册信道以便客户端应用程序能够与对象通信。 您可以采用编程方式通过使用 ChannelServices.RegisterChannel 方法来实现,也可以通过在配置文件中注册信道来实现。
如果应用程序使用对象,则您必须注册知道如何到达这些对象的信道(如果您应该侦听回调函数或事件,则该注册在所有情况中是强制执行的),除非服务对象使用在计算机配置文件中列出的默认客户端信道之一。
有关详细示例,请参见远程处理示例:信道接收器提供程序、<channel> 实例元素和 <channel> 模板元素。
信道接收器
通过信道接收器,开发人员可以自定义客户端和远程服务之间消息的序列化和传输。 信道接收器由接收器提供程序创建,并且客户端接收器提供程序和服务器接收器提供程序都可在配置文件中指定。 在向服务器发送消息以及从服务器向外发送消息时调用服务器信道接收器,可以在 <serverProviders> 元素内指定服务器信道接收器。 在往返于客户端之间发送消息时调用客户端接收器,并且在 <clientProviders> 元素内指定客户端接收器。
信道必须具有格式化程序接收器。 格式化程序接收器可以对消息进行序列化。 .NET Framework 包括用于二进制和 SOAP 序列化的格式化程序。
需特别注意的是,一旦指定了自定义格式化程序,.NET 远程处理系统就假定您将以所需的顺序指定所有信道。 因此,如果声明使用自定义格式化程序的自定义信道,则还必须指定要在信道接收器链中使用的其他提供程序。 将不会添加任何默认信道接收器。
请参见
任务
参考
System.Runtime.Remoting.RemotingConfiguration Class
概念
其他资源
使用配置文件注册远程对象
.NET Framework 远程处理概述
.NET Framework 远程处理概述
版权所有 (C) 2007 Microsoft Corporation。保留所有权利。