选择信道

本主题介绍一项传统技术,保留该技术是为了向后兼容现有的应用程序,不建议对新的开发使用该技术。现在应该使用  Windows Communication Foundation (WCF) 来开发分布式应用程序。

.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 加密。

4b3scst2.note(zh-cn,VS.100).gif注意:
若要在安装了 Microsoft Internet Explorer 的客户端上使用 HttpChannel,您不能在 Internet Explorer 中设置自动配置代理设置,而是必须在 Internet Explorer 中显式设置代理设置。

HttpChannel 一次只向给定服务器打开指定数目的连接。默认值为 2,但您可以使用应用程序配置文件中的 clientConnectionLimit 特性更改该默认值。

在生成大量使用 .NET Framework 远程处理的应用程序时,很容易错误地使用 HttpChannel 连接至用 TcpChannel 进行侦听的服务器应用程序域。如果建立了这种连接,客户端将收到以下异常:“基础连接已经关闭: 接收时发生错误”。如果您的客户端收到此异常,则应当检查客户端和服务器,以确定是否存在信道不匹配的问题。

另请参见

参考

HttpChannel
TcpChannel
IpcChannel

概念

信道