【问题标题】:Improving performance of WCF services working with real time data提高使用实时数据的 WCF 服务的性能
【发布时间】:2010-09-14 20:02:37
【问题描述】:

在我的应用程序中,我需要将实时事件的通知从服务器推送到客户端。要传递的数据量很小,主要是和Id。同时收听的客户端数量可能在 100 左右,我可能必须每 2 到 3 秒发布一个通知。服务器和客户端都是使用 .Net 和 WCF 构建的。

鉴于这些要求,我构建了一组 WCF 服务,这些服务将在负载平衡的服务器集群上运行。 Instance 上下文模式是 Per Call,不需要会话等。

我目前正在使用 BasicHttpBinding。 TCP绑定会更好吗?它在 IIS 5 或 6 上运行吗?如果不是为什么?

什么配置的序列化效果最好?

为了确保获得最佳性能,我需要做哪些事情?

编辑 - 根据部分回复添加更多信息 -

我使用手动托管在客户端进程中托管一个小型 WCF 服务。服务器只是在每个客户端上调用此服务,将数据推送给所有客户端。

【问题讨论】:

    标签: wcf performance


    【解决方案1】:

    首先,您是否考虑过使用消息传递来实现您想要实现的目标?

    回答 TCP 绑定是否会比 BasicHttpBinding 更好 - 几乎可以肯定是的。如果您想使用 TCP,则不能将 IIS-look into WAS 与 Windows Server 2008 一起使用。如果您无法使用 Windows Server 2003,那么您必须改为托管在 Windows 服务中。

    选择每次调用是一个不错的选择 - 这是创建可扩展 WCF 服务的首选实例管理模式。

    编辑:

    现在您已经更新了您的问题,如果您想坚持使用 WCF,我建议您查看 IDesign 的 Pub/Sub framework。我还会看看Pub/Sub with MSMQ in WCF 以及“香草”产品,例如Tibco RV

    【讨论】:

    • 请看编辑——我不需要双面装订。消息传递是指 MSMQ 吗?你能详细说明一下那部分吗?
    • 我已经使用 WCF 服务构建了一个小型 pub-sub 框架。我只是想优化它的性能。
    【解决方案2】:

    如果您需要将数据从服务推送到客户端,您需要会话并且需要双工绑定 - NetTcpBinding 或 WSDualHttpBinding。它不适用于 BasicHttpBinding,因为它只允许提取数据(客户端汇集服务以进行更改)。推送数据意味着服务在需要时向客户端发送数据。

    NetTcpBinding 总是创建会话。它不能托管在 IIS 6 或更早版本中。 NetTcpBinding 仅在作为 IIS 7.x 扩展的 Windows 激活服务 (WAS) 中允许。对于旧系统,您需要自托管 = Windows 服务。

    编辑:

    根据您的描述,您需要发布-订阅消息交换模式。

    【讨论】:

      猜你喜欢
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多