提高 Windows Communication Foundation (WCF) 应用程序能力的方法之一是通过把它们部署到负载平衡的服务器场来扩展它们。使用标准的负载平衡技术,包括诸如 Windows 网络负载平衡这样的软件负载平衡器以及基于硬件的负载平衡设备,可以使 WCF 应用程序实现负载平衡。
以下各节讨论对使用各种系统提供的绑定生成的 WCF 应用程序实现负载平衡时的注意事项。
基本 HTTP 绑定的负载平衡
从负载平衡的角度看,使用 BasicHttpBinding 进行通信的 WCF 应用程序与其他普通类型的 HTTP 网络流量(如静态 HTML 内容、ASP.NET 页或 ASMX Web 服务)并没有什么区别。使用此绑定的 WCF 通道本质上是无状态的,当通道关闭时,其连接也会终止。因此,BasicHttpBinding 可以很好地与现有的 HTTP 负载平衡技术一起使用。
默认情况下,BasicHttpBinding 会在消息中发送一个具有 Keep-Alive 值的连接 HTTP 标头,该标头可让客户端建立到支持这些客户端的服务的持续连接。这种配置具有高的吞吐量,因为可以重新使用以前建立的连接向同一个服务器发送后续消息。然而,重新使用连接可能导致客户端与负载平衡场中的特定服务器密切关联,从而降低循环负载平衡的效率。如果不需要此行为,则可以使用 KeepAliveEnabled 属性的服务器上禁用 HTTP Keep-Alive。下面的示例演示如何使用配置来执行该操作。
WSHttp 绑定和 WSDualHttp 绑定的负载平衡
如果对默认的绑定配置进行一些修改,则 WSDualHttpBinding 都可以使用 HTTP 负载平衡技术来实现负载平衡。
- 关闭安全上下文的建立:这可以通过将 WSHttpBinding 上的 安全会话 主题中的说明,使用有状态安全会话。有状态安全会话使服务保持无状态,因为安全会话的所有状态都随每个请求作为保护安全令牌的一部分进行传输。请注意,若要启用有状态安全会话,必须使用 CustomBinding 或用户定义的 Binding,因为系统提供的 WSHttpBinding 和 WSDualHttpBinding 上并不会公开必需的配置设置。
- 不要使用可靠会话。默认情况下此功能处于关闭状态。
使 Net.TCP 绑定实现负载平衡
可以使用 IP 层负载平衡技术实现 传输配额。
若要在负载平衡方案中获得最佳性能,请考虑使用 TransportWithMessageCredential)。