繁体   English   中英

如何针对数百个并发连接优化/设计WCF?

[英]How to optimize/design WCF for hundreds of concurrent connections?

我想使用WCF开发一个TCP服务器应用程序,该应用程序必须是高度可伸缩的高性能服务器,并且可以处理至少200个并发连接:从客户端通过GPRS获取原始数据。

我的数据包括:

public class  RawData
{
    public string deviceID { get; set; }
    public string timeStamp { get; set; }
    public string messageType { get; set; }
    public string driverId { get; set; }
    public string senosrs { get; set; }
    public string startStatus { get; set; }
    public string x { get; set; }
    public string y { get; set; }
    public string course { get; set; }
    public string speed { get; set; }
    public string satCount { get; set; }
    public string signal { get; set; }
    public string message { get; set; }
}

我的问题是:

  1. 我可以使用的最佳绑定是什么?
    我想通过与服务器的连接来回调客户端。

  2. 如何检查WCF数据包大小?
    我使用了本教程:http: //zamd.net/2008/08/15/calculating-wcf-message-size/我的数据包有500长! 是字节还是其他单位?

  3. WCF是否足以应付我们的情况? 我们使用gprs作为DataNetwork。

  4. 在这种情况下是否需要实施路由服务?

  5. 解决此问题的最佳编码是什么? 最佳压缩*速度。

在回答您的问题时:

  1. netTcpBinding-它是性能最高的绑定,因为它基本上是原始套接字。 它还支持双工

  2. 如果您需要一次性使用它而不是用于生产监视,请尝试配置wcf tracing 这绝对可以使用该通道记录每条消息。

  3. 均田。 200个并发传入连接(如果您的服务是无状态的非常 容易 (尽管可能需要小规模的扩展 ),但是双工 wcf充其量是复杂的,而且重要的是扩展性不佳 -您要么为所有客户端都需要一个服务实例,或者您需要一些持久的后备存储来同步客户端回调委托(尽管这可以通过cache有效地实现)。

  4. 除非您需要根据消息内容动态更改端点,在网络协议之间进行转换等,否则在这种情况下,除了作为一种负载平衡器之外,我看不到用户需要wcf-routing 而且,如果确实需要扩展,则使用实际的网络负载平衡器可能会更好。

  5. 只要通道的两端均为WCF,netTcpBinding默认就使用二进制编码。 这是WCF中最优化的绑定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM