选择信道
.NET Framework 远程处理基础结构提供以下信道实现:
IpcChannel
IpcChannel 类使用命名管道为同一计算机上的多个进程应用程序提供高速进程间通信。一个 IpcChannel:
通过使用命名管道在发送方和接收方之间通信。
支持采用二进制格式和行业标准 SOAP 序列化格式的编码负载。
为对象引用生成和使用 ChannelDataStore。
支持模拟和委托。
支持命名管道上的访问控制列表 (ACL) 以获取高级访问控制。
在应用程序必须与在同一计算机上的不同进程中运行的其他应用程序通信时,使用 IpcChannel。因为 IpcChannel 使用命名管道,所以,应用程序通常可以获得最高的通信性能并使用模拟和委托控制对远程对象的访问。对于必须在一定负载下正常执行的三层应用程序,此功能对于第二层和第三层之间的通信特别有用。
TcpChannel
TcpChannel 类用二进制格式化程序将所有消息序列化为二进制流,并且用 TCP 协议将流传输到目标统一资源标识符 (URI)。TcpChannel 执行以下功能。
通过使用 TCP 套接字在发送方和接收方之间通信。
支持采用二进制格式和行业标准 SOAP 序列化格式的编码负载。
为对象引用生成和使用 ChannelDataStore。
支持模拟和委托。
支持 SSPI 加密。
TcpChannel 打开并缓存与当时正在向另一个服务器发出请求的线程一样多的连接。客户端上的套接字连接将在处于不活动状态 15-20 秒钟之后关闭。
如果您正在生成大量使用 .NET Framework 远程处理的应用程序,则可能容易错误地使用 HttpChannel 来连接到通过 TcpChannel 侦听的服务器应用程序域。如果您进行了该连接,客户端将收到以下异常:“基础连接已经关闭:接收时发生意外错误”。如果您的客户端收到该异常,则应检查客户端和服务器是否有不匹配的信道。
HttpChannel
HttpChannel 类使用 SOAP 协议将消息传输到远程对象或者从远程对象传输消息。所有消息都通过 SoapFormatter 来传递,消息在这里被更改为 XML 并被序列化,所需的 SOAP 头将添加到流中。如果还指定了二进制格式化程序,则会产生二进制数据流。然后,数据流会使用 HTTP 协议传输到目标 URI。HttpChannel 符合 SOAP 1.1 并执行以下功能:
将 HTTP 协议用作传输协议,在发送方和接收方之间通信。
支持采用 SOAP(一种 XML 编码标准)和二进制格式的编码负载。
将接收方设置为以 ASP.NET 并在 TCP 套接字上接收 HTTP 请求和发送 HTTP 响应。
为对象引用生成和使用 ChannelDataStore。
支持模拟和委托。
支持 SSPI 加密。
备注
要在客户端上与 Microsoft Internet Explorer 一起使用 HttpChannel,就不能在 Internet Explorer 中设置自动配置代理设置。而是必须在 Internet Explorer 中显式设置代理设置。
HttpChannel 一次仅打开到给定服务器的指定数目的连接。默认值为 2,但可以使用应用程序配置文件中的 clientConnectionLimit 属性来更改默认值。
如果您正在生成大量使用 .NET Framework 远程处理的应用程序,则可能容易错误地使用 HttpChannel 来连接到通过 TcpChannel 侦听的服务器应用程序域。如果您执行了该操作,客户端将收到以下异常:“基础连接已经关闭:接收时发生意外错误。”如果您的客户端收到该异常,则应检查客户端和服务器是否有不匹配的信道。
请参见
参考
HttpChannel
TcpChannel
IpcChannel